信息工程概论-窗口傅里叶变换.docx_第1页
信息工程概论-窗口傅里叶变换.docx_第2页
信息工程概论-窗口傅里叶变换.docx_第3页
信息工程概论-窗口傅里叶变换.docx_第4页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息工程概论作业 窗口傅里叶变换姓名:白子轩 学号:2130602008 班级:信计311、 传统的傅里叶变换我们都知道,信号分析中最重要的两个参数是时间和频率,而我们一般所得到的信号表示形式都是的形式,而我们可以通过传统的傅里叶变换,可以把信号变为频域表示。但是,传统的傅里叶变换只对平稳的信号有用。对于非平稳的信号需要用时间和品率的联合函数来表示信号。因此,我们需要短时傅里叶变换,也就是窗口傅里叶变换。2、 窗口傅里叶变换对于信号的频率是随时间变化的信号。为了获得它的随时间变化的频谱,最采用的处理办法是加窗技术对信号截取,然后对截取的局部信号作Fourier变换。然后不断地移动窗口函数中心的位置,就可以得到信号的局部区域的瞬时频率,因此,对于连续的信号,它的窗口傅里叶变换为:窗口傅里叶逆变换为:而对于离散的信号,它的窗口傅里叶变换为:窗口傅里叶逆变换为:3、 窗口函数要进行窗口傅里叶变换,首先要要选择窗口函数,窗口函数有很多,例如高斯窗、hamming窗和Hanning窗等等。其中高斯窗函数被设计为了分析瞬态信号,Hamming和Hann窗函数被设计为了分析窄带信号,Kaiser-Bessel窗函数可用于更好地分离两个频率成分非常接近但振幅完全不同的信号。在matlab中我们也可以直接调用一些窗口函数,调用的方法如下:4、 实验实验1:题目:在这里我先做了一下书上的例子,对线性调频信号进行频谱分析。题目分析:这个例子有两种做法,第一种方法是直接调用matlab中的spectrogram函数,第二种方法是按照定义选取窗口函数,然后对每一小段的做快速傅里叶变换就可以了。方法一:源程序:cleart=0:0.001:10;t1=t;f1=sin(2*pi*2*power(t,2);subplot(2,2,1);plot(t,f1);subplot(2,2,2);g=1/6*exp(-0.5*power(t,2).*(t=-3 t=3)+0.*(t3 | t-3);t=-4:0.01:4;g1=1/6*exp(-0.5*power(t,2).*(t=-3 t=3)+0.*(t3 | t-3);plot(t,g1);subplot(2,2,3);S,F,T,P = spectrogram(f1,gausswin(600),580,600,1E3);surf(T,F,10*log10(abs(P),edgecolor,none); axis(0 10 0 50)view(0,90);xlabel(Time (Seconds);ylabel(Hz);subplot(2,2,4);surf(T,F,10*log10(abs(P)+80,edgecolor,none); axis(0 10 0 50 0 200)%axis tightxlabel(Time (Seconds);ylabel(Hz);zlabel(enargy) 得到结果:结果分析:我们用的是高斯窗口,得到了一个很好的结果,无论是2D图还是3D图,都与书上的图十分相似。但有一个十分大的缺陷,就是无法重构原来的信号,因为我们是直接调用的spectrogram函数,并不太知道里面的具体程序是什么样的,所以无法还原原信号,也无法计算误差。因此我们就需要第二种方法。方法二:源程序:cleart=0:0.001:10;t1=t;f1=sin(2*pi*2*power(t,2);subplot(3,2,1);plot(t,f1);subplot(3,2,2);g=1/6*exp(-0.5*power(t,2).*(t=-3 t=3)+0.*(t3 | t-3);t=-4:0.01:4;g1=1/6*exp(-0.5*power(t,2).*(t=-3 t=3)+0.*(t3 | t-3);plot(t,g1);N=length(f1);Nw=20; %窗函数长 window lengthL=19; %窗函数每次移动的样点数,重叠宽度Ts=round(N-Nw)/L)+1; %计算把数据x共分成多少段nfft=2ceil(log2(Nw) ; %FFT的长度TF=zeros(Ts,nfft); %将存放三维谱图,先清零%for i=1:Tsi=0;flag=0;while flag=0; i=i+1; if (i-1)*Nw+NwN %y(i-1)*L+1:i*L+L) %hamming(Nw) xw=f1(i-1)*L+1:i*L+L)*hamming(2*L); %取一段数据 temp=fft(xw,nfft); %FFT变换 temp=fftshift(abs(temp); %频谱以0频为中心 %TF(i,:); TF(i,:)=temp; %把谱图存放在TF中 else flag=1; end endsubplot(3,2,3);%mesh(abs(TF); %view(0,90);%axis tight%imagesc(TF);contour(abs(TF);xlabel(时间); ylabel(频率)subplot(3,2,4);mesh(abs(TF); %三维绘图axis tighttitle(STFT); xlabel(时间); ylabel(频率); %短时傅里叶变换X=fft(f1);X=fftshift(X);%重构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是双音轨的,所以数字化后是一个是一个二维数组,而我们只需要分析其中的一组即可。于是我就录了自己的一段笑声,并抽取其中的一组数组,进行分析。源程序:clearx,fs=audioread(C:UserslenovoDesktop小波分析笑.mp3);y=x(:,1);subplot(3,2,1);plot(y);title(信号波形图); %图名xlabel(时间); %x轴ylabel(振幅); %y轴hold on N=length(y);Nw=600; %窗函数长 window lengthL=Nw/2; %窗函数每次移动的样点数,重叠宽度%窗口函数subplot(3,2,2);g=hamming(Nw);j=-Nw/2;for i=1:Nw t(i)=j; j=j+1;endplot(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 tightview(0,90);xlabel(Time (Seconds);ylabel(Hz);subplot(3,2,4);surf(T,F,10*log10(P),edgecolor,none); axis tightxlabel(Time (Seconds);ylabel(Hz);zlabel(enargy) Y=fft(y);X=fftshift(Y);%重构x1=ifftshift(X);x1=ifft(x1);subplot(3,2,5);p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论