资源描述:
《傅立叶变换及matlab实现.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一.傅立叶分析基本原理1.连续傅立叶级数(CFS)一个周期为2l的函数可展开成Fourier级数如下所示:式中:2.离散傅立叶级数(DFS)数字信号处理中,经常遇到的是离散的数列,且我们只能在正的时间段内对信号进行采样,因此上述连续形式需要改写成离散形式,如下:式中:上式可改写为:式中:从上面的式子我们可以看出,离散傅立叶级数将一个数字序列转化为一系列不同频率的正弦波的合成,通过这种分解,我们可以根据实际需要,利用滤波器设计,保留我们想要的频率的波而滤除不想要的波。3.离散傅立叶变换(DFT)3.1原理:应用欧拉公式,我们可以证明,离散形式的傅立叶级数可
2、以写成如下所示的复数形式:式中,实际计算时,有:3.2离散傅立叶变换MATLAB程序仿真基于复数形式DFT算法源程序如下:functionmagc=DFT(x,N,dt)c=zeros(1,N);w=zeros(1,N);s=0;fork=0:N-1form=0:N-1s=s+x(m+1)*exp((-1i*2*pi*k*m)/N);endc(k+1)=(1/N)*s;w(k+1)=(k/(dt*N));s=0;endmagc=abs(c)*2;plot(w,magc)end>>dt=(1/500);N=500;t=(0:499)*dt;x=sin(2*
3、pi*50*t)+0.8*sin(2*pi*100*t)+0.6*sin(2*pi*200*t);magc=DFT(x,N,dt)可得仿真图如下:4.快速傅立叶变换(FFT)离散Fourier变换是计算机对信号分析的理论依据。然而,当数据采样点数很大(如N=10000),其计算量也逐渐增大,运算速度会很慢。所以,利用DFT系数的固有特性,可以对其改进,以减少计算量。4.1FFT基本原理(1)利用DFT系数的对称性和周期性,合并DFT运算中的某些项。(2)将长序列分解成短序列,从而减少其运算量。因合并与分解方法的不同产生了多种FFT算法。4.2常见的FFT
4、算法(1)基2-FFT算法:序列x(n)长度N为2的整数次方按抽取方法分为:时间抽取算法(DIT),频率抽取算法(DIF)(2)基4-FFT算法(3)混合基FFT算法:序列x(n)长度N可以分解为一些因子的乘积4.3MATLAB中主要的FFT的命令及仿真:(1)Y=fft(X,n):对一维输入信号X的前n个点进行FFT,结果以n维向量Y表示。一般情况n要取接近X长度的2的整数幂,这样有助于提高计算效率。eg:Fs=1000;T=1/Fs;L=1000;t=(0:L-1)*T;x=sin(2*pi*200*t)+sin(2*pi*450*t);subplo
5、t(2,1,1)plot(Fs*t(1:50),x(1:50))title('SignalCorruptedwithZero-MeanRandomNoise')xlabel('time(milliseconds)')NFFT=2^nextpow2(L);Y=fft(x,NFFT)/L;f=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,1,2)plot(f,2*abs(Y(1:NFFT/2+1)))title('Single-SidedAmplitudeSpectrumofy(t)')xlabel('Frequency(Hz)
6、')ylabel('
7、Y(f)
8、')(2)Y=fft2(X,m,n):对于二维输入信号X进行FFT,输出结果为其FFT的系数,以m×n维矩阵Y表示。(3)fftw('planner','method'):通过设定不同的method,在第二次调用fft命令时,可以大大缩短所使用的时间。eg:fftw('planner','estimate');tic;Y=fft(x,1000);toc;>>Elapsedtimeis0.054135seconds.tic;Y=fft(x,1000);toc;>>Elapsedtimeis0.000047seconds.(
9、4)ifft,ifft2是相应的FFT反变换命令。