实验2 利用DFT分析信号频谱.docx

上传人:b****5 文档编号:12309138 上传时间:2023-04-18 格式:DOCX 页数:17 大小:152.16KB
下载 相关 举报
实验2 利用DFT分析信号频谱.docx_第1页
第1页 / 共17页
实验2 利用DFT分析信号频谱.docx_第2页
第2页 / 共17页
实验2 利用DFT分析信号频谱.docx_第3页
第3页 / 共17页
实验2 利用DFT分析信号频谱.docx_第4页
第4页 / 共17页
实验2 利用DFT分析信号频谱.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验2 利用DFT分析信号频谱.docx

《实验2 利用DFT分析信号频谱.docx》由会员分享,可在线阅读,更多相关《实验2 利用DFT分析信号频谱.docx(17页珍藏版)》请在冰豆网上搜索。

实验2 利用DFT分析信号频谱.docx

实验2利用DFT分析信号频谱

实验2利用DFT分析信号频谱

一、实验目的

1、加深对DFT原理的理解。

2、应用DFT分析信号的频谱。

3、深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决办法。

二、实验设备及环境

计算机、MATLAB软件环境。

三、实验原理

1、DFT与DTFT的关系

有限长序列

的离散时间傅里叶变换

在频率区间

的N个等间隔分布点

上的N个取样值可以由下式表示:

由上式可知,序列x(n)的N点DFTX(k),实际上就是x(n)序列的DTFT在N个等间隔频率点

上的样本值。

2、利用DFT求DTFT

由于DFT是DTFT的取样值,其相邻两个频率样本点的间距为

,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT来近似计算DTFT。

如果没有更多数据,可以通过补零来增加数据长度。

3、利用DFT分析连续时间信号的频谱

采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行两个操作:

一是采样,二是截断。

对于连续时间非周期信号

,按采样间隔T进行采样,截取长度为M,那么

进行N点频域采样,得到

因此,可以将利用DFT分析连续非周期信号频谱的步骤归纳如下:

(1)确定时域采样间隔T,得到离散序列

(2)确定截取长度M,得到M点离散序列

这里

为窗函数。

(3)确定频域采样点数N,要求N≥M。

(4)利用FFT计算离散序列的N点DFT,得到

(5)根据式(2-6)由

计算

采样点的近似值。

采用上述方法计算

的频谱,需要注意如下三个问题:

(1)频谱混叠。

如果不满足采样定理的条件,频谱会出现混叠误差。

对于频谱无限宽的信号,应考虑覆盖大部分主要频率分量的范围。

(2)栅栏效应和频谱分辨率。

使用DFT计算频谱,得到的结果只是N个频谱样本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。

频谱分辨率与记录长度成正比,要提高频谱分辨率,就要增加记录时间。

(3)频谱泄露。

对信号截断会把窗函数的频谱引入到信号频谱,造成频谱泄露。

解决这个问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。

因此,要合理选取采样间隔和截取长度,必要时还考虑加适当的窗。

对于连续时间周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总是有限长的,仍然可以采用上述方法近似计算。

4、可能用到的MATLAB函数与代码

实验中DFT运算可采用MATLAB中提供的函数fft来实现。

四、实验内容

1、已知

,完成如下要求:

(1)计算其DTFT,并画出在

区间的波形。

(2)计算4点DFT,并把结果显示在

(1)中所画的图形中。

(3)对x(n)补零,计算64点DFT,并显示结果。

(4)根据实验结果,分析是否可以由DFT计算DTFT,如果可以,如何实现。

实验代码及结果:

(1)&

(2)

>>n=0:

3;

>>x=[2-111];

>>w=0:

0.01*pi:

2*pi;

>>X1=x*exp(-j*n'*w);

>>X2=fft(x);

>>subplot(211);

>>plot(w,abs(X1));

>>holdon;

>>stem(n*pi/2,abs(X2),'fill');

>>axistight;

>>xlabel('\Omega');

>>title('Magnitude');

>>subplot(212);

>>plot(w,angle(X1));

>>holdon;

>>stem(n*pi/2,angle(X2),'fill');

>>xlabel('\Omega');

>>title('Phase');

>>axistight;

(3)&(4)

>>n=0:

3;

>>x=[2-111];

>>w=0:

0.01*pi:

2*pi;

>>X1=x*exp(-j*n'*w);

>>subplot(211);

>>plot(w,abs(X1));

>>axistight;

>>xlabel('\Omega');

>>title('Magnitude');

>>holdon;

>>subplot(212);

>>plot(w,angle(X1));

>>axistight;

>>xlabel('\Omega');

>>title('Phase');

>>holdon;

>>n=0:

63;

>>X2=fft(x,64);

>>subplot(211);

>>stem(n*2*pi/64,abs(X2),'fill');

>>subplot(212);

>>stem(n*2*pi/64,angle(X2),'fill');

(4)通过实验我们发现DFT实际上是对DTFT的采样值。

因此,我们可以在已知序列后补零至某一足够的长度,在进行DFT运算,得到的DFT的包络就可以近似为信号的DTFT。

2、考察序列

(1)0≤n≤10时,用DFT估计x(n)的频谱;将x(n)补零加长到长度为100点序列用DFT估计x(n)的频谱。

要求画出相应波形。

(2)0≤n≤100时,用DFT估计x(n)的频谱,并画出相应波形。

(3)根据实验结果,分析怎样提高频谱分辨率。

实验代码及结果:

>>n=[0:

10];

>>x=cos(0.48*pi*n)+cos(0.52*pi*n);

>>X=fft(x);

>>subplot(211);

>>stem(n*2*pi/11,abs(X),'fill');

>>xlabel('\Omega');

>>title('Magnitude');

>>subplot(212);

>>stem(n*2*pi/11,angle(X),'fill');

>>xlabel('\Omega');

>>title('Phase');

>>n=[0:

99];

>>X=fft(x,100);

>>subplot(211);

>>stem(n*2*pi/100,abs(X),'fill');

>>xlabel('\Omega');

>>title('Magnitude');

>>axistight;

>>subplot(212);

>>stem(n*2*pi/100,angle(X),'fill');

>>xlabel('\Omega');

>>title('Phase');

>>axistight;

(2)

>>n=[0:

99];

>>x=cos(0.48*pi*n)+cos(0.52*pi*n);

>>X=fft(x);

>>subplot(211);

>>stem(n*2*pi/101,abs(X),'fill');

>>xlabel('\Omega');

>>title('Magnitude');

>>axistight;

>>subplot(212);

>>stem(n*2*pi/101,angle(X),'fill');

>>xlabel('\Omega');

>>title('Phase');

>>axistight;

(3)

由上述结果可知,增加序列的长度可以有效提高频谱分辨率。

3、已知信号

其中

从x(t)的表达式可以看出,它包含3个频率的正弦波,但是,从其时域波形上来看,似乎是一个正弦信号,利用DFT做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要。

实验代码及结果:

T=input('T=');

n=0:

1:

1/T;

x=0.15*sin(2*pi*n*T)+sin(4*pi*n*T)-0.1*sin(6*pi*n*T);

X=fft(x);

subplot(211);

stem(n*2*pi/(1/T+1),abs(X),'fill');

xlabel('\Omega');

title('Magnitude');

axistight;

subplot(212);

stem(n*2*pi/(1/T+1),angle(X),'fill');

xlabel('\Omega');

title('Phase');

axistight;

>>Exp1_3

T=0.01

>>Exp1_3

T=0.1

>>Exp1_3

T=0.02

>>Exp1_3

T=0.05

由此可见,T选择0.01——0.02s之间的数值结果较好。

4、利用DFT近似分析连续时间信号

的频谱(幅度谱)。

分析采用不同的采样间隔和截取长度进行计算的结果,并最终确定合适的参数。

实验代码及结果:

T=input('T=');

End=input('EndTime=');

n=0:

1:

End/T;

x=exp(-0.1*n*T);

X=fft(x);

subplot(211);

stem(n*2*pi/(End/T+1),abs(X),'fill');

xlabel('\Omega');

title('Magnitude');

axistight;

subplot(212);

stem(n*2*pi/(End/T+1),angle(X),'fill');

xlabel('\Omega');

title('Phase');

axistight;

>>Exp1_4

T=0.5

EndTime=50

>>Exp1_4

T=1

EndTime=100

>>Exp1_4

T=2

EndTime=200

>>Exp1_4

T=5

EndTime=500

由此可见,采样周期T=2s,采样100点左右时效果较好。

五、收获与体会

这是DSP的第一次实验,由于对DSP的原理还不了解,导致一开始实验的结果很多都是错误的,这份实验报告是重新做了一遍的结果。

DFT具有时、频双离散的特点,因此适合计算机做频谱分析。

本次实验即是初步进行了简单信号的谱分析,加深了对DFT的理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1