数字信号处理课程设计正余弦信号的谱分析Word格式.docx
《数字信号处理课程设计正余弦信号的谱分析Word格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计正余弦信号的谱分析Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
中文摘要:
使用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:
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的幅频特性曲线
k'
X1(k)'
32点FFT幅频曲线(f=10Hz)'
图1.频率为10Hz,采样频率为64Hz的32点余弦序列频谱图
(2)频率为11Hz,采样频率为64Hz的32点余弦序列
x2=cos(11*2*pi*n*T);
%定义11Hz序列x2
X2=abs(fft(x2,N));
%求余弦序列x2的32点FFT
stem(n,x2);
%绘制11Hz序列x2的波形
x2(n)'
余弦序列(f=11Hz)'
stem(k,X2);
%绘制序列x2的幅频特性曲线
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长度对频谱分辨率的影响。
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);
%绘制序列的波形
余弦序列'
subplot(4,2,2);
stem(k1,X1);
%绘制N1的幅频特性
X(n)'
N=16的幅频特性曲线图'
subplot(4,2,3),stem(n,x);
subplot(4,2,4);
stem(k2,X2);
%绘制N2的幅频特性
N=32的幅频特性曲线图'
subplot(4,2,5),stem(n,x);
subplot(4,2,6);
stem(k3,X3);
%绘制N3的幅频特性
N=64的幅频特性曲线图'
subplot(4,2,7),stem(n,x);
subplot(4,2,8);
stem(k4,X4);
%绘制N4的幅频特性
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:
f2=0.25;
subplot(1,2,1),stem(n,x);
X=abs(fft(x,N));
%求余弦序列的N点FFT
stem(k,X);
%绘制序列的幅频特性曲线
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来扩大频谱的