实验一 快速傅里叶变换及其应用

更新时间:2023-07-22 06:57:01 阅读量:2 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 快速傅里叶变换及其应用

一、实验目的

1.在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉FFT子程序。

2.熟悉应用FFT对典型信号进行频谱分析的方法。

3.了解应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。

4.熟悉应用FFT实现两个序列的线性卷积的方法。

二、实验原理与方法

在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换(DFT)。这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:

反变换为:

有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。

FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。常用的FFT是以2为基数的,其长度

。它的效率高,程序简单,

使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。

(一)在运用DFT进行频谱分析的过程中可能产生三种误差: (1)混叠

序列的频谱时被采样信号的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。

(2)泄漏

实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。

(3)栅栏效应

DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能别我们观察到。

减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。

(二)用FFT计算线性卷积

用FFT可以实现两个序列的圆周卷积。在一定的条件下,可以使圆周卷积等于线性卷积。一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度

N≥N1+N2

对于长度不足N的两个序列,分别将他们补零延长到N。

当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。有两种方法:

重叠相加法。将长序列分成与短序列相仿的片段,分别用FFT对它们作线性卷积,再将分段卷积各段重叠的部分相加构成总的卷积输出。

重叠保留法。这种方法在长序列分段时,段与段之间保留有互相重叠的部分,在构成总的卷积输出时只需将各段线性卷积部分直接连接起来,省掉了输出段的直接相加。

三、实验内容及步骤 实验中用到的信号序列: a) Gaussian序列

b)衰减正弦序列

c)三角波序列

d)反三角波序列

上机实验内容:

(1)观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2,4,8,观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域幅频特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。

(2)观察衰减正弦序列xb(n)的时域和幅频特性,a=0.1,f=0.0625,检查谱峰出现位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和谱峰出现位置,有无混叠和泄漏现象?说明产生现象的原因。

(3)观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性曲线。

在xc(n)和xd(n)末尾补零,用N=16点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两情况的FFT频谱还有相同之处吗?这些变化说明了什么?

(4)一个连续信号含两个频率分量,经采样得

x(n)=sin2π*0.125n+cos2π*(0.125+Δf)n n=0,1 ,N-1

已知N=16,Δf分别为1/16和1/64,观察其频谱;当N=128时,Δf不变,其结果有何不同,为什么?

(5)用FFT分别实现xa(n)(p=8,q=2)和 xb(n)(a=0.1,f=0.0625)的16点圆周卷积和线性卷积。

四、实验报告要求

(1) 按要求回答实验内容中的没个问题,给出信号时域和幅频的特性曲线,并附上MATLAB程序代码。

(2) 总结实验中的主要结论。

附录:

程序一:

n=0:1:15;

%p=8不变,q变化(2,4,8); p=8;q=2; %p=8;q=2; xa1=exp(-((n-p).^2)/q); subplot(5,2,1); plot(n,xa1,'-*'); xlabel('t/T'); ylabel('xa(n)'); title('p=8 q=2') xk1=abs(fft(xa1)); subplot(5,2,2); stem(n,xk1) xlabel('k'); ylabel('Xa(k)'); title('p=8 q=2')

p=8;q=4; %p=8;q=4; xa1=exp(-((n-p).^2)/q); subplot(5,2,3); plot(n,xa1,'-*'); xlabel('t/T'); ylabel('xa(n)'); title('p=8 q=4') xk1=abs(fft(xa1)); subplot(5,2,4); stem(n,xk1) xlabel('k'); ylabel('Xa(k)'); title('p=8 q=4')

p=8;q=8; %p=8;q=8; xa1=exp(-((n-p).^2)/q); subplot(5,2,5); plot(n,xa1,'-*'); xlabel('t/T'); ylabel('xa(n)'); xk1=abs(fft(xa1)); title('p=8 q=8') subplot(5,2,6); stem(n,xk1) xlabel('k'); ylabel('Xa(k)'); title('p=8 q=8')

%q=8不变,p变化(8,13,14); p=8;q=8; %p=8;q=8; xa1=exp(-((n-p).^2)/q); subplot(5,2,5);

xlabel('t/T'); ylabel('xa(n)'); xk1=abs(fft(xa1)); title('p=8 q=8') subplot(5,2,6); stem(n,xk1) xlabel('k'); ylabel('Xa(k)'); title('p=8 q=8')

p=13;q=8; %p=13;q=8; xa1=exp(-((n-p).^2)/q); subplot(5,2,7); plot(n,xa1,'-*'); xlabel('t/T'); ylabel('xa(n)'); xk1=abs(fft(xa1)); title('p=13 q=8')

xa(n)

0 xa(n)

xa(n)

xa(n)

xa(n)

stem(n,xk1) xlabel('k'); ylabel('Xa(k)'); title('p=13 q=8')

p=14;q=8; %p=14;q=8; xa1=exp(-((n-p).^2)/q); subplot(5,2,9); plot(n,xa1,'-*'); xlabel('t/T'); ylabel('xa(n)'); title('p=14 q=8') xk1=abs(fft(xa1)); subplot(5,2,10); stem(n,xk1) xlabel('k'); ylabel('Xa(k)'); title('p=14 q=8’)

15

0 0

p=8 q=2

5 10 5 10 15

t/T

k

t/T k p=8 q=8

t/T k

t/T k

t/T

5

k

10 15

n=0:1:15;

a=0.1;f=0.0625;

xb1=exp(-(a*n)).*sin(2*pi*f*n) subplot(3,2,1);

xlabel('t/T'); ylabel('xb(n)');

title('a=0.1 f=0.0625') xk1=abs(fft(xb1)); subplot(3,2,2); stem(n,xk1) xlabel('k'); ylabel('Xb(k)');

title('a=0.1 f=0.0625') a=0.1;f=0.4375;

xb1=exp(-(a*n)).*sin(2*pi*f*n) subplot(3,2,3); plot(n,xb1,'-*'); xlabel('t/T'); ylabel('xb(n)');

title('a=0.1 f=0.4375') xk1=abs(fft(xb1)); subplot(3,2,4); stem(n,xk1) xlabel('k'); ylabel('Xb(k)');

title('a=0.1 f=0.4375') a=0.1;f=0.5625;

xb1=exp(-(a*n)).*sin(2*pi*f*n) subplot(3,2,5); plot(n,xb1,'-*'); xlabel('t/T'); ylabel('xb(n)');

title('a=0.1 f=0.5625') xk1=abs(fft(xb1)); subplot(3,2,6); stem(n,xk1) xlabel('k'); ylabel('Xb(k)');

title('a=0.1 f=0.5625')

a=0.1 f=0.0625

)

(nb

x051015

t/T

a=0.1 f=0.4375

)

(nb

x0

5

10

15

t/T

a=0.1 f=0.5625

)

(nb

x05

1015

t/T

)

(kbXk

)

(kbXk

)

(kbXk

本文来源:https://www.bwwdw.com/article/7q9m.html

《实验一 快速傅里叶变换及其应用.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top