资源描述:
《哈尔滨工程大学数字信号处理实验四.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、实验原理DFT的快速算法FFT利用了WN^(nk)的三个固有特性:(1)对称性,(WN^(nk))*=WN^(-nk),(2)周期性,WN^(nk)=WN^(n+N)k=WN^n(k+K),(3)可约性WN^(nk)=WmN^(nmk)和WN(nk)=WN/m^(nk/m)。FFT算法基本上可以分为两大类,即按时间抽选法和按频率抽选法。MATLAB中提供了进行快速傅里叶变换的fft函数,X=fft(x),基2时间抽取FFT算法,x是表示离散信号的向量;X是系数向量;X=fft(x,N),补零或截断的N点DFT,当x的长度小于N时,对x补零使其长度为N,当x的长度大于N时,对x截
2、断使其长度为N。Ifft函数计算IDFT,其调用格式与fft函数相同,参考help文件。例3.1程序及图形文件>>k=8;>>n1=[0:19];>>xa1=sin(2*pi*n1/k);>>subplot(221)>>stem(n1,xa1)>>xlabel('t/T');ylabel('x(n)');>>xk1=fft(xa1);>>xk1=abs(xk1);>>subplot(222)>>stem(n1,xk1)>>xlabel('k');ylabel('X(k)');>>n2=[0:1:15];>>xa2=sin(2*pi*n2/k);>>subplot(223)>>ste
3、m(n2,xa2)>>xlabel('t/T');ylabel('x(n)');>>xk2=fft(xa2);>>xk2=abs(xk2);>>subplot(224)>>stem(n2,xk2)>>xlabel('k');ylabel('X(k)');上两个图为N=20是的截取信号和DFT结果,由于截取了两个半周期,频谱出现泄漏;下面的两个图为N=16时的截取信号和DFT结果,由于截取了两个整周期,得到单一谱线的频谱。上述频谱的误差主要是由于时域中对信号的非整周期截断产生的频谱泄漏。二、实验内容1.已知连续周期信号x(t)=cos(10πt)+2sin(18πt)(1)确定信号的
4、基频和基本周期.(2)当信号长度取0.5Tp,1.5Tp,2Tp,时,对x(t)采样,利用FFT计算其幅度谱;对所得结果进行比较,总结应如何选取分析长度。2.设x(n)=R8(n)分别计算X(e^jw)在[0,2π]上的32点和64点等间隔采样,并绘制幅频和相频特性图。(1)计算可得x(t)的基本周期为1。(2)按fs=10fa采样,当分析长度取0.5Tp时>>k1=10;>>n1=[0:4];>>xa1=cos(10*pi*n1/k1)+2*sin(18*pi*n1/k1);>>subplot(211)>>stem(n1,xa1)>>xlabel('t/T');ylabel('x
5、(n)');>>xk1=fft(xa1);>>xk1=abs(xk1);>>subplot(212)>>stem(n1,xk1)>>xlabel('k');ylabel('X(k)');当分析长度取1.5Tp时>>k2=10;>>n2=[0:14];>>xa2=cos(10*pi*n2/k2)+2*sin(18*pi*n2/k2);>>subplot(211)>>stem(n2,xa2)>>xlabel('t/T');ylabel('x(n)');>>xk2=fft(xa2);>>xk2=abs(xk2);>>subplot(212)>>stem(n2,xk2)>>xlabel('
6、k');ylabel('X(k)');当分析长度取2Tp时>>k3=10;>>n3=[0:19];>>xa3=cos(10*pi*n3/k3)+2*sin(18*pi*n3/k3);>>subplot(211)>>stem(n3,xa3)>>xlabel('t/T');ylabel('x(n)');>>xk3=fft(xa3);>>xk3=abs(xk3);>>subplot(212)>>stem(n3,xk3)>>xlabel('k');ylabel('X(k)');结论:分析长度选取为2Tp是最合适,不发生频谱泄漏。2.x(n)=R8(n),在[0,2π]上的32点等间隔采样>
7、>nn=[0:7];>>x=ones(8,1);%产生R8(n)函数>>nn1=[0:31];%设置32个采样点>>xk=fft(x,32);%对x进行快速傅里叶变换>>nn2=2*pi/32*[0:31]';%设置R8(n)的傅里叶变换在[0,2π]对应的32个采样点>>subplot(211)>>stem(nn2,abs(xk))>>xlabel('w'),ylabel('abs');>>subplot(212)>>stem(nn2,180/pi*angle(xk