数字信号处理课程设计正余弦信号的谱分析.docx
《数字信号处理课程设计正余弦信号的谱分析.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计正余弦信号的谱分析.docx(15页珍藏版)》请在冰豆网上搜索。
数字信号处理课程设计正余弦信号的谱分析
成绩
指导教师:
日期:
《数字信号处理》课程设计
题目:
正余弦信号的谱分析
姓名:
院系:
电子信息工程系
专业:
通信工程
班级:
通信091
学号:
指导教师:
2012年6月
正余弦信号的谱分析
(电子信息工程学系指导教师:
留黎钦)
中文摘要:
使用MATLAB软件,通过编写程序,对正余弦信号进行傅里叶变换。
用DFT和FFT实现对正余弦信号的谱分析,并且分析DFT长度对频谱的影响。
关键词:
matlab;傅里叶变换;DFT;FFT;
一、概述
数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体的说,它也包括确定能量谱或功率谱。
数字频谱分析可以应用在很广阔的领域。
二、设计目的
1.用DFT实现对正余弦信号的谱分析;
2.观察DFT长度和窗函数长度对频谱的影响;
3.对DFT进行谱分析中的误差现象获得感性认识。
三、设计原理
1、谱分析原理
频谱分析方法是基于以下的观测:
如果连续时间信号
是频带有限的,那么对其离散时间等效信号
的DFT进行谱分析。
它的离散时间等效物g(n)应当能给出
(t)频谱的一个很近似的估计两者之间只差一个带数因子T。
然而,在大多数情况下,
是在
范围内定义的,因此
也就定义在
的无线范围内,要估计一个无限长信号的频谱是不可能的。
实用的方法是:
先让模拟连续信号
通过一个抗混叠的模拟滤波器,然后把它采样成一个离散序列
。
假定反混叠滤波器的设计是正确的,则混叠效应可以忽略,又假设A/D变换器的字长足够长,则A/D变换中的量化噪声也可忽略。
假定表征正余弦信号的基本参数,如振幅、频率和相位不随时间改变,则此信号的傅立叶变换
可以用计算它的DTFT得到
(1)
实际上无限长序列
首先乘以一个长度为M的窗函数
,使它变成一个长为M的有限长序列,
,对
求出的DTFT
应该可以作为原连续模拟信号
的频谱估计,然后求出
在
区间等分为N点的离散傅立叶变换DFT。
为保证足够的分辨率,DFT的长度N选的比窗长度M大,其方法是在截断了的序列后面补上N-M个零。
计算采用FFT算法。
更详细地考察一下上面的方法。
这样才能了解它的限制,并正确利用它所得出的结果。
特别要分析加窗的效果,以及和由DFT样本来估计DTFT频率采样值的问题。
在讨论由
来估计频谱
和
时,需要重新探讨一下这些变换和它们所对应的频率之间的关系,R点的DFT
与它的DTFT
的关系为:
=
|
(2)
归一化的数字角频率
和DFT样本序号k的关系为
=
(3)
同样的,模拟角频率和DFT样本序号k的关系为
(4)
其中T是采样周期。
为了能正确地解释一DFT为基础的频谱分析结果,首先来考虑单频率正余弦序列的频谱分析。
设一个具有数字角频率
的余弦信号为:
(5)
把这个序列表为:
(6)
查表得知它的DTFT为:
(7)
因此,它是一个以2
为周期的
的周期信号,每个周期中包含两个冲击信号。
在
的频率范围内,
处的冲击具有复数幅特性
,而在
处具有
的复数幅特性。
为了用DFT分析个g(n)的频域特性,取g(n)的一个有限长序列
(8)
2、MATLAB函数介绍
1.输入函数input()
格式:
R=input(string)
功能:
在屏幕上显示input括号后的’string’内容,提示用户从键盘输入某值,并将输入的值赋给R。
例如,在命令窗口输入R=input(‘Howmanyapples’)
会显示Howmanyapples
从键盘输入3
会显示R=3
2.一维快速傅里叶变换函数fft()
格式:
y=fft(x)
y=fft(x,n)
说明:
fft函数用于计算矢量或矩阵的傅里叶变换。
3.幅度函数abs( )
格式:
abs(X)
功能:
对X取绝对值,当X是复数时,得到X的复模值。
四、设计过程
1.理解题目,编写程序;
2.运行程序;
3.输入相关参数;
4.观察图像。
设计过程框图:
五、设计内容
1.对一个频率为10Hz,采样频率为64Hz的32点余弦序列进行谱分析,画出其频谱图;若将频率改为11Hz,其他参数不变,重新画出该序列的频谱图,观察频率泄漏现象,分析原因。
(1).频率为10Hz,采样频率为64Hz的32点余弦序列
clearall;closeall;clc;
N=32;n=0:
N-1;Fs=64;T=1/Fs;
x1=cos(10*2*pi*n*T);%定义10Hz序列x1
k=0:
N-1;
X1=abs(fft(x1,N));%求余弦序列x1的32点FFT
subplot(1,2,1);stem(n,x1);%绘制10Hz序列x1的波形
xlabel('n');ylabel('x1(n)');title('余弦序列(f=10Hz)');
subplot(1,2,2);stem(k,X1);%绘制序列x1的幅频特性曲线
xlabel('k');ylabel('X1(k)');title('32点FFT幅频曲线(f=10Hz)');
图1.频率为10Hz,采样频率为64Hz的32点余弦序列频谱图
(2)频率为11Hz,采样频率为64Hz的32点余弦序列
clearall;closeall;clc;
N=32;n=0:
N-1;Fs=64;T=1/Fs;
x2=cos(11*2*pi*n*T);%定义11Hz序列x2
k=0:
N-1;
X2=abs(fft(x2,N));%求余弦序列x2的32点FFT
subplot(1,2,1);stem(n,x2);%绘制11Hz序列x2的波形
xlabel('n');ylabel('x2(n)');title('余弦序列(f=11Hz)');
subplot(1,2,2);stem(k,X2);%绘制序列x2的幅频特性曲线
xlabel('k');ylabel('X2(k)');title('32点FFT幅频曲线(f=11Hz)');
图2.频率为11Hz,采样频率为64Hz的32点余弦序列频谱图
分析:
由图1可见,它的DFT只有两个点不等于零,这样DFT确实正确地分辨了余弦信号的频率。
但是这样理想的结果是碰巧得到的,因为我们恰好截取了五个完整的余弦周期(f*N/Fs=5)。
如果截取的不是整数周期,情况就不同了。
把频率改为11Hz,而采样频率仍为64Hz和窗长度仍为32点,用同样的程序计算此余弦信号的频谱,可以得到,频谱图上有两个较大的峰值,而其他的点上幅度也不再为零。
,因此可以判断,信号的频谱峰值确实位于两者之间。
本来是单一的11Hz频率的能量会分布到许多DFT频率上的现象称为频率泄漏,来源于截断效应。
2.考察DFT的长度对双频率信号频谱分析的影响。
设待分析的信号为
令两个长度为16的正余弦序列的数字频率为
及
。
取N为四个不同值16,32,64,128。
画出四个DFT幅频图,分析DFT长度对频谱分辨率的影响。
n=0:
15;N1=16;N2=32;N3=64;N4=128;f1=0.22;f2=0.34;
x=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n);%待分析信号
%谱分析
X1=abs(fft(x,N1));
X2=abs(fft(x,N2));
X3=abs(fft(x,N3));
X4=abs(fft(x,N4));
k1=0:
N1-1;k2=0:
N2-1;k3=0:
N3-1;k4=0:
N4-1;
subplot(4,2,1),stem(n,x);%绘制序列的波形
xlabel('n');ylabel('x1(n)');title('余弦序列');
subplot(4,2,2);stem(k1,X1);%绘制N1的幅频特性
xlabel('n');ylabel('X(n)');title('N=16的幅频特性曲线图');
subplot(4,2,3),stem(n,x);%绘制序列的波形
xlabel('n');ylabel('x1(n)');title('余弦序列');
subplot(4,2,4);stem(k2,X2);%绘制N2的幅频特性
xlabel('n');ylabel('X(n)');title('N=32的幅频特性曲线图');
subplot(4,2,5),stem(n,x);%绘制序列的波形
xlabel('n');ylabel('x1(n)');title('余弦序列');
subplot(4,2,6);stem(k3,X3);%绘制N3的幅频特性
xlabel('n');ylabel('X(n)');title('N=64的幅频特性曲线图');
subplot(4,2,7),stem(n,x);%绘制序列的波形
xlabel('n');ylabel('x1(n)');title('余弦序列');
subplot(4,2,8);stem(k4,X4);%绘制N4的幅频特性
xlabel('n');ylabel('X(n)');title('N=128的幅频特性曲线图')
图3.N=16的DFT幅频图
图4.N=32的DFT幅频图
图5.N=64的DFT幅频图
图6.N=128的DFT幅频图
分析:
采样速率Fs>2fc,谱分辨率F=Fs/N,如果保持采样点数N不变,要提高频谱分辨率(减小F),就必须降低采样频率,采样频率的降低会引起谱分析范围变窄和谱频率混叠失真。
如维持Fs不变,为提高频谱分辨率可以增加采样点数N。
更长的时域信号能够提供更高的频域分辨率,因为一个N点的时域信号能被分解为N/2+1个余弦信号和N/2+1个正弦信号,N增大则(N/2+1)也增大,频域间隔(1/2的时域采样频率)/(N/2+1)减小,所以频域分辨率提高了。
所以利用DFT计算频谱时增加取样点的长度范围可以提高分辨率。
3.在上题中若把两个正弦波的频率取得较近,令
,
,试问怎样选择FFT参数才能在频谱分析中分辨出这两个分量?
N=input('输入谱分析的长度');
n=1:
N-1;
f1=0.22;f2=0.25;
x=0.5*sin(2*pi*f1*n)+sin(2*pi*f2*n);%待分析信号
subplot(1,2,1),stem(n,x);%绘制序列的波形
xlabel('n');ylabel('x1(n)');
title('余弦序列');
X=abs(fft(x,N));%求余弦序列的N点FFT
subplot(1,2,2);
k=0:
N-1;
stem(k,X);%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(N),'点FFT幅频曲线'];
title(string);
图7.N=16的FFT幅频曲线
图8.N=32的FFT幅频曲线
图9.N=64的FFT幅频曲线
图10.N=128的FFT幅频曲线
分析:
从题可以看出当Np=1/|f1-f2|=1/(0.25-0.22)约为33,而N=32最接近33,因为32点的分辨率最好。
只有当Np=2*pi/|f1-f2|时才能很好的恢复原信号的频谱。
因而,对于双频信号而言,要增大其频谱的分辨率不仅与其窗函数的宽度N有关还与两频率差有关。
因此,随着N的增大,其频谱的分辨率增大,但是当N增加到一定时,其频谱分辨率反而下降。
因而不能通过无线的增大N来扩大频谱的分辨率。
其第2题中Np=1/(0.34-0.22)约等于8,因而四个中16点的频谱的分辨率最好。
4.扩展练习:
DFT长度对单频率信号频谱分析的影响。
对连续的单一频率周期信号按采样频率
采样,截取长度N,分别选N=20和N=16,观察其DFT结果的幅度谱。
此时离散序列
,即k=8。
N=input('输入谱分析的长度');
n=1:
N-1;
f1=1/8;
x=sin(2*pi*f1*n);%待分析信号
subplot(1,2,1),stem(n,x);%绘制序列的波形
xlabel('n');ylabel('x1(n)');
title('余弦序列');
X=abs(fft(x,N));%求余弦序列的N点DFT
subplot(1,2,2);
k=0:
N-1;
stem(k,X);%绘制序列的幅频特性曲线
xlabel('k');ylabel('X(k)');
string=[num2str(N),'点DFT幅频曲线'];
title(string);
图11.N=20的单频DFT频谱曲线
图12.N=16的单频DFT频谱曲线
分析:
计算结果示于图11图12,图11分别是N=20时的截取信号和DFT结果,由于截取了两个半周期,频谱出现泄漏;图12分别是N=16时的截取信号和DFT结果,由于截取了两个整周期得到单一谱线的频谱。
上述频谱的误差主要是由于时域中对信号的非整周期截断产生的频谱泄漏。
结束语:
通过此次课程设计,使我更加扎实的掌握了有关数字信号处理以及MATLAB方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查以及与同学老师的交流终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可。
参考文献:
[1] 张威 . MATLAB基础与编程入门 . 西安电子科技大学出版社,20008.1
[2] 程佩青 数字信号处理教程 清华大学出版社,2010.5
[3] 曹志刚、钱亚生 现代通信原理 清华大学出版社 2010.6
[4] 王福昌 通信原理学习辅导 华中科技大学出版社 2008.8
[5] 高成 matlab图像处理与应用 国防工业出版社 2007.4
[6]宋建华.基于Matlab的FFT及其应用[J].牡丹江师范学院学报(自然科学版),2007,2,3—4.