目录
目录 . ............................................................................................................ 1
摘要 . ............................................................................................................ 2
一. DFT的简介 ....................................................................................... 3
1.1概述................................................................................................ 3
1.2.DFT 的定义 ................................................................................. 3
1.3谱分析的原理 ............................................................................... 4
二. 用DFT 对连续信号进行谱分析 ...................................................... 4
三. 用DFT 进行谱分析的误差问题 ...................................................... 5
1. 混叠现象........................................................................................... 5
2. 栅栏效应........................................................................................... 5
3. 截断效应........................................................................................... 6
四.设计实现............................................................................................. 6
1. 设计内容 ........................................................................................ 6
2. 用Matlab 软件实现 ........................................................................ 7
五.结果分析........................................................................................... 11
六. 结束语............................................................................................. 12
七 致谢 . .................................................................................................... 13
摘要
数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体的说它也包括能量谱或功率谱,所谓信号的谱分析就是计算信号的傅里叶变换,而DFT 的实质是有限长序列傅里叶变换的有限点离散采样,从而实现了频域离散化,使数字信号处理可以在频域采样数值运算的方法进行,这样就大大提高了数字信号处理的灵活性,从而使信号的实时处理和设备的简化得以实现。利用Matlab 软件对正余弦信号进行设计程序分析并画出频谱图,所以说DFT 不仅在理论上有重要意义,而且在各种信号的处理中亦起着核心的作用,数字频谱分析可以应用在很广的领域。
关键字:Matlab 频谱分析DFT
一. DFT的简介
1.1概述
频谱是为了是信号从时域转到频域而对信号进行分析的方法,可分为幅值谱、相位谱、实频谱、虚频谱、功率谱等,他们从不同方面描述了信号的特征,从而表示出信号的频谱信息,幅值谱和功率谱反应信号各频率的能量,相位谱可以反映信号各频率分量的初始相位,实频谱和虚频谱在工程中的应用相对比较少,而功率谱和幅值谱则比较广泛,通常在对正余弦信号进行谱分析时主要是用Matlab 对其进行分析,从而使信号的实时处理和设备的简化得以实现,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为计算机分析离散信号和系统的有力工具。
1.2.DFT 的定义
设x(n)是一个长度为M 的有限长序列,则定义x(n) 的N 点离散傅里叶变换为
X(k)=DFT[x(n )]=∑x (n ) W N kn k=0,1,…,N-1 (1)
n =o N -1
X(k)的离散离散傅里叶逆变换为
x (n )=IDFT[X(k )]=1
N ∑X (k ) W
n =o N -1-kn N n=0,1,…,N-1 (2)
式中,,N 称为DFT 变换区间长度,N ≥M ,通常称(1)式和(2)式为离散傅里叶变换对。常用DFT [x (n )]和IDFT [X (k )]分别表示N 点离散傅里叶变换和N 点
n N
离散傅里叶逆变换。
1.3谱分析的原理
数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体的说它也包括能量谱或功率谱。数字频谱分析可以应用在很广泛的领域,频谱分析方法是基于以下的观测:如果连续时间信号g (t )是带限的,那么他的离散时间等效信号g (n )的DFT 进行谱分析,a
然而,在大多数情况下g (t )是在-∞
a
就定义在-∞
a
把它采样成一个离散序列g (n )。假定反混叠滤波器的设计是正确的,则混叠效应可以忽略,又假设A/D变换器的字长足够长,则A/D变换的量化噪声也可忽略。 假定表征正余弦信号的基本参数,如振幅频率和相位不随时间变化,则此信号的傅里叶变换G(e ) 可以用计算它的DTFT 得到:
∞ G(e )=∑g (n ) e -jwn
n =-∞jw jw
实际上无限长序列,g (n )首先乘以一个长度为M 的窗函数W(n),使它变成一个长为M 的有限长序列,G (n )= g (n )W(n) ,对G(n)求出的DTFTG(e ) 应该可以作为原连续模拟信号g (t )的频谱估计,然后求出G(e ) 在0≤w ≤2π
a jw jw
区间等分为N 点的离散傅里叶变换。为保证足够的分辨率DFT 的长度N 选的比窗长度M 大,其方法是截断了序列后面补上N-M 个零。
二. 用DFT 对连续信号进行谱分析
工程实际中,经常遇到连续信号x a (t ),其频谱函数X a (J Ω) 也是连续信号。
为了利用DFT 对x a (t )进行频谱分析,先对x a (t )进行时域采样,得到x (n )
=x a (nT ) , 在对x (n )进行DFT ,得到的X (k )则是x (n )的傅里叶变换X(e jw )
在频域区间[0,2π]上的N 点等间隔采样。这里x (n )和X (k )均为有限长序列。实际上对频谱很宽的信号,为防止时域采样后产生频谱混叠失真,可用预滤波器滤除幅度较小的高频成分,是连续信号的带宽小于折叠频率。对于持续时间很长的信号,采样点数太多,以致无法存储和计算,只好截取有限点进行DFT 。即x (n )→x N (n ) =g (n )W(n)。最后进行频域采样,将x N (n ) 进行DFT 得到
x N (k =DFT[x N (n ) ],将x N (k ) 作为对x a (t )的谱分析结果。由此可知,用DFT
对连续信号进行谱分析必然是近似的,其近似度与信号带宽采样频率和截取长度有关。
三. 用DFT 进行谱分析的误差问题
DFT 可以用来对连续信号和数字信号进行谱分析,但在实际分析过程中,要对连续信号采样和截断,有时非时限数据序列也要截断,因此可能引起分析的误差。
1. 混叠现象
对连续信号进行谱分析时,首先要对其采样,变成时域离散信号后才能用DFT 进行谱分析。采样速率f 必须满足采样定理,否则会在w=π附近发生频谱
s
混叠现象。这是用DFT 分析结果必然在f =
论上必须满足F s F s /2附近产生较大误差。因此,理≥2f 。对F S 确定的情况,一般在采样前进行预滤波,滤除高于c
折叠频率F s /2的频率成分,以免发生频谱混叠现象。
2. 栅栏效应
N点DFT 是在频率区间[0, 2π]上对时域离散信号的频谱进行N 点等间隔采样,而采样点之间的频谱是看不到的。这就好像从N 个栅栏缝隙中观看信号的频谱情况,仅得到N 个缝隙中看到的频谱函数值,这就是栅栏效应。由于栅栏效
应可能漏掉大的频谱分量。故对于有限长序列,可以在原序列尾部补零;对于无限长序列,可以增大截取长度及DFT 变换区间长度,从而使频域采样间隔变小,增大频域采样点数和采样点位置,使原来漏掉的某些频谱分量被检测出来。
3. 截断效应
实际中遇到的序列x (n )可能是无限长的,用DFT 对其进行谱分析师必须将其截断,形成有限长序列y (n )=x(n)w(n),长度为N 。 w(n )=R N (n ) , 称为矩形窗
函数。截断后对谱分析的影响主要表现在以下两点:
(1). 泄露:原来序列x (n )的频谱是离散谱线,经截断后,是原来的离散谱线向附近展宽,通常称这种展宽为泄露。泄露可以是频谱变模糊,使谱分辨率降低。
(2). 普间干扰:在主谱线两边形成很多旁瓣,引起不同频率分量间的干扰,特别是强信号谱的旁瓣可能湮没弱信号的主谱线,或者把强信号谱的旁瓣误认为是另一频率的信号的谱线,从而造成假信号,这样就会使谱分析产生较大偏差。 截断效应就是有以上两种影响对信号截断引起的。
四.设计实现
1. 设计内容
(1)对一个频率为10Hz ,采样频率为64Hz 的32点余弦序列进行谱分析,画出其频谱图;若将频率改为11Hz ,其他参数不变,重新画出该序列的频谱图,观察频谱泄漏现象,分析原因;
(2)考察DFT 的长度对双频率信号频谱分析的影响。设待分析的信号为 x (n ) =0. 5sin(2πf 1n ) +sin(2πf 2n ) 0≤n ≤15
令两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 34。取N 为四个不同值16,32,64,128。画出四个DFT 幅频图,分析DFT 长度对频谱分辨率的影响。
(3)在上题中若把两个正弦波的频率取得较近,令 f 1=0. 22,f 2=0. 25 ,试问怎样选择FFT 参数才能在频谱分析中分辨出这两个分量?
2. 用Matlab 软件实现
(1)当频率为10Hz 时
F=input(' 输入信号频率' ); t=0:0.001:0.2; x1=cos(2*pi*F*t);
subplot(3,1,1); plot(t,x1);
title('x1连续余弦信号' ); n=0:31;
x2=cos(2*pi*F*n*1/64);
subplot(3,1,2),stem(n,x2); xlabel('n' ),ylabel('x1(n)'); title('x2采样后的余弦信号' ); k=0:31;
X=abs(fft(x2,32)); subplot(3,1,3); stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(32),' 点FFT 幅频曲线'
]; title(strin);
当频率为11Hz 时
F=input(' 输入信号频率' ); t=0:0.001:0.2; x1=cos(2*pi*F*t);
subplot(3,1,1); plot(t,x1);
title('x1连续余弦信号' ); n=0:31;
x2=cos(2*pi*F*n*1/64);
subplot(3,1,2),stem(n,x2); xlabel('n' ),ylabel('x1(n)'); title('x2采样后的余弦信号' ); k=0:31;
X=abs(fft(x2,32)); subplot(3,1,3); stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(32),' 点FFT 幅频曲线' ]; title(strin)
(2) 当两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 34时 N1=16;N2=32;N3=64;N4=128; n=1:N-1; figure(1)
f1=0.22,f2=0.34;
x=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n); subplot(4,2,1),stem(n,x); xlabel('n' ),ylabel('x1(n)'); title(' 余弦系列' ); X=abs(fft(x,N1));
subplot(4,2,2); k=0:N1-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N1),' 点DFT 幅频曲线' ]; title(string);
X1=abs(fft(x,N1));
subplot(4,2,3),stem(n,x); xlabel('n' ),ylabel('x2(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,4); k=0:N2-1; stem(k,X); xlabel('k' ),ylabel('X(k)');
string=[num2str(N2), '点DFT 幅频曲线' ]; title(string);
X2=abs(fft(x,N2));
subplot(4,2,5),stem(n,x); xlabel('n' ),ylabel('x3(n)'); title(余弦系列' ' ); X=abs(fft(x,N2)); subplot(4,2,6); k=0:N2-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N3), '点DFT 幅频曲线' ]; title(string);
X3=abs(fft(x,N3));
subplot(4,2,7),stem(n,x); xlabel('n' ),ylabel('x4(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,8); k=0:N2-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N4), '点DFT 幅频曲线' ]; title(string);
X4=abs(fft(x,N4));
(3)当两个长度为16的正余弦序列的数字频率为f 1=0. 22及
N1=16;N2=32;N3=64;N4=128; n=1:N-1; figure(1)
f1=0.22,f2=0.25; f 2=0. 25时
x=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n); subplot(4,2,1),stem(n,x); xlabel('n' ),ylabel('x1(n)'); title(' 余弦系列' ); X=abs(fft(x,N1)); subplot(4,2,2); k=0:N1-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N1), '点DFT 幅频曲线' ]; title(string);
X1=abs(fft(x,N1));
subplot(4,2,3),stem(n,x); xlabel('n' ),ylabel('x2(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,4); k=0:N2-1; stem(k,X); xlabel('k' ),ylabel('X(k)');
string=[num2str(N2), '点DFT 幅频曲线' ]; title(string);
X2=abs(fft(x,N2));
subplot(4,2,5),stem(n,x); xlabel('n' ),ylabel('x3(n)'); title(' 余弦系列
' ); X=abs(fft(x,N2)); subplot(4,2,6); k=0:N2-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N3), '点DFT 幅频曲线' ]; title(string);
X3=abs(fft(x,N3));
subplot(4,2,7),stem(n,x); xlabel('n' ),ylabel('x4(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,8); k=0:N2-1; stem(k,X); xlabel('k' ),ylabel('X(k)');
string=[num2str(N4),] '点DFT 幅频曲线' ; title(string);
X4=abs(fft(x,N4));
五.结果分析
(1) 当频率为10Hz 时,它的DFT 只有两个不等于零,这样DFT 确实正确的
分辨了余弦信号的频率。但这样理想的结果只是恰好得到的。当把频率改成11Hz 时,其他的都不变,用同样的程序计算此预先信号的频谱,可以得到频谱上有两个较大的峰值,其他点上的幅度也不再为零。由此
可知,信号的频谱峰值确实位于两者之间,本来是单一的11Hz 频率的能量会分布到许多DFT 频率上的现象称为频率泄露。
(2) 当两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 34时可
知:当频率不变时,要提高频谱分辨率可以增加采样点数N ;如果保持采样点数N 不变时,要提高频率分辨率,就必须降低采样频率。而且随着采样点数N 的增大,频谱分辨率可提高。
(3) 当两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 25时由
图可知:当采样点数N 为32时最接近33,此时分辨率最好。因而,要增大频谱分辨率不仅与其窗函数的宽度N 有关还与两频率差有关,随着N 的增大,其频谱的分辨率增大,但当N 增大到一定程度时它的频谱分辨率反而下降。
六. 结束语 通过此次课程设计我在老师的热心帮助下完成了正余弦信号的谱分析实验。使我对数字信号处理这门课的理解得到了进一步的加深。在以往学习中,我学到的都是一些理论知识对Matlab 软件的具体使用知识会一些表面上的没有很具体的掌握,在课程设计的过程中出现了很对问题,但经过一次一次的思考和检查以及与小组的讨论终于找出来问题的所在,也暴露出了我的知识欠缺和经验不足,由此可以知道只有将理论与实践结合才可以做出自己预想的结果。在这过程中,我不止一次遇到了难以突破的瓶颈,很多次在我想要糊弄过去的时候,都是通过合作让我完整的完成了这个过程。我又再一次的充满了高涨的热情,通过网上查找资料,与同学探讨,最终完成了课程设计。
总体来说这次的课程设计很成功,达到了预想的目的:学到了知识,提高了能力,完成了任务。有点缺憾是时间有限,不能进一步深入和扩散学习和研究。希望有时间可以对程序作更进一步的改进,也让我懂得了在今后的发展和学习实践中,一定要不懈努力,不厌其烦的发现问题的所在,只有这样,才能成功的做成想做的事。
七 致谢
两周的实训结束了,感慨很多。在两周里首先感谢杨老师老师给我们很多扎实的基本知识。感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因;其次,感谢学校工程坊的实验室给我们良好的理论与实践知识,其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计中的难题。同时也感谢学院为我提供良好的做毕业设计的环境。
八 参考文献 (1)邹其洪. 《MATLAB 教程》. 电子工业出版社,2005
(2)高西全 丁玉美. 《数字信号处理》. 西安电子科技大学出版社,2001
(3)程佩青. 《数字信号处理》. 清华大学出版社,2008
(4)陈怀琛. 《MATLAB 应用与提高》. 西安电子科技大学出版社,2000
(5)徐以逃. 《数字信号处理》. 西安电子科技大学出版社,2002
目录
目录 . ............................................................................................................ 1
摘要 . ............................................................................................................ 2
一. DFT的简介 ....................................................................................... 3
1.1概述................................................................................................ 3
1.2.DFT 的定义 ................................................................................. 3
1.3谱分析的原理 ............................................................................... 4
二. 用DFT 对连续信号进行谱分析 ...................................................... 4
三. 用DFT 进行谱分析的误差问题 ...................................................... 5
1. 混叠现象........................................................................................... 5
2. 栅栏效应........................................................................................... 5
3. 截断效应........................................................................................... 6
四.设计实现............................................................................................. 6
1. 设计内容 ........................................................................................ 6
2. 用Matlab 软件实现 ........................................................................ 7
五.结果分析........................................................................................... 11
六. 结束语............................................................................................. 12
七 致谢 . .................................................................................................... 13
摘要
数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体的说它也包括能量谱或功率谱,所谓信号的谱分析就是计算信号的傅里叶变换,而DFT 的实质是有限长序列傅里叶变换的有限点离散采样,从而实现了频域离散化,使数字信号处理可以在频域采样数值运算的方法进行,这样就大大提高了数字信号处理的灵活性,从而使信号的实时处理和设备的简化得以实现。利用Matlab 软件对正余弦信号进行设计程序分析并画出频谱图,所以说DFT 不仅在理论上有重要意义,而且在各种信号的处理中亦起着核心的作用,数字频谱分析可以应用在很广的领域。
关键字:Matlab 频谱分析DFT
一. DFT的简介
1.1概述
频谱是为了是信号从时域转到频域而对信号进行分析的方法,可分为幅值谱、相位谱、实频谱、虚频谱、功率谱等,他们从不同方面描述了信号的特征,从而表示出信号的频谱信息,幅值谱和功率谱反应信号各频率的能量,相位谱可以反映信号各频率分量的初始相位,实频谱和虚频谱在工程中的应用相对比较少,而功率谱和幅值谱则比较广泛,通常在对正余弦信号进行谱分析时主要是用Matlab 对其进行分析,从而使信号的实时处理和设备的简化得以实现,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为计算机分析离散信号和系统的有力工具。
1.2.DFT 的定义
设x(n)是一个长度为M 的有限长序列,则定义x(n) 的N 点离散傅里叶变换为
X(k)=DFT[x(n )]=∑x (n ) W N kn k=0,1,…,N-1 (1)
n =o N -1
X(k)的离散离散傅里叶逆变换为
x (n )=IDFT[X(k )]=1
N ∑X (k ) W
n =o N -1-kn N n=0,1,…,N-1 (2)
式中,,N 称为DFT 变换区间长度,N ≥M ,通常称(1)式和(2)式为离散傅里叶变换对。常用DFT [x (n )]和IDFT [X (k )]分别表示N 点离散傅里叶变换和N 点
n N
离散傅里叶逆变换。
1.3谱分析的原理
数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体的说它也包括能量谱或功率谱。数字频谱分析可以应用在很广泛的领域,频谱分析方法是基于以下的观测:如果连续时间信号g (t )是带限的,那么他的离散时间等效信号g (n )的DFT 进行谱分析,a
然而,在大多数情况下g (t )是在-∞
a
就定义在-∞
a
把它采样成一个离散序列g (n )。假定反混叠滤波器的设计是正确的,则混叠效应可以忽略,又假设A/D变换器的字长足够长,则A/D变换的量化噪声也可忽略。 假定表征正余弦信号的基本参数,如振幅频率和相位不随时间变化,则此信号的傅里叶变换G(e ) 可以用计算它的DTFT 得到:
∞ G(e )=∑g (n ) e -jwn
n =-∞jw jw
实际上无限长序列,g (n )首先乘以一个长度为M 的窗函数W(n),使它变成一个长为M 的有限长序列,G (n )= g (n )W(n) ,对G(n)求出的DTFTG(e ) 应该可以作为原连续模拟信号g (t )的频谱估计,然后求出G(e ) 在0≤w ≤2π
a jw jw
区间等分为N 点的离散傅里叶变换。为保证足够的分辨率DFT 的长度N 选的比窗长度M 大,其方法是截断了序列后面补上N-M 个零。
二. 用DFT 对连续信号进行谱分析
工程实际中,经常遇到连续信号x a (t ),其频谱函数X a (J Ω) 也是连续信号。
为了利用DFT 对x a (t )进行频谱分析,先对x a (t )进行时域采样,得到x (n )
=x a (nT ) , 在对x (n )进行DFT ,得到的X (k )则是x (n )的傅里叶变换X(e jw )
在频域区间[0,2π]上的N 点等间隔采样。这里x (n )和X (k )均为有限长序列。实际上对频谱很宽的信号,为防止时域采样后产生频谱混叠失真,可用预滤波器滤除幅度较小的高频成分,是连续信号的带宽小于折叠频率。对于持续时间很长的信号,采样点数太多,以致无法存储和计算,只好截取有限点进行DFT 。即x (n )→x N (n ) =g (n )W(n)。最后进行频域采样,将x N (n ) 进行DFT 得到
x N (k =DFT[x N (n ) ],将x N (k ) 作为对x a (t )的谱分析结果。由此可知,用DFT
对连续信号进行谱分析必然是近似的,其近似度与信号带宽采样频率和截取长度有关。
三. 用DFT 进行谱分析的误差问题
DFT 可以用来对连续信号和数字信号进行谱分析,但在实际分析过程中,要对连续信号采样和截断,有时非时限数据序列也要截断,因此可能引起分析的误差。
1. 混叠现象
对连续信号进行谱分析时,首先要对其采样,变成时域离散信号后才能用DFT 进行谱分析。采样速率f 必须满足采样定理,否则会在w=π附近发生频谱
s
混叠现象。这是用DFT 分析结果必然在f =
论上必须满足F s F s /2附近产生较大误差。因此,理≥2f 。对F S 确定的情况,一般在采样前进行预滤波,滤除高于c
折叠频率F s /2的频率成分,以免发生频谱混叠现象。
2. 栅栏效应
N点DFT 是在频率区间[0, 2π]上对时域离散信号的频谱进行N 点等间隔采样,而采样点之间的频谱是看不到的。这就好像从N 个栅栏缝隙中观看信号的频谱情况,仅得到N 个缝隙中看到的频谱函数值,这就是栅栏效应。由于栅栏效
应可能漏掉大的频谱分量。故对于有限长序列,可以在原序列尾部补零;对于无限长序列,可以增大截取长度及DFT 变换区间长度,从而使频域采样间隔变小,增大频域采样点数和采样点位置,使原来漏掉的某些频谱分量被检测出来。
3. 截断效应
实际中遇到的序列x (n )可能是无限长的,用DFT 对其进行谱分析师必须将其截断,形成有限长序列y (n )=x(n)w(n),长度为N 。 w(n )=R N (n ) , 称为矩形窗
函数。截断后对谱分析的影响主要表现在以下两点:
(1). 泄露:原来序列x (n )的频谱是离散谱线,经截断后,是原来的离散谱线向附近展宽,通常称这种展宽为泄露。泄露可以是频谱变模糊,使谱分辨率降低。
(2). 普间干扰:在主谱线两边形成很多旁瓣,引起不同频率分量间的干扰,特别是强信号谱的旁瓣可能湮没弱信号的主谱线,或者把强信号谱的旁瓣误认为是另一频率的信号的谱线,从而造成假信号,这样就会使谱分析产生较大偏差。 截断效应就是有以上两种影响对信号截断引起的。
四.设计实现
1. 设计内容
(1)对一个频率为10Hz ,采样频率为64Hz 的32点余弦序列进行谱分析,画出其频谱图;若将频率改为11Hz ,其他参数不变,重新画出该序列的频谱图,观察频谱泄漏现象,分析原因;
(2)考察DFT 的长度对双频率信号频谱分析的影响。设待分析的信号为 x (n ) =0. 5sin(2πf 1n ) +sin(2πf 2n ) 0≤n ≤15
令两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 34。取N 为四个不同值16,32,64,128。画出四个DFT 幅频图,分析DFT 长度对频谱分辨率的影响。
(3)在上题中若把两个正弦波的频率取得较近,令 f 1=0. 22,f 2=0. 25 ,试问怎样选择FFT 参数才能在频谱分析中分辨出这两个分量?
2. 用Matlab 软件实现
(1)当频率为10Hz 时
F=input(' 输入信号频率' ); t=0:0.001:0.2; x1=cos(2*pi*F*t);
subplot(3,1,1); plot(t,x1);
title('x1连续余弦信号' ); n=0:31;
x2=cos(2*pi*F*n*1/64);
subplot(3,1,2),stem(n,x2); xlabel('n' ),ylabel('x1(n)'); title('x2采样后的余弦信号' ); k=0:31;
X=abs(fft(x2,32)); subplot(3,1,3); stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(32),' 点FFT 幅频曲线'
]; title(strin);
当频率为11Hz 时
F=input(' 输入信号频率' ); t=0:0.001:0.2; x1=cos(2*pi*F*t);
subplot(3,1,1); plot(t,x1);
title('x1连续余弦信号' ); n=0:31;
x2=cos(2*pi*F*n*1/64);
subplot(3,1,2),stem(n,x2); xlabel('n' ),ylabel('x1(n)'); title('x2采样后的余弦信号' ); k=0:31;
X=abs(fft(x2,32)); subplot(3,1,3); stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(32),' 点FFT 幅频曲线' ]; title(strin)
(2) 当两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 34时 N1=16;N2=32;N3=64;N4=128; n=1:N-1; figure(1)
f1=0.22,f2=0.34;
x=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n); subplot(4,2,1),stem(n,x); xlabel('n' ),ylabel('x1(n)'); title(' 余弦系列' ); X=abs(fft(x,N1));
subplot(4,2,2); k=0:N1-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N1),' 点DFT 幅频曲线' ]; title(string);
X1=abs(fft(x,N1));
subplot(4,2,3),stem(n,x); xlabel('n' ),ylabel('x2(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,4); k=0:N2-1; stem(k,X); xlabel('k' ),ylabel('X(k)');
string=[num2str(N2), '点DFT 幅频曲线' ]; title(string);
X2=abs(fft(x,N2));
subplot(4,2,5),stem(n,x); xlabel('n' ),ylabel('x3(n)'); title(余弦系列' ' ); X=abs(fft(x,N2)); subplot(4,2,6); k=0:N2-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N3), '点DFT 幅频曲线' ]; title(string);
X3=abs(fft(x,N3));
subplot(4,2,7),stem(n,x); xlabel('n' ),ylabel('x4(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,8); k=0:N2-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N4), '点DFT 幅频曲线' ]; title(string);
X4=abs(fft(x,N4));
(3)当两个长度为16的正余弦序列的数字频率为f 1=0. 22及
N1=16;N2=32;N3=64;N4=128; n=1:N-1; figure(1)
f1=0.22,f2=0.25; f 2=0. 25时
x=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n); subplot(4,2,1),stem(n,x); xlabel('n' ),ylabel('x1(n)'); title(' 余弦系列' ); X=abs(fft(x,N1)); subplot(4,2,2); k=0:N1-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N1), '点DFT 幅频曲线' ]; title(string);
X1=abs(fft(x,N1));
subplot(4,2,3),stem(n,x); xlabel('n' ),ylabel('x2(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,4); k=0:N2-1; stem(k,X); xlabel('k' ),ylabel('X(k)');
string=[num2str(N2), '点DFT 幅频曲线' ]; title(string);
X2=abs(fft(x,N2));
subplot(4,2,5),stem(n,x); xlabel('n' ),ylabel('x3(n)'); title(' 余弦系列
' ); X=abs(fft(x,N2)); subplot(4,2,6); k=0:N2-1; stem(k,X);
xlabel('k' ),ylabel('X(k)');
string=[num2str(N3), '点DFT 幅频曲线' ]; title(string);
X3=abs(fft(x,N3));
subplot(4,2,7),stem(n,x); xlabel('n' ),ylabel('x4(n)'); title(' 余弦系列' ); X=abs(fft(x,N2)); subplot(4,2,8); k=0:N2-1; stem(k,X); xlabel('k' ),ylabel('X(k)');
string=[num2str(N4),] '点DFT 幅频曲线' ; title(string);
X4=abs(fft(x,N4));
五.结果分析
(1) 当频率为10Hz 时,它的DFT 只有两个不等于零,这样DFT 确实正确的
分辨了余弦信号的频率。但这样理想的结果只是恰好得到的。当把频率改成11Hz 时,其他的都不变,用同样的程序计算此预先信号的频谱,可以得到频谱上有两个较大的峰值,其他点上的幅度也不再为零。由此
可知,信号的频谱峰值确实位于两者之间,本来是单一的11Hz 频率的能量会分布到许多DFT 频率上的现象称为频率泄露。
(2) 当两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 34时可
知:当频率不变时,要提高频谱分辨率可以增加采样点数N ;如果保持采样点数N 不变时,要提高频率分辨率,就必须降低采样频率。而且随着采样点数N 的增大,频谱分辨率可提高。
(3) 当两个长度为16的正余弦序列的数字频率为f 1=0. 22及f 2=0. 25时由
图可知:当采样点数N 为32时最接近33,此时分辨率最好。因而,要增大频谱分辨率不仅与其窗函数的宽度N 有关还与两频率差有关,随着N 的增大,其频谱的分辨率增大,但当N 增大到一定程度时它的频谱分辨率反而下降。
六. 结束语 通过此次课程设计我在老师的热心帮助下完成了正余弦信号的谱分析实验。使我对数字信号处理这门课的理解得到了进一步的加深。在以往学习中,我学到的都是一些理论知识对Matlab 软件的具体使用知识会一些表面上的没有很具体的掌握,在课程设计的过程中出现了很对问题,但经过一次一次的思考和检查以及与小组的讨论终于找出来问题的所在,也暴露出了我的知识欠缺和经验不足,由此可以知道只有将理论与实践结合才可以做出自己预想的结果。在这过程中,我不止一次遇到了难以突破的瓶颈,很多次在我想要糊弄过去的时候,都是通过合作让我完整的完成了这个过程。我又再一次的充满了高涨的热情,通过网上查找资料,与同学探讨,最终完成了课程设计。
总体来说这次的课程设计很成功,达到了预想的目的:学到了知识,提高了能力,完成了任务。有点缺憾是时间有限,不能进一步深入和扩散学习和研究。希望有时间可以对程序作更进一步的改进,也让我懂得了在今后的发展和学习实践中,一定要不懈努力,不厌其烦的发现问题的所在,只有这样,才能成功的做成想做的事。
七 致谢
两周的实训结束了,感慨很多。在两周里首先感谢杨老师老师给我们很多扎实的基本知识。感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因;其次,感谢学校工程坊的实验室给我们良好的理论与实践知识,其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计中的难题。同时也感谢学院为我提供良好的做毕业设计的环境。
八 参考文献 (1)邹其洪. 《MATLAB 教程》. 电子工业出版社,2005
(2)高西全 丁玉美. 《数字信号处理》. 西安电子科技大学出版社,2001
(3)程佩青. 《数字信号处理》. 清华大学出版社,2008
(4)陈怀琛. 《MATLAB 应用与提高》. 西安电子科技大学出版社,2000
(5)徐以逃. 《数字信号处理》. 西安电子科技大学出版社,2002