实验三离散傅立叶变换及其应用一、实验目的:1.进一步加深DFT算法的原理和基本性质的理解;2.学习用FFT对信号进行谱分析的方法,并分析其误差及其原因;3.学习利用DFT计算程序计算IDFT的方法。二、实验原理:1.N点序列的DFT和IDFT变换定义式如下:kmNNkWkxmX10][][,kmNNmWmXNkx10][1][利用旋转因子kmNW具有周期性,可以得到快速算法(FFT)。在MATLAB中,可以用函数X=fft(x)%计算N点的DFT,N为序列x[k]的长度,即N=length(x);X=fft(x,N)%计算序列x[k]的N点DFT;x=ifft(X)%计算N点的IDFT,N为序列x[m]的长度;x=ifft(X,N)%计算序列x[m]的N点IDFT;2.impz函数是求解离散系统单位脉冲响应,并绘制其时域波形,其调用格式为:impz(b,a)3.MATLAB计算循环卷积函数的调用格式:y=circonv(x,h)4.求有限长序列的DTFT,并画出它的幅度谱,相位谱,实部和虚部。三、实验内容1.假设现含有3种频率成分,Hzf201,Hzf5.202,Hzf403,)2sin()2sin()2sin()(321tftftftx,取采样频率Hzfs100对)(tx进行等间隔采样得)(kx,对)(kx加长度为128的矩形窗进行截断得有限长序列)(1kx,对)(1kx做128点的DFT,画出原信号此时的频谱图,然后对)(1kx做512的DFT,画出原信号此时的频谱图,分析两副图的特点,总结实验中的主要结论。2.若)(kx加矩形窗的长度为512,并作512点的DFT,画出原信号的此时的频谱图,对比(1)的结果,分析其结论。程序及图形:clearallN=128;L=128;f1=20;f2=20.5;f3=40;fs=100;T=1/fs;ws=2*pi*fs;t=(0:N-1)*T;x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);X=fftshift(fft(x,L));w=(-ws/2+(0:L-1)*ws/L)/(2*pi);plot(w,abs(X));ylabel('幅度谱')-50-40-30-20-10010203040500102030405060幅度谱clearallN=128;L=512;f1=20;f2=20.5;f3=40;fs=100;T=1/fs;ws=2*pi*fs;t=(0:N-1)*T;x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);X=fftshift(fft(x,L));w=(-ws/2+(0:L-1)*ws/L)/(2*pi);plot(w,abs(X));ylabel('幅度谱')-50-40-30-20-1001020304050010203040506070幅度谱clearallN=512;L=512;f1=20;f2=20.5;f3=40;fs=100;T=1/fs;ws=2*pi*fs;t=(0:N-1)*T;x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);X=fftshift(fft(x,L));w=(-ws/2+(0:L-1)*ws/L)/(2*pi);plot(w,abs(X));ylabel('幅度谱')-50-40-30-20-1001020304050050100150200250300幅度谱实验结论及心得:通过本次实验,加深了我对DFT算法的原理和基本性质的理解,学会了利用FFT对信号进行谱分析的方法并会使用MATLAB,利用DFT计算程序计算IDFT的方法!如上图所示,通过对N值改变得出在三种情况下的DFT图,比较三幅图,原信号的幅度谱随着N值的增加会出现相应的变化!