.
%%%%重构 x1=ifftshift(X); x1=ifft(x1); subplot(3,2,5); plot(t1,x1);
xlabel('时间'); %x轴 ylabel('振幅'); %y轴 %%%%误差 e=x1-f1; subplot(3,2,6); plot(t1,abs(e)); xlabel('时间'); %x轴 ylabel('振幅'); %y轴 得到结果:
结果分析:
我们发现得到的结果非常不理想,经过多次试验,我并没有找到是哪里出的问题,因此
;.
.
在接下来的实验中将要放弃这种方法。
实验2:
题目:
录一段自己的声音,对这段声音进行频谱分析。 实验分析:
这个题目和实验1类似,只不过一个用的是连续的窗口傅里叶变换,一个用的是离散的窗口傅里叶变换,所以在这里我们仍然运用matlab中的spectrogram函数即可。
在这里我们需要注意一下,mp3是双音轨的,所以数字化后是一个是一个二维数组,而我们只需要分析其中的一组即可。
于是我就录了自己的一段笑声,并抽取其中的一组数组,进行分析。 源程序: clear
[x,fs]=audioread('C:\\Users\\lenovo\\Desktop\\小波分析\\笑.mp3'); y=x(:,1)'; subplot(3,2,1); plot(y);
title('信号波形图'); %图名 xlabel('时间'); %x轴 ylabel('振幅'); %y轴 hold on
N=length(y);
Nw=600; %窗函数长 window length L=Nw/2; %窗函数每次移动的样点数,重叠宽度 %%%%%%窗口函数 subplot(3,2,2); g=hamming(Nw); j=-Nw/2; for i=1:Nw
;.
.
t(i)=j; j=j+1; end
plot(t,g,'.');
subplot(3,2,3);
[S,F,T,P] = spectrogram(y,hamming(600),580,600,1E3); surf(T,F,10*log10(P),'edgecolor','none'); axis tight view(0,90);
xlabel('Time (Seconds)'); ylabel('Hz'); subplot(3,2,4);
surf(T,F,10*log10(P),'edgecolor','none'); axis tight
xlabel('Time (Seconds)'); ylabel('Hz'); zlabel('enargy') Y=fft(y); X=fftshift(Y); %%%%重构 x1=ifftshift(X); x1=ifft(x1); subplot(3,2,5); plot(x1);
xlabel('时间'); %x轴 ylabel('振幅'); %y轴 %%%%误差 e=x1-y;
;.
.
subplot(3,2,6); plot(abs(e)); xlabel('时间'); %x轴 ylabel('振幅'); %y轴 得到结果:
结果分析:
我们可以看到得到了一个比较比较清晰地频谱图,但是它的3D图并不是太清晰。结
果不是太理想。
;.
信息工程概论-窗口傅里叶变换



