如何避免FFT(matlab)计算傅里叶级数与傅里叶变换时存在的混叠(aliasing)和泄露(leakage)问题

本文详细介绍了傅里叶级数、傅里叶变换及其离散形式,特别是针对周期和非周期信号。文章讨论了混叠和泄露现象,指出混叠发生在信号中存在超过奈奎斯特定理频率的高频成分时,而泄露则源于采样时间与信号周期不一致。通过实例展示了采样参数如何影响混叠和泄露,强调了适当选择采样频率和采样时长的重要性。
摘要由CSDN通过智能技术生成


前言

一个动力学信号的描述方式有两种,一种是时间域的描述,另外一种是频率域的描述。在时间域,以时间为横坐标,可以研究信号随时间的变化过程,如速度、加速度。在频域,以频率为横坐标,信号被不同频率的谐波描述,可以研究不同频率下信号幅值的分布。根据信号类型的不同(周期信号,非周期信号,离散信号等),时-频变换关系有所区别,涉及到傅里叶级数(Fourier Series,FS)、傅里叶变换(Fourier Transform,FT)、离散时间的傅里叶变换(discrete-time Fourier Transform,DTFT)等,而这些变换方法本身又有一定的关联。商业计算软件中,最常用的时-频处理方法是快速傅里叶变换方法(Fast Fourier Transform,FFT)。FFT与上述FS、FT和DTFT之间的关系,以及时-频变换中的信号失真问题是本文重点计算的内容。

本文的理论来源于Siu-Kui Au的《Operational Modal Analysis》,感兴趣的可以阅读原版推导。受作者水平所限,部分内容再加工过程中可能出现错误,欢迎批评指正。


1、 周期信号的傅里叶级数

1.1 周期信号的多种傅里叶表示形式

根据傅里叶理论,对于任何周期为T的周期信号 x ( t ) x(t) x(t) 都可以表示为傅里叶级数(Fourier Series,FS)的形式
x ( t ) = a 0 + ∑ k = 1 ∞ a k cos ⁡ ω ˉ k t + ∑ k = 1 ∞ b k sin ⁡ ω ˉ k t        ω ˉ k = 2 π k T (1) x\left(t\right)=a_0+\sum_{k=1}^{\infty}{a_k\cos{ {\bar{\omega}}_kt}}+\sum_{k=1}^{\infty}{b_k\sin{ {\bar{\omega}}_kt}}\ \ \ \ \ \ {\bar{\omega}}_k=\frac{2\pi k}{T} \tag{1} x(t)=a0+k=1akcosωˉkt+k=1bksinωˉkt      ωˉk=T2πk(1)
傅里叶级数表示将周期信号分解为周期为 T / k T/k T/k 的无穷个简谐信号的和,当然也要考虑不随时间变化的常数项。对于特定的周期信号而言有限个简谐响应的和即可完成信号的模拟。
进一步可以将式(1)表示为幅值和相位的形式
x ( t ) = a 0 + ∑ k = 1 ∞ a k 2 + b k 2 cos ⁡ ( ω ˉ k t − ϕ k )     ϕ k = arctan ⁡ b k a k (2) x\left(t\right)=a_0+\sum_{k=1}^{\infty}{\sqrt{a_k^2+b_k^2}\cos{\left({\bar{\omega}}_kt-\phi_k\right)}}\ \ \ \phi_k=\arctan{\frac{b_k}{a_k}} \tag{2} x(t)=a0+k=1ak2+bk2 cos(ωˉktϕk)   ϕk=arctanakbk(2)
利用欧拉公式,可以将式(1)表示为复指数的形式
x ( t ) = c 0 + ∑ k = 1 ∞ c k e i ω ˉ k t + ∑ k = 1 ∞ c − k e − i ω ˉ k t (3) x\left(t\right)=c_0+\sum_{k=1}^{\infty}{c_ke^{i{\bar{\omega}}_kt}}+\sum_{k=1}^{\infty}{c_{-k}e^{-i{\bar{\omega}}_kt}} \tag{3} x(t)=c0+k=1ckeiωˉkt+k=1ckeiωˉkt(3)
进一步简写为
x ( t ) = ∑ k = − ∞ ∞ c k e i ω ˉ k t      ω ˉ k = 2 π k T (4) x\left(t\right)=\sum_{k=-\infty}^{\infty}{c_ke^{i{\bar{\omega}}_kt}}\ \ \ \ {\bar{\omega}}_k=\frac{2\pi k}{T} \tag{4} x(t)=k=ckeiωˉkt    ωˉk=T2πk(4)
复指数形式的傅里叶系数 { c k } k = − ∞ ∞ \left\{c_k\right\}_{k=-\infty}^\infty { ck}k=也是复数,与式(1)的系数关系为
c 0 = a 0   c k = 1 2 ( a k − i b k )   c − k = 1 2 ( a k + i b k ) (5) c_0=a_0 \\\ c_k=\frac{1}{2}(a_k-ib_k) \\\ c_{-k}=\frac{1}{2}(a_k+ib_k) \tag{5} c0=a0 ck=21(akibk) ck=21(ak+ibk)(5)

1.2 周期信号傅里叶级数系数的计算

对式(1)在周期 t ∈ − T / 2 , T / 2 t\in{-T/2,T/2} tT/2,T/2 内积分,可以计算常数 a 0 a_0 a0 。分别对式(1)左右乘以 cos ⁡ ω ˉ k t \cos{ {\bar{\omega}}_kt} cosωˉkt或者 sin ⁡ ω ˉ k t \sin{ {\bar{\omega}}_kt} sinωˉkt ,并结合三角函数的正交性,可以计算系数 a k a_k ak b k b_k bk ,计算结果为
a 0 = 1 T ∫ − T / 2 T / 2 x ( t ) d t   a k = 2 T ∫ − T / 2 T / 2 x ( t ) cos ⁡ ω ˉ k t d t   b k = 2 T ∫ − T / 2 T / 2 x ( t ) sin ⁡ ω ˉ k t d t (6) a_0=\frac{1}{T}\int_{-T/2}^{T/2}{x(t)dt}\\\ a_k=\frac{2}{T}\int_{-T/2}^{T/2}{x(t)\cos{ {\bar{\omega}}_kt}dt}\\\ b_k=\frac{2}{T}\int_{-T/2}^{T/2}{x(t)\sin{ {\bar{\omega}}_kt}dt} \tag{6} a0=T1T/2T/2x(t)dt ak=T2T/2T/2x(t)cosωˉktdt bk=T2T/2T/2x(t)sinωˉktdt(6)
通过式(5-6)可以计算得到
c k = 1 T ∫ − T / 2 T / 2 x ( t ) e − i ω ˉ k t d t (7) c_k=\frac{1}{T}\int_{-T/2}^{T/2}{x(t)e^{-i{\bar{\omega}}_kt}dt}\tag{7} ck=T1T/2T/2x(t)eiωˉktdt(7)
另外系数 c_k 具有共轭对称的性质即
c − k = c ˉ k (8) c_{-k}={\bar{c}}_k \tag{8} ck=cˉk(8)
其中 x ˉ {\bar{x}} xˉ 表示取共轭。
1.3 周期信号的Parseval能量等式
根据Parseval能量等式,信号的时域和频域应该具有相同能量。对于周期信号而言,在一个周期内其信号的能力是有限的,即 ∫ − T / 2 T / 2 x 2 ( t ) d t < ∞ \int_{-T/2}^{T/2}{x^2(t)dt}<\infty T/2T/2x2(t)dt< 。其时-频域的能量等式为
1 T ∫ − T / 2 T / 2 x 2 ( t ) d t = a 0 2 + 1 2 ∑ k = 1 ∞ ( a k 2 + b k 2 ) = ∑ k = − ∞ ∞ ∣ c k ∣ 2 (9) \frac{1}{T}\int_{-T/2}^{T/2}{x^2(t)dt}=a_0^2+\frac{1}{2}\sum_{k=1}^{\infty}{(a_k^2+b_k^2)}=\sum_{k=-\infty}^{\infty}\left|c_k\right|^2\tag{9} T1T/2T/2x2(t)dt=a02+21k=1(ak2+bk2)=k=<

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值