内容发布更新时间 : 2024/11/18 11:46:56星期一 下面是文章的全部内容请认真阅读。
龙源期刊网 http://www.qikan.com.cn
基于MATLAB的FFT离散频谱分析
作者:周盼 甘丽群 刘华超
来源:《电脑知识与技术》2016年第36期
摘要:通过仿真形象揭示了MATLAB上FFT过程中频谱泄漏和栅栏效应现象,重点从理论上分析了其产生原因。针对以上两情况导致的频率和幅值上的误差,介绍了常用的校正方法的原理、推导过程以及运用的局限性。指出了幅值校正过程中所有恢复系数全为[2N]的常见错误。为MATLAB上FFT的理解和应用提供一定的帮助作用。 关键词:MATLAB;FFT;频谱泄漏;栅栏效应;频率幅值校正
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)36-0277-04 Analysis of Discrete Spectrum Based on FFT using MATLAB ZHOU Pan1, GAN Li-qun2 , LIU Hua-chao2
(1. School of Electronic Engineering , Xi'an Shiyou University, Xi'an 710065,China; 2. School of electrical and Information Engineering,Chongqing University of Science and Technology,Chongqing 401331,China)
Abstracts: The phenomenon of spectrum leakage and packet fence effect in the process of fast Fourier transform was revealed through simulation, and the cause of which was analyzed emphatically in theory. Aiming at errors of frequency and amplitude caused by FFT in MATLAB, the principle, derivation and the application limitations of the common correction methods was introduced in detail. The frequent fault which regarded the all recovery coefficients for amplitude correction as [2N] was also pointed out. The paper can provide some help for the understanding and application of FFT.
Key words: MATLAB; FFT; spectrum leakage; fence effect; frequency amplitude correction
信号处理广泛运用于语音图像处理、通信、生物医学等领域,是一门极其重要的学科。随着快速傅里叶变换的诞生,更加倾向于从频域分析采集到信号的信息。由于时域中截断导致的频谱泄漏以及频域的离散化产生的栅栏效应,若采用FFT对信号进行检测,不可避免地存在频率、幅值和相位的误差。然而很多工程实际应用如电力谐波检测、振动信号分析中,需要较准确地测量出信号的频率和幅值。因此深入了解频谱泄露和栅栏效应的产生原因,以及如何对FFT后频率和幅值进行校正具有很大的科研和工程意义。MATLAB作为一款应用方便、功能强大的仿真软件,一直受到广大科研工作者的运用。本文围绕MATLAB上FFT中频谱泄漏和栅栏效应进行了较为全面的介绍,对与其相关的常见问题做了深入分析。
龙源期刊网 http://www.qikan.com.cn
1 频谱泄漏
设周期信号为[x(n)],其表达式为: [x(nΔT)=A0cos(2πf0nΔT+φ0)] (1)
其中[A0]、[f0]、[φ0]、[ΔT]分别为幅值、频率、相位、采样频率,且[ΔT=1fs]。对信号频率进行归一化处理令:
[f0=λ0fsN],[Δf=fsN]为频率分辨率,则信号可表示为: [x(n)=A0cos(2πλ0Nn+φ0), n=0,1,2,...,N-1] (2)
周期信号为无限长,计算机无法对其进行傅里叶变换,因此需对采集到的信号作截断处理。对于MATLAB上的FFT对信号的截断相当于加矩形窗。截断后的信号表示为[xw(n)=w(n)x(n)],[w(n)]为矩形窗。由卷积定理可知[x(n)]的傅里叶变换的幅值为: [Xw(k)=W(k)*X(k)=A02ejφ0W(k-λ0)+A02e-jφ0W(k+λ0)](3) 其中[W(k-λ0)]、[W(k+λ0)]分别为傅里叶变换后的正负频率成分。当[5 [Xw(k)?A02W(k-λ0)] (4)
图1为FFT变换过程中的频谱泄漏示意图。(a)为原始周期信号的时域图,理论上其频谱图上只有在其真实频率[λ0]处才有能量,为一个脉冲信号,如(b)所示;截断函数的时域、频域如(c)(d)所示;截断后的信号如(e)所示,信号的长度由无限长变成了时间T以内。由卷积定理可知,时域的相乘对应频域的卷积,则截断后信号的频谱(f)为(a)(d)的卷积。而任何函数[y(n)]与脉冲函数的卷积,就是脉冲函数处当做坐标原点对[y(n)]进行重构[2]。图(f)即为图(d)在图(a)处的重构,值得注意的是,重构过程中需要把图(d)中所有点的幅值乘以脉冲函数的幅值。通过以上分析可知,截断导致信号的频率泄漏到整个频段,且频谱图为矩形窗的形状。由于不同的窗函数具有不同的主瓣宽度和旁瓣衰减率,实际应用中可根据需要对信号加不同的窗函数,以抑制FFT变换过程中的频谱泄露[3-5]。
2 栅栏效应
对于MATLAB中FFT,式(4)中[k]只能取整数,[k]表示的频率为[kΔf]。信号的实际频率为[f=λfsN],其中:[λ=l+δ],[l]表示整数,[δ]表示小数。当信号的实际频率为[Δf]的整数倍,即整周期采样时,[δ]为0。[λ=5]的FFT后的仿真频谱如图2所示,谱线最高点对应的频率为5,表现出了真实频率。然而实际工程应用很难达到整周期采样,即[δ]不为0。[λ=4.8]的FFT后的仿真频谱如图3所示,谱线最高点对应的频率为5,未能正确表示出信号的真实频
龙源期刊网 http://www.qikan.com.cn
率,此时的FFT变换就带来了误差。两图相比较可看出,信号整周期采样时,除了最高谱线有幅值外,其他谱线幅值均为0;非整周期采样时,所有谱线幅值均不为0。此现象可从理论上解释如下。矩形窗的离散傅里叶变换[6]为: [W(k)=sin(kπ)sin(kπ/N)] (5)
当[k≤0.5]时,[k?N],[kπ/N→0],[sin(kπ/N)?kπ/N],则式(5)可化为: [W(k)=Nsin(kπ)kπ] (6)
将(6)代入(4)中,可得FFT变换后信号的幅值为: [Xw(k)?A0N2sin((k-λ0)π)(k-λ0)π] (7)
因整周期采样时[λ0]为整数,而[k]也为整数,则[k-λ0]全为整数。当[k=λ0]时,利用洛必达法则可得:
[sin(k-λ0)π(k-λ0)π?]1 (8) 此时
[Xw(λ0)?A0N2] (9)
即为信号的真实幅值。当[k≠λ0]时,[sin(k-λ0)π≡0] 此时
[Xw(k)≡0] (10)
非整周期采样时[λ0]为非整数,而[k]为整数,则[k-λ0]全为非整数。此时,对于所有[k],[Xw(k)]全为非0,且[k]不可能等于[λ0],频谱图也表现不出信号的真实频率和幅值。栅栏效应主要是由于频域的离散化造成的,可采取补零的措施减小频域抽样的间距,达到FFT变换后表现的最高谱线更加接近真实谱线的效果。 3 FFT中频谱泄露和栅栏效应产生误差的校正
工程实际中,由于信号的频率未知,很难达到整周期采样,利用FFT将会导致最大为[0.5Δf]频率误差,进而产生幅值误差。而在很多工程领域需要较精确地检测出信号的频率和幅值,因此对FFT变换后的结果进行校正显得非常重要。 3.1 频率误差校正