《数字信号处理》课程研究性学习报告
DFT近似计算信号频谱专题研讨
姓名 庄泽鑫 学号 11214058 同组成员 王敏超 11214051
指导教师 薛建 时间 2013-5-5
利用DFT近似计算信号频谱专题研讨
【目的】
(1) 掌握利用DFT近似计算不同类型信号频谱的原理和方法; (2) 理解误差产生的原因及减小误差的方法; (3)研究用DFT近似计算连续周期信号的方法;
(4) 培养学生自主学习能力,以及发现问题、分析问题和解决问题的能力。
【研讨内容】
基本题
基本题是课程的基本要求,所有的人都需完成。
问题一
已知一离散序列为
x[k]sin(0.2πk),k0,1,,31
(1)用L=32点DFT计算该序列的频谱,求出频谱中谱峰的频率;
(2)对序列进行补零,然后分别用L=、128、256、512点DFT计算该序列的频谱,求出频谱中谱峰的频率;
(3)讨论所获得的结果,给出你的结论。该结论对序列的频谱计算有何指导意义?
【题目分析】 本题讨论补零对离散序列频谱计算的影响。
【温磬提示】 在计算离散非周期序列频谱时常用/作为横坐标,称/为归一化频率normalized frequency)。在画频谱时需给出横坐标。每幅图下都需给出简要的文字说明。 由于离散非周期序列频谱是周期的,所以在计算时不需要用fftshift 函数对fft计算的结果进行重新排列。
【序列频谱计算的基本方法】 【仿真结果】 (1)
谱峰 14.5561
谱峰的频率 3 (2)
DFT点数:L= 谱峰 14.5561
谱峰的频率 6
DFT点数:L=128 谱峰 15.2671
谱峰的频率 13
DFT点数:L=256 谱峰 15.2671 谱峰的频率 26
DFT点数:L=512 谱峰 15.3563
谱峰的频率 51
【结果分析】
(1) 如图中可知,频峰频率为0.2Hz 谱峰 14.5561 谱峰的频率 3 (2) 如各图中可知,频峰频率仍为0.2Hz 谱峰 14.5561谱峰的频率 6
(3) 对该序列不断补零,我们从图中可以看出补零越多,则频谱间隔越小,频谱函数越详细,细节越多,使信号频谱的显示分辨率越大。
【自主学习内容】
利用DFT分析连续非周期信号的频谱 栏栅现象 【阅读文献】 数字信号处理
【发现问题】(专题研讨或相关知识点学习中发现的问题): 对序列补零的作用
【问题探究】
对序列补零的作用可以减小频谱分析时的谱线间隔,所以能够提高信号频谱的显示分辨率。
通过对序列补零只能提高信号频谱的显示分辨率。如果连续信号在离散化或时域加窗过程中,由于混叠或泄露等过程已经造成信号频谱中信息的失真,则无论怎么补零也无法再恢复已损失的信息。
【仿真程序】 (1) L=32; k=0:31;
x=sin(2*pi*k./10); X=fft(x);
plot(k/32,abs(X)); (2) L=0:63; k=0:31;
x=sin(2*pi*k./10); X=fft(x,);
plot(L/,abs(X)); L=0:127; k=0:31;
x=sin(2*pi*k./10); X=fft(x,128);
plot(L/128,abs(X)); L=0:255; k=0:31;
x=sin(2*pi*k./10); X=fft(x,256);
plot(L/256,abs(X)); L=0:511; k=0:31;
x=sin(2*pi*k./10); X=fft(x,512);
plot(L/512,abs(X));
问题二
某离散序列为 x[k]=Acos0k+Bcos0+)k)。用长度N=的哈明窗对信号截短后近似计算其频谱。试用不同的A和B的值(如 A和B近似相等,A和B近差距较大),确定用哈明窗能分辩的最小的谱峰间隔Δwc
【题目分析】 本题讨论用哈明窗计算序列频谱时的频率分辨率问题。
【仿真结果】
2π中c的值。 N
【结果分析】 将实验结果与教材中定义的哈明窗有效宽度相比较,发表你的看法。
【自主学习内容】
当两个相近频率幅度相差不大时,分辨效果比较好。C从2到1.8,1.6,1.4变化,可知c>1.6时能分辨开,并且c>2时较为理想
【阅读文献】
《数字信号处理》高等教育出版社 陈后金主编,薛健胡键编著
【发现问题】 (专题研讨或相关知识点学习中发现的问题):
在仿真过程中发现当c=1能分开谱峰间隔,这是错误的,这可能是由于DFT计算频谱时候产生了误差,可能是离散点的位置不同影响了连续点的取值而造成了这种结果。
【问题探究】 在离散序列频谱计算中为何要用窗函数?用不同的窗函数对计算结果有何影响?与矩形窗相比哈明窗有何特点?如何选择窗函数?
由于计算机存储空间有限,因此我们需要利用窗函数来截取,得到短的序列近似计算频谱。哈明窗旁瓣带走能量少,不同频率之间影响小,但其主瓣宽,因而影响分辨率。所以c的选取根据分辨率要求来选择。
【仿真程序】
w0=0.2*pi;
dw1=pi/32; dw2=pi/35.6; dw3=pi/40; dw4=pi/45.7; k=0:63; A=1; B=1; L=1028;
x1=(A*cos(w0*k)+B*cos((w0+dw1)*k)).*(0.-0.46*(cos(2*pi/63*k))); x2=(A*cos(w0*k)+B*cos((w0+dw2)*k)).*(0.-0.46*(cos(2*pi/63*k))); x3=(A*cos(w0*k)+B*cos((w0+dw3)*k)).*(0.-0.46*(cos(2*pi/63*k))); x4=(A*cos(w0*k)+B*cos((w0+dw4)*k)).*(0.-0.46*(cos(2*pi/63*k))); X1=fftshift(fft(x1,L)); X2=fftshift(fft(x2,L)); X3=fftshift(fft(x3,L)); X4=fftshift(fft(x4,L)); w=-pi:2*pi/L:pi-2*pi/L; subplot(2,2,1); plot(w/pi,abs(X1)); subplot(2,2,2); plot(w/pi,abs(X2)); subplot(2,2,3); plot(w/pi,abs(X3)); subplot(2,2,4); plot(w/pi,abs(X4));
问题三
已知一离散序列为 x[k]=cos(0k)+0.75cos(1k), 0 k 63 其中0=0.4, 1=0+/
(1) 对x[k]做点FFT, 画出此时信号的频谱。
(2) 如果(1)中显示的谱不能分辨两个谱峰,是否可对(1)中的点信号补零而分辨出两个谱
峰。通过编程进行证实,并解释其原因 。
(3) 给出一种能分辨出信号中两个谱峰的计算方案,并进行仿真实验。
【题目分析】 分析影响谱峰分辨率的主要因数,进一步认识补零在在频谱计算中的作用。
【仿真结果】
见【仿真程序】 【结果分析】
1、对x[k]做点DFT无法分辨谱峰,从后补零,序列的频谱不会有任何变化。 2、补零之后只能提高信号频谱的显示分辨率,由于混叠或泄露等过程已经造成信号频谱中信息的失真,补零无法恢复已经损失的信息。 【自主学习内容】
【阅读文献】
《数字信号处理》高等教育出版社 陈后金主编,薛健胡键编著
【发现问题】 (专题研讨或相关知识点学习中发现的问题):
【问题探究】 问题一、二、三讨论的是离散信号频谱的计算问题。与连续信号频谱计算问题相比较,其计算误差有何不同?
离散信号频谱如果是连续信号频谱的周期倍,可能会产生混叠。 【仿真程序】
k=0:63; L=;
w0=0.4*pi; w1=w0+pi/;
x=cos(w0*k)+0.75*cos(w1*k); x=[x zeros(1,L-length(x))]; X=fftshift(fft(x)); w=-pi:2*pi/L:pi-2*pi/L; plot(w/pi,abs(X));
k=0:63; L=128; w0=0.4*pi; w1=w0+pi/;
x=cos(w0*k)+0.75*cos(w1*k); x=[x zeros(1,L-length(x))]; X=fftshift(fft(x)); w=-pi:2*pi/L:pi-2*pi/L;
plot(w/pi,abs(X));
k=0:63; L=512; w0=0.4*pi; w1=w0+pi/;
x=cos(w0*k)+0.75*cos(w1*k); x=[x zeros(1,L-length(x))]; X=fftshift(fft(x)); w=-pi:2*pi/L:pi-2*pi/L; plot(w/pi,abs(X));
k=0:127; L=128; w0=0.4*pi;
w1=w0+pi/;
x=cos(w0*k)+0.75*cos(w1*k); x=[x zeros(1,L-length(x))]; X=fftshift(fft(x)); w=-pi:2*pi/L:pi-2*pi/L; plot(w/pi,abs(X));
问题四
试用DFT近似计算高斯信号g(t)exp(dt)的频谱抽样值。高斯信号频谱的理论值为
2π2G(j)exp()
d4d通过与理论值比较,讨论信号的时域截取长度和抽样频率对计算误差的影响。
【题目分析】
对于连续的非周期信号进行频谱计算,要先对其进行抽样变为离散信号,再对频谱在一个周期
内抽样。信号g(t)exp(dt2)在时域内无限长,为了避免频谱混叠造成的误差可以加抗混叠滤波器之后再分析。
【仿真结果】
【结果分析】
时域截取长度相同时,抽样间隔越小时误差越小,当抽样间隔一定时,时域截取长度越长,误差越小。
当Ts=1S,N=2S时,误差较大,绝对误差约为0.5
当Ts=0.5S,N=2S时,误差比间隔为1S时小,绝对误差小于等于0.2 当Ts=0.5S,N=4S时,误差更小,绝对误差小于等于0.04.
因为时域截取长度越长,保留下来的原信号中的信息越多,抽样间隔越小,频谱越不容易发生混叠,所以实验值比理论值误差小
【自主学习内容】
Matlab抽样函数的使用 【阅读文献】
信号与系统 数字信号处理 【发现问题】
Ts取值可以调整,将Ts取值减小可以探究其对误差的影响
【问题探究】
在网络上查询FFT函数的使用方法: fft(x,N):计算N点的DFT,若M>N,则将原序列截断为N点的序列,再计算其DFT,若M 【仿真程序】 Ts=input('Ts='); N=input('N='); N0=1024; k=(-N/2:(N/2))*Ts; d=pi; x=exp(-d*(k).^2); X=Ts*fftshift(fft(x,N0)); w=-pi/Ts:2*pi/N0/Ts:(pi-2*pi/N0)/Ts; XT=(pi/d)^0.5*exp(-w.^2/4/d); subplot(2,1,1) plot(w/pi,abs(X),'-o',w/pi,XT); xlabel('\\omega/\\pi'); ylabel('X(j\\omega)'); legend('实验值','理论值'); title(['Ts=',num2str(Ts) ' ' 'N=',num2str(N)]); subplot(2,1,2) plot(w/pi,abs(X)-XT) ylabel('实验误差') xlabel('\\omega/\\pi'); 电子文件提交说明: 文件名 学号+姓名+研讨题目 (每组在文件名上只需提供一个学号和姓名) 文件格式 Microsoft Word 2003 或以下版本 建议用Office 套装软件 Visio 进行绘图。 Matlab所绘图形可在Visio环境下ungroup 后进行编辑。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务