资源描述:
《实验三dft和fft频谱分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验三DFT和FFT频谱分析一、实验目的1.掌握DFT频谱分析的原理与编程方法。2.理解FFT算法的编程思想。2.熟练掌握利用FFT对信号作频谱分析,包括正确地进行参数选择、画频谱及读频谱图。3.利用FFT频谱分析进行快速卷积和太阳黑子周期性检测。二、实验环境1.Windowsxp以上操作系统2.安装MATLAB2007a软件三、实验原理1.离散傅里叶变换(DFT)设序列为x(n),长度为N,则X(ejωk)=DFT[x(n)]=x(n)e-jωkn,其中ωk=(k=0,1,2,…,M-1),通常M>N,以便观察
2、频谱的细节。
3、X(ejωk)
4、----x(n)的幅频谱。2.谱分析参数选择1)设信号x(t)最高频率为fc,对其进行取样得x(n),根据取样定理,取样频率fs必须满足:fs>=2fc。2)设谱分辨率为F,则最小记录时间tpmin=1/F;取样点数N≥2fc/F;为使用快速傅里叶变换(FFT)进行谱分析,N还须满足:N=2E(E为整数)。3.用FFT计算信号x(n)的频谱。[设x(n)为实信号]快速傅里叶变换(FFT)是DFT的一种快速算法,其使得DFT的运算速度大为加快。1)对信号x(n)作N点FFT,得频谱X(
5、k)(k=0~N-1)X(k)=XR(k)+jXI(k)(k=0~N/2-1),XR(k)—X(k)的实部;XI(k)—X(k)的虚部。Matlab语句:Y=fft(x,N)其中:x----x(n);Y----X(k)2)幅频谱:
6、X(k)
7、=,由于x(n)为实信号,因此
8、X(k)
9、对称,Matlab语句:abs(Y)iii)功率谱:PSD(k)=
10、X(k)
11、2/N=X(k)X*(k)/NMatlab语句:PSD=Y.*conj(Y)/N其中:conj(Y)--X*(k)[X(k)的共轭]4.读频谱图频谱图中任意
12、频率点k对应实际频率为:fk=fs/N*k。5.用FFT实现线性卷积运算用FFT实现y(n)=x(n)*h(n)的步骤为:1)设x(n)及h(n)的长度分别为N1和N2。为使循环卷积等于线性卷积,用补0的方法使x(n),h(n)长度均为N,则N须满足N≥N1+N2-1;为用FFT计算DFT,则N还须满足N=2E(E为整数)。2)用FFT计算X(k),H(k)(N点)。3)Y(k)=ifft;y(n)=ifft[Y(K)]。四、实验内容1.根据公式设计DFT原理程序,并计算:x(n)=[1,1,1,1]的4,16,
13、64点DFT并绘图。%DFT/IDFT程序DFT.mclcclearxn=input('x(n)=');%输入序列x(n)=[1111]M=length(xn);%x(n)的长度MN=input('变换区间N=');%变换区间Nxn=[xnzeros(1,N-M)];%补0,使xn长度为Nn=0:N-1;k=0:N-1;nk=n'*k;wn=exp(-j*2*pi/N);%旋转因子wnwnK=wn.^nk;xk=xn*wnK%作x(n)的DFT=xksubplot(211);stem(k,abs(xk),'.')
14、;gridon;%显示xk的幅频谱(离散曲线)subplot(212);plot(k,abs(xk));gridon;%显示xk的幅频谱(连续曲线)运行结果:问:由此得出怎样的结论?答:n越大越接近原来的dft2.理解DIT-FFT算法原理程序,并用它计算X(k)=FFT[R4(n)],分别取N=4,8,16和64,绘出幅频谱
15、X(k)
16、。%程序DIT.mclearclcx=input('x=');%输入序列N=input('N=');%做fft的点数x(length(x)+1:N)=zeros(1,N-leng
17、th(x));%补0x(1:N)l=log2(N);x1=zeros(1,N);forj1=1:N%倒序x1(j1)=x(bin2dec(fliplr(dec2bin(j1-1,l)))+1);end%%FFT(DIT)%%M=2;while(M<=N)W=exp(-2*j*pi/M);%旋转因子WV=1;fork=0:1:M/2-1%k为每级蝶形运算旋转因子的个数fori=0:M:N-1%i为各群的首序号p=k+i;q=p+M/2;A=x1(p+1);B=x1(q+1)*V;x1(p+1)=A+B;%本级蝶形运
18、算,x1最终存放X(k)x1(q+1)=A-B;endV=V*W;%旋转因子W的变化endM=2*M;%第M级end%%%%%%subplot(211);stem(x,'.');gridon;%画图title('x(n)');%标题subplot(212);stem(abs(x1),'.');gridon;%画图title('
19、X(k)
20、');%标题3.FFT谱分析设信号