matlab傅里叶正逆变换详细说明+图例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MATLAB作业方法一:N=200;dt=0.001;n=1:200;x=3*sin(2*pi*10*n*dt)+3*sin(2*pi*30*n*dt)+sin(2*pi*40*n*dt)+sin(2*pi*50*n*dt)+sin(2*pi*60*n*dt)+6*sin(2*pi*80*n*dt);%建立时间序列X=zeros(1,200);%给X一个预先的内存空间,提高运行速度figure(1),plot(n,x);%画出时间系列图像%傅里叶变换fork=1:200forn=1:200X(k)=X(k)+x(n)*exp(-i*2*pi*n*k/N);endendf=abs(X);%对傅里叶变换后的图像取正数部分figure(2),plot(f);%画出傅里叶变换后的图像%滤波H=ones(200);H(8:14)=0;H(186:193)=0;%建立40、50、60Hz的时间序列所在空间域数值为0的一维矩阵fork=1:200Y(k)=X(k)*H(k);endk=1:200;figure(3);plot(k,abs(Y));%画出滤波之后的时间序列%傅里叶逆变换y=zeros(1,200)%给y一个预先的内存空间,提高运行速度forn=1:200fork=1:200y(n)=Y(k)*exp(i*2*pi*n*k/N)+y(n);endy(n)=y(n)/N;endfigure(4);n=1:200;plot(n,y,'r-',n,x,'b-');%画出原时间序列和滤波后的时间序列,可见滤波之后的时间序列振幅明显变小方法二:N=200;dt=0.001;n=1:200;x=3*sin(2*pi*10*n*dt)+3*sin(2*pi*30*n*dt)+sin(2*pi*40*n*dt)+sin(2*pi*50*n*dt)+sin(2*pi*60*n*dt)+6*sin(2*pi*80*n*dt);X=zeros(1,200);figure(1),plot(n,x);X=fft(x,N);f=abs(X);figure(2),plot(f);H=ones(200);H(8:14)=0;H(186:194)=0;%滤波fork=1:200Y(k)=X(k)*H(k);endk=1:200;figure(3);plot(k,abs(Y));%傅里叶逆变换y=zeros(1,200);y=ifft(Y,N);figure(4);n=1:200;plot(n,y,'r-',n,x,'b-');Figure1:figure2:figure3:Figure4:

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功