视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
信号处理中FFT的应用
2025-10-03 14:43:29 责编:小OO
文档
一、实验目的

1、理解用FFT对周期序列进行频谱分析时所面临的问题并掌握其解决方法。

2、掌握用时域窗函数加权处理的技术。

3、理解用FFT对非周期信号进行频谱分析所面临的问题并掌握其解决方法。

二、实验原理与计算方法

1、对周期序列进行频谱分析应注意的问题

                                        

                                                         

                                   k                                        k

(a)时域周期整数倍截断           (b)时域非周期整数倍截断

图 1 周期函数的幅频曲线

对时间序列作FFT时,实际上要作周期延拓(如果取长序列的一段进行计算还要先作截断)。周期序列是无限长时间序列,如果截断区间刚好就是该序列周期的整数倍,那么在进行周期延拓后,将还原出原来的周期序列,由此可以较精确地计算出的该周期序列的频谱。反之,如果截断区间并不是该序列周期的整数倍,那么在进行周期延拓后,就不可能还原出原来的周期序列,由此计算出的频谱与该周期序列的频谱存在误差,而且误差的大小与截断区间的选取直接相关,如图1所示,其中幅度频谱的量值表示为,以dB(分贝)为单位。这种误差是由于周期序列与矩形截断序列相乘在频域产生二者的频谱卷积形成的。矩形窗的频谱是抽样函数序列,如图2所示。除了k = 0处主瓣内集中了大部分的能量外,两旁的较小峰值处的旁瓣也分散了一部分能量,它与周期序列频谱卷积的结果使原来集中的频谱展宽,称为频率泄漏。

如果对已知周期的信号作频谱分析,在进行时域截断时,完全可以选取其周期的整数倍裁取,从而可以避免这种频率泄漏

                   

                                 k

图 2 矩形窗的频谱

的发生。不过,通常需要进行频谱分析的信号是周期未知的信号,或随机信号,无法判断它的周期值,为了尽量避免频率泄漏对结果的影响,在作时间截断时,就应选取其频谱的旁瓣较小的截断函数,以减轻泄漏问题。

2、时域窗函数的应用

作为截断函数,矩形窗在作时间截断时,对所截取区间内的信号不加以任何影响,而其它的窗函数都将对所截取区间内的信号作加权处理。除了在实验二中已经介绍过三角窗、Hanning窗和Hamming窗外,常用的窗函数还有很多,例如Parzen窗、Kaiser窗、Chebyshev窗、Tukey窗、Poisson窗、Caushy窗、Gaussian窗和Blackman窗等等。本次实验仍是采用实验二中的几种窗函数,但是利用窗函数作时域加权截断。

                                        

    0                                  t

                                                  0                                        k

   (a) 正弦函数的加权的非周期时域截断       (b)减小了泄漏的频谱

                     

图 3 采用Hanning窗加权后的时域截断和频谱

图 3 中给出了采用Hanning窗对正弦函数作非整周期的时域加权截断后的波形和频谱,与图4-1(b)比较,泄漏已明显减少。

应该指出,前面所给出的窗函数都是定义为以0点为中心、宽度为N +1的加权函数,在这里应用时,需要将其右移,成为区间内的加权函数。

3、对非周期序列进行频谱分析应注意的问题

(1)混叠

一般非周期信号作FFT之前要进行时域采样和周期延拓(无限长时间信号还应先截断再延拓)。根据Fourier变换理论,经等周期的冲激采样后,离散序列的频谱是原信号频谱以为周期的周期延拓。按照Nyquist采样定理,由采样引起周期延拓后频谱之间不发生混叠的条件是:(1)原信号应该是有限带宽信号,设其频带宽度为fm;(2)频谱的周期,即采样周期应满足Nyquist 条件。

由于实际上有限长时间信号的FT是频域的无限函数,因此采样所得的离散序列的频谱必定产生混叠,减小采样周期只能减小而不能消除混叠。对于时间有限函数,当采样周期较大时,也会在FFT得到的频域出现混叠,形成频谱失真,造成频谱分析结果与原信号的实际频谱的差异,也无法恢复出原信号。当然,实际工作中只要采样和截断产生的误差在许可的范围内就行了,但应该认

识到混叠是引起频谱分析误差的一个主要原因。

                                

 0                                   n   0               N/2             N

       (a)时域按周期Ts采样          (b)频域一个周期内在N/2附近出现混叠

                     

图 4 非周期函数采样后的幅频曲线

还应该注意的是,离散Fourier变换的频域也是周期化的,区间内的样点实际上是负频率区的量值,因此如果出现混叠,就将在一个周期内出现,并发生在附近的区域,如图4所示。要减少混叠,就要尽量减小采样周期。

(2)泄漏

周期函数截断引起的频率泄漏问题,在非周期函数截断处理后同样存在,这种误差是由于采样后的离散序列与矩形截断序列相乘在频域造成二者的频谱卷积形成的。矩形窗的频谱是抽样函数序列,它与离散序列频谱卷积的结果使原来集中于每一个样点处的频谱展宽,其影响在高频区(接近N/2的样点)特别明显,如图5所示。同样,为了尽量避免频率泄漏对结果的影响,在对非周期函数作时间截断时,除尽量增加截断序列的宽度外,也应选取其频谱的旁瓣较小的截断函数,以减轻泄漏问题。

                                      

   0                                        n   0                 N/2              N

               (a)时域截断           (b)频域一个周期内在N/2附近出现泄漏

                 

图 5 函数采样后作截断的幅频曲线

在选取了适当的窗函数后,应当使窗函数的宽度与被处理的序列长度相同,如果作变换前还需要补零(例如为了作卷积运算或避免栅栏效应),则应将原序列与窗函数相乘后再补零,即补零的样点不用窗函数加权处理。

(3)栅栏效应

非周期信号应具有连续的频谱,在对作抽样后进行DFT,得到的是离散的频谱。如果排除混叠和泄漏等误差的影响,所得的结果也只是的连续频谱上的个样值。这就象通过栅栏上的等间距缝隙观看到的另一边的景象,故此称栅栏效应。被栅栏遮住的景象中有可能存在与显现出的频谱差异较大的变化,即显示信号特征的频谱分量。为了使被栅栏遮住的部分能尽可能地显现出来,可以采用增加频域样点密度的方法,即在不增加信号采样点的情况下,用时域补零加宽变换尺度N来实现,称为补零重构。例如原来信号采样得到12个样点,在其后面再加上4个零,使序列的总长度为16个样点。这样处理的结果原来信号的采样间隔和频率都没有改变,设采样频率为,经补零重构之后,采样频率仍然为,但是原来频域样点间宽度为/12,经补零重构之后频域样点间宽度为/16。这就使补零重构之后频域样点密度增加,而且显示出原来没有显露的一些频率位置的频谱。

三、实验内容

(1)将余弦函数cos(2t)以Ts=1/53 s抽样,对余弦序列做样点数为N=128的FFT,画出频谱曲线,观察并记录频率泄漏现象,然后用Hamming窗和三角窗作加权截断,观察并记录泄漏的衰减。

n=[0:1:127];N=128;

Ts=1./53;t=n.*Ts

Xn=cos(2.*pi.*t)

w=hamming(N)

c=bartlett(N)

H=Xn.*w'

B=Xn.*c'

subplot(3,2,1);plot(t,Xn,'r');title('X曲线')

subplot(3,2,2);plot(abs(fft(Xn,N)),'r');title('幅频曲线')

subplot(3,2,3);plot(t,H,'r');title('hamming窗加权曲线')

subplot(3,2,4);plot(abs(fft(H,N)),'r');title('hamming窗加权幅频曲线')

subplot(3,2,5);plot(t,B,'r');title('三角窗加权曲线')

subplot(3,2,6);plot(abs(fft(B,N)),'r');title('三角窗加权幅频曲线')

(2)将幅度为1,周期为2的方波信号,按Ts=1/37 s的间距抽样,做样点数N=128的FFT,画出频谱曲线,然后用Hamming窗和三角窗作加权截断,观察并记录作不同的加权截断引起的频谱差异。

n=[0:1:127];N=128;

Ts=1./37;t=n.*Ts

Xn=square(1.*pi.*t,50)

w=hamming(N)

c=bartlett(N)

H=Xn.*w'

B=Xn.*c'

subplot(3,2,1);plot(t,Xn,'r');title('方波曲线')

subplot(3,2,2);plot(abs(fft(Xn,N)),'r');title('方波频谱曲线')

subplot(3,2,3);plot(t,H,'r');title('方波hamming加窗曲线')

subplot(3,2,4);plot(abs(fft(H,N)),'r');title('方波hamming加窗频谱曲线')

subplot(3,2,5);plot(t,B,'r');title('方波Bartlett加窗曲线')

subplot(3,2,6);plot(abs(fft(B,N)),'r');title('方波Bartlett加窗频谱曲线')

(3)将单边指数函数x(t)=e-tu(t)抽样截断后作FFT,首先选取不同的抽样周期Ts=0.05,0.1,0.5 s,并取N = 128,观察频谱混叠。然后作不同宽度的截断,选取矩形窗宽为4,8,32等,并保持N = 128,观察频谱泄漏。

N=128;n=[0:3];

Ts=0.05;t=n.*Ts

x=exp(-t).*u(t)

w=boxcar(4)

R=x.*w'

subplot(321);plot(t,abs(fft(x)));title('Ts=0.05')

subplot(322);plot(abs(fft(R,N)));title('矩形窗宽为4 ')

n=[0:7]

Ts=0.1

t=n.*Ts

x=exp(-t).*u(t)

w=boxcar(8)

R=x.*w'

subplot(323);plot(t,abs(fft(x)));title('Ts=0.1 ')

subplot(324);plot(abs(fft(R,N)));title('矩形窗宽为8 ')

n=[0:31];Ts=0.5

t=n.*Ts

x=exp(-t).*u(t)

w=boxcar(32)

R=x.*w'

subplot(325);plot(t,abs(fft(x)));title('Ts=0.5 ')

subplot(326);plot(abs(fft(R,N)));title('矩形窗宽为32 ')

(4)计算下面三个正弦函数的组合的频谱

其中频率f1=6.3,f2=9.7,f3=15.3,令t=nTs,抽样周期Ts=1/。分别取N=32,,128将其截断后作FFT,观察和记录混叠和泄漏形态。分别采取补零加宽和增加截取时间宽度的方法作出频谱图,了解栅栏效应和频率分辨力的意义。

N=32;n=[0:31];

Ts=1./;t=n.*Ts

x=(sin(2.*pi.*6.3.*t)+sin(2.*pi.*9.7.*t)+sin(2.*pi.*15.3.*t)).*u(t)

subplot(321);plot(abs(fft(x,N)));title(' 补零加宽')

subplot(322);plot(t,abs(fft(x)));title('增加截取时间宽度')

N=;n=[0:];

Ts=1./;t=n.*Ts

x=(sin(2.*pi.*6.3.*t)+sin(2.*pi.*9.7.*t)+sin(2.*pi.*15.3.*t)).*u(t)

subplot(323);plot(abs(fft(x,N)));title(' 补零加宽')

subplot(324);plot(t,abs(fft(x)));title('增加截取时间宽度')

N=128;n=[0:128];

Ts=1./;t=n.*Ts

x=(sin(2.*pi.*6.3.*t)+sin(2.*pi.*9.7.*t)+sin(2.*pi.*15.3.*t)).*u(t)

subplot(325);plot(abs(fft(x,N)));title(' 补零加宽')

subplot(326);plot(t,abs(fft(x)));title('增加截取时间宽度')下载本文

显示全文
专题