数字信号处理实验DFT.docx
- 文档编号:10474621
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:16
- 大小:661.15KB
数字信号处理实验DFT.docx
《数字信号处理实验DFT.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验DFT.docx(16页珍藏版)》请在冰豆网上搜索。
数字信号处理实验DFT
数字信号处理实验
(第七章DFT)
一、实验内容
利用DFT对信号(如由多个正弦信号组成的信号)进行频谱分析,并研究不同数据长度,补零,加窗等对频率分辨率的影响。
二、实验工具
MATLAB2012b软件
三、实验涉及知识
1.加窗:
通常情况下,信号都是无限长的。
而在运用计算机进行模拟时,这是无法操作的。
所以实际情况下,要把观测的信号限制在一定长的时间之内。
为了从无限长的信号中得到有限长的数据,在时域乘一个窗函数,将信号截短,叫做加窗。
2.补零:
为了增加频域抽样点数N,在不改变时域数据的情况下,在时域数据末端加一些零值点,叫做补零。
3.频率分辨率:
指对两个最近的频谱峰值能够分辨的能力。
四、实验设计思路
实验要求是利用DFT进行频谱分析,并研究不同数据长度,补零,加窗等对频率分辨率的影响。
我们利用DFT计算频谱的目的在于,针对计算机只能计算有限个离散的点的取值这一特点,实现计算机对连续时间信号的频谱的模拟。
所以我们比较关心的是模拟频谱和原信号频谱的拟合程度,我们希望拟合程度越高越好。
这就需要增加频率分辨率,因为频率分辨率越高,根据公式,说明相同采样频率下,采样的长度就越长,也就是频谱采样的点数就越多,我们可以看到的模拟频谱图像就越清晰,这样与原信号的拟合程度就越好。
根据实验要求,我将实验定为五部分,用4个m文件分别研究不同数据长度,补零,加窗,采样频率对频率分辨率的影响。
在程序设计中,出现的一个问题是,如何计算DFT后的频域函数的值。
课堂用的参考书上曾经给出一个将DFT转换为矩阵运算的方法,查阅相关参考书后,我发现在MATLAB信号处理工具箱中自带了一个dftmtx的函数,这个函数的功能是可以计算出旋转因子,计算出旋转因子后再将时域函数也转换成矩阵的形式进行DFT就可以了。
这里说明一下,由于dftmtx这个函数默认取值间隔为1,所以在没有特意设定采样频率的值得情况下,我们将采样频率默认为1。
实验设计中,为了更好的理解频率分辨率的概念,我不仅采用了绘图的形式,还直接计算了频率的分辨率,从而更直观的得到频率分辨率的具体数值。
五、实验内容:
1.不同数据长度的影响。
(1)此程序分为两部分。
一部分是设定采样长度N1,对连续时间信号进行采样,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
一部分是设定采样长度N2,对连续时间信号进行采样,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
下面给出程序代码及注解。
(2)程序代码:
N1=32;%设定数据长度
n=0:
N1-1;
k=0:
N1-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
WNnk=dftmtx(N1);%利用dftmtx计算旋转因子
Xk=xn*WNnk;%计算DFT频域值
subplot(2,2,1);
stem(n,xn);
m=(0:
N1/2-1)/N1;%设定频域采样的相关点的位置根据时域采样频率对应频域周期,周期除以频域采样点数等于频域采样频率,从而得到采样点的位置
ms=1/N1;%计算频率分辨率
subplot(2,2,2);
stem(m,abs(Xk(1:
N1/2)));
N2=128;%加长采样长度,其他同上
n1=0:
N2-1;
xn1=sin(5*2*pi*n1/fs)+cos(3*2*pi*n1/fs);
WNnk1=dftmtx(N2);
Xk1=xn1*WNnk1;
subplot(2,2,3);
stem(n1,xn1);
m1=(0:
N2/2-1)/N2;
subplot(2,2,4);
ms1=1/N1;
stem(m1,abs(Xk1(1:
N2/2)));
(3)实验结果:
图1.1为实验得到的总体图。
图1.2为采样长度为32的时域图像,图1.3为采样长度为32的对应的频域图像。
图1.4位采样长度为128的时域图像,图1.5为采样长度为128的对应的频域图像。
得到的ms=0.0312,ms1=0.0078。
图1.1
图1.2
图1.3
图1.4
图1.5
(4)结果分析:
我们可以从图中看出,采样长度越长,我们对于原信号的频谱看的越清晰,也就是说,频率分辨率越高,对原信号的拟合程度越好。
2.补零对频率分辨率的影响
(1)此程序分为两部分。
一部分是设定采样长度N1,对连续时间信号进行采样,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
一部分是对采样的信号时域图像后补若干个零,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
(2)程序代码:
N1=32;
n=0:
N1-1;
k=0:
N1-1;
fs=30;
xn=sin(5*2*pi*n/fs)+cos(3*2*pi*n/fs);
WNnk=dftmtx(N1);
Xk=xn*WNnk;
subplot(2,2,1);
stem(n,xn);
m=(0:
N1/2-1)/N1;
subplot(2,2,2);
stem(m,abs(Xk(1:
N1/2)));
N2=128;
n1=0:
N2-1;%对采样数据进行补零
xn1=[xn,zeros(1,N2-N1)];
WNnk1=dftmtx(N2);
Xk1=xn1*WNnk1;
subplot(2,2,3);
stem(n1,xn1);
subplot(2,2,4);
m1=(0:
N2/2-1)/N2;
stem(m1,abs(Xk1(1:
N2/2)));
ms=fs/N1;
ms
ms1=fs/N1;
ms1
(3)实验结果:
图2.1为实验得到的总体图。
图2.2为采样长度为32的时域图像,图2.3为采样长度为32的对应的频域图像。
图2.4为补零后的时域图像,图2.5为补零后的对应的频域图像。
得到的ms=0.0372,ms1=0.0372。
图2.1
图2.2
图2.3
图2.4
图2.5
(4)结果分析:
我们可以看到,补零后,对于频域上采样的点数增多,这使我们可以看到更多的频谱上的值,但同时也造成了一定的失真,使补零后的图像的拟合程度并不如取相同长度采样数据进行模拟的拟合程度好。
这是因为补零后,虽然我们对于频谱的采样点变多了,但由于我们只是对于时域上的数据进行补零,这些补零后的数据是没有意义的,我们并没有得到关于原信号的更多信息,所以在最后得到的频谱拟合程度并不好,还出现了失真。
产生失真的原因我推测是由于频率分辨率并没有变,所以采样为32点的频谱,两个相邻点之间的值是系统按一定规律分配的,而不是真实的数据的值,补零后对频谱采样的点得到的值也是系统分配的值,而不是真实的数据的值,所以产生失真。
3.加窗对频率分辨率的影响
(1)此程序分为两部分。
一部分是设定采样长度N1,对连续时间信号进行采样,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
一部分采用加窗的方法对时域图像进行采样,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
这里要注意的是我们采用加窗的方法时,设定信号的长度为400,然后对长度为400的信号进行截短加窗,这时只有加窗处我们是对信号采样的,即得到的信号是有效的,其余位置信号都为0,所以这时我们仍然认为采样长度为128.
(2)实验代码:
N1=128;
n=0:
N1-1;
k=0:
N1-1;
xn=sin(5*2*pi*n/20)+cos(3*2*pi*n/20);
WNnk=dftmtx(N1);
Xk=xn*WNnk;
subplot(2,2,1);
stem(n,xn);
m=(0:
N1/2-1)/N1;
subplot(2,2,2);
stem(m,abs(Xk(1:
N1/2)))
n1=1:
400;%设定信号长度为400
xn1=(sin(n1*5*2*pi/20)+cos(n1*3*2*pi/20)).*(heaviside(n1)-heaviside(n1-N1+1));%对数据进行截短加窗
WNnk=dftmtx(400);
Xk1=xn1*WNnk;
subplot(2,2,3);
stem(n1,xn1);
m=(0:
400/2-1)/400;
subplot(2,2,4);
stem(m,abs(Xk1(1:
400/2)));
(3)实验结果:
图3.1为实验得到的总体图。
图3.2为采样长度为32的时域图像,图3.3为对应的频域图像。
图2.4为加窗后的时域图像,图2.5为加窗后的对应的频域图像。
得到的ms=0.0078,ms1=0.0078。
图3.1
图3.2
图3.3
图3.4
图3.5
(5)结果分析:
由图可见,加窗后,频谱产生一定失真,即我们通常所说的频谱泄露。
这是由于在时域上对原信号乘以一个窗函数,相对应的频域上要进行原信号频域函数与窗函数频域函数的卷积,导致频谱已经发生了变化,产生失真。
4.不同采样频率对频率分辨率的影响。
(1)此程序分为两部分。
一部分是设定采样长度N1,对连续时间信号进行采样,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
一部分是设定采样间隔为2,然后利用DFT计算出采样长度N1情况下的频谱,并给出时域和频域图像。
这里矩阵因子的计算需要平方才能得到我们想要的矩阵因子的值。
(2)程序代码:
N1=256;
n=0:
N1-1;
k=0:
N1-1;
xn=sin(5*2*pi*n/60)+cos(3*2*pi*n/60);
WNnk=dftmtx(N1);
Xk=xn*WNnk;
subplot(2,2,1);
stem(n,xn);
m=(0:
N1/2-1)/N1;
subplot(2,2,2);
stem(m,abs(Xk(1:
N1/2)));
N2=256;
n1=0:
2:
N2-1;
k1=0:
2:
N2-1;
xn1=sin(5*2*pi*n1/20)+cos(3*2*pi*n1/20);
WNnk=dftmtx(N2/2)*dftmtx(N2/2);
Xk=xn1*WNnk;
subplot(2,2,3);
stem(n1,xn1);
m=(0:
2:
N2/2-1)/N2;
subplot(2,2,4);
stem(m,abs(Xk(1:
2:
N2/2)));
(3)实验结果:
图4.1为实验得到的总体图。
图4.2为采样长度为256的时域图像,图4.3为对应的频域图像。
图4.4为采样间隔为2的时域图像,图4.5为采样间隔为2的对应的频域图像。
得到的ms=0.0372,ms1=0.0372。
图4.1
图4.2
图4.3
图4.4
图4.5
(5)结果分析:
可以看到的是,改变采样间隔后,频谱已经发生了严重失真,出现这种情况的原因是,采样间隔过大,导致有一些体现信号图像规律的点我们并没有取到,我们取到的都是有相同规律的一些点,这样得到的频谱具有特殊性,并不是真正原信号的频谱。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 DFT
![提示](https://static.bdocx.com/images/bang_tan.gif)