数字信号处理实验五.docx
《数字信号处理实验五.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验五.docx(12页珍藏版)》请在冰豆网上搜索。
数字信号处理实验五
实验报告
实验名称__利用DFT分析离散信号频谱
课程名称____数字信号处理___________
院系部:
专业班级:
学生姓名:
学号:
同组人:
实验台号:
指导教师:
成绩:
实验日期:
华北电力大学
一、实验目的及要求:
应用离散傅里叶变换(DFT),分析离散信号x[k]的频谱。
深刻理解DFT分析离散信号频谱的原理,掌握改善分析过程中产生的误差的方法。
二、仪器用具:
仪器名称
规格/型号
数量
备注
装有matlab的计算机
1
三、实验原理
根据信号傅里叶变换建立的时域与频域之间的对应关系,可以得到有限长序列的离散傅里叶变换(DFT)与四种确定信号傅里叶变换的之间的关系,实现由DFT分析其频谱。
四种信号的频谱函数之间的相互关系
信号的傅里叶变换建立了信号的时域与频域之间的一一对应关系,如果信号在时域存在某种联系,则在其频谱函数之间必然存在联系。
若离散非周期信号x[k]是连续非周期信号x(t)的等间隔抽样序列,则信号x[k]的频谱函数是信号x(t)的频谱函数的周期化;若离散周期信号是离散非周期信号x[k]的周期化,则信号的频谱函数是信号的频谱函数的离散化。
X=fft(x):
用于计算序列x的离散傅里叶变换(DFT)
X=fft(x,n):
对序列x补零或截短至n点的离散傅里叶变换。
当x的长度小于n时,在x的尾部补零使x的长度达到n点;
当x的长度大于n时,将x截短使x的长度成n点;
x=ifft(X)和x=ifft(X,n)是相应的离散傅里叶反变换。
fftshift(x)将fft计算输出的零频移到输出的中心位置。
利用DFT计算离散周期信号的频谱
分析步骤为:
(1)确定离散周期序列的基本周期N;
(2)利用fft函数求其一个周期的DFT,得到X[m];
(3)。
利用DFT计算离散非周期信号x[k]的频谱
分析步骤为:
(1)确定序列的长度M及窗函数的类型。
当序列为无限长时,需要根据能量分布,进行截短。
(2)确定作FFT的点数N;根据频域取样定理,
为使时域波形不产生混叠,必须取。
(3)使用fft函数作N点FFT计算X[m]。
四、实验内容
1.利用FFT分析信号
的频谱;
(1)确定DFT计算的参数;
(2)进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。
2.利用FFT分析信号
的频谱;
(1)确定DFT计算的参数;
(2)进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。
3.有限长脉冲序列
,
利用FFT分析其频谱,并绘出其幅度谱与相位谱。
4.某周期序列由3个频率组成:
,
利用FFT分析其频谱。
如何选取FFT的点数N?
此3个频率分别对应FFT计算结果X[m]中的哪些点?
若选取的N不合适,FFT计算出的
频谱X[m]会出现什么情况?
5.某离散序列,
利用FFT分析其频谱。
(1)对x[k]做64点FFT,绘出信号频谱,能分辨出其中的两个频率吗?
(2)对x[k]补零到256点后计算FFT,能分辨出其中的两个频率吗?
(3)选用非矩形窗计算FFT,能够分辨出其中的两个频率吗?
(4)若不能够很好地分辨出其中的两个频谱,应采取哪些措施?
6.已知序列
利用FFT分析下列信号的幅频特性,
频率范围为,N=500点。
(1)
(2)
(3)若将上述x[k]乘以
,重做
(1)和
(2)。
五、实验结果与数据处理:
1.N=31;k=0:
N-1;
x=cos(pi*3/8*k);
subplot(2,2,1);
stem(k,x);
X=fft(x);
subplot(2,2,2)
stem(k-N/2,abs(fftshift(X)));
subplot(2,2,3)
stem(k-N/2,angle(fftshift(X)));
2.N=20;k=0:
N;
x=(1/2).^k;
subplot(2,1,1);
stem(k,x);
subplot(2,1,2);
w=k-15;
plot(w,abs(fftshift(fft(x))));
3.k=0:
5;
x=[2,3,3,1,0,5];
X=fft(x);
subplot(2,1,1);
stem(k-3,abs(X));
subplot(2,1,2);
stem(k-3,angle(X));
4.N=32;k=0:
N-1;
x=cos(pi*7/16*k)+cos(pi*9/16*k)+cos(pi/2*k);
X=fft(x,N);
subplot(2,1,1);
stem(k-N/2,abs(fftshift(X)));
ylabel('Magnitude');xlabel('Frequency(rad)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');xlabel('Frequency(rad)');
5.
(1)N=64;k=0:
63;
x=cos(2*pi/15*k)+0.75*cos(2.3*pi/15*k);
X=fft(x,N);
subplot(2,1,1);
stem(k-N/2,abs(fftshift(X)));
ylabel('Magnitude');xlabel('Frequency(rad)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');xlabel('Frequency(rad)');
(2)N=256;k=0:
N-1;
x=cos(2*pi/15*k)+0.75*cos(2.3*pi/15*k);
X=fft(x,N);
subplot(2,1,1);
stem(k-N/2,abs(fftshift(X)));
ylabel('Magnitude');xlabel('Frequency(rad)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');xlabel('Frequency(rad)');
6.
(1)
k=-50:
50;N=500;
x=exp(-1*((0.1*k).^2)/2);
X=fft(x,N);
x=ifft(x);
y=exp(-1*(0.1*2*k).^2/2);
Y=fft(y,500);
subplot(2,1,1);
plot(abs(fftshift(Y)));
subplot(2,1,2);
plot(angle(fftshift(Y)));
(2)k=-50:
50;N=500;
x=exp(-1*((0.1*k).^2)/2);
X=fft(x,N);
x=ifft(x);
g=exp(-1*(0.1*4*k).^2/2);
G=fft(g,500);
subplot(2,1,1);
plot(abs(fftshift(G)));
subplot(2,1,2);
plot(angle(fftshift(G)));
(3)k=-50:
50;N=500;
x=exp(-1*((0.1*k).^2)/2);
X=fft(x,N);
x=ifft(x);
y=exp(-1*(0.1*2*k).^2/2).*cos((pi*2*k)./2);
Y=fft(y,500);
subplot(2,1,1);
plot(abs(fftshift(Y)));
subplot(2,1,2);
plot(angle(fftshift(Y)));
k=-50:
50;N=500;
x=exp(-1*((0.1*k).^2)/2).*cos((pi*k)./2);
X=fft(x,N);
x=ifft(X);
g=exp(-1*(0.1*4*k).^2/2).*cos((pi*4*k)./2);
G=fft(g,500);
subplot(2,1,1);
plot(abs(fftshift(G)));
subplot(2,1,2);
plot(angle(fftshift(G)));
六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见。
)
1.既然可直接由DTFT定义计算序列DTFT,为何利用DFT分析序列的频谱?
2.若序列持续时间无限长,且无解析表达式,如何利用DFT分析其频谱?
3.在利用DFT分析离散信号频谱时,会出现哪些误差?
如何克服或改善?
4.在利用DFT分析离散信号频谱时,如何选择窗函数?
5.序列补零和增加序列长度都可以提高频谱分辨率吗?
两者有何本质区别?
七、实验打印输出结果: