离散傅里叶变换 (DFT) - 三角函数表示法

这是我们正在进行的时间序列频谱分析系列教程的第二篇。在本篇中,我们将继续讨论 Excel 中的离散傅里叶变换、其解释以及在时域中的应用。

DFT 基本上是一种数学变换,可能有点枯燥,但我们希望本教程能让您通过使用 NumXL 函数和向导加深理解和直观感受。

背景介绍

自从我们发布第一个关于 DFT 的条目以来,已经收到了一些询问,特别是关于使用 DFT 组件将输入数据集表示为三角正余弦函数之和的问题。这些询问的动机是使用这种表示法来内插中间值,并可能外推(又称预测)输入数据集之外的值。

原则上,DFT 将一组离散的观测值转换成一系列连续的三角函数(即正弦和余弦)。因此,原始信号可以表示为

$$x(t)=\frac{1}{N}\left ( A_o+\sum_{i=1}^N A_i\times cos(\omega\times i \times t + \phi_i)\right )$$

地点:

  • $x(t)$ 是观测值在时间 $t$.
  • $t$ 是进行观测的离散时间。
  • $t \in \left \{ 0,1,2 \cdots N-1 \right \}$.
  • $N$ 是输入数据集中的观测数据个数。
  • $\omega = \frac{2\pi}{N}$ 是基频或主频。
  • $A_i\angle \phi_i$ 是第i个离散傅里叶分量的振幅和相位。

分析

通过观察有限级数的傅立叶变换分量(即振幅和相位),我们可以发现以下几点:

DFT 振幅图,显示围绕 T/2 的对称性和长度等于 T 的周期。

OR
$A_k\angle \phi_k = A_{N-k}\angle -\phi_{N-k}$
$A_k\angle \phi_k = A_{N+k}\angle \phi_{N+k}$

 

  1. 振幅序列在$N/2$分量处对称。
  2. $k$ 分量的相位是 $N-k$ 分量的负值。

实质上,我们只需要 DFT 分量的前半部分就能恢复原始输入数据集。原始时间由以下分量表示:

$$x(t)=\frac{1}{N}\left( A_o+2\times\sum_{i=1}^{N/2} A_i\times cos(\omega\times i \times t + \phi_i)\right)$$

证明

$$x(t)=\frac{1}{N}\left( A_o+\sum_{i=1}^{N/2} A_i\times cos(\omega\times i \times t + \phi_i) +\sum_{i=N/2+1}^N A_i\times cos(\omega\times i \times t + \phi_i) \right)$$ $$x(t)=\frac{1}{N}\left( A_o+\sum_{i=1}^{N/2} A_i\times cos(\omega\times i \times t + \phi_i) +\sum_{i=N/2+1}^N A_{N-i}\times cos(\omega\times i \times t - \phi_{N-i}) \right)$$ $$x(t)=\frac{1}{N}\left( A_o+\sum_{i=1}^{N/2} A_i\times cos(\omega\times i \times t + \phi_i) +\sum_{i=1}^{N/2} A_i\times cos(\omega\times (N-i) \times t - \phi_i) \right)$$ $$x(t)=\frac{1}{N}\left( A_o+\sum_{i=1}^{N/2} A_i\times cos(\omega\times i \times t + \phi_i) + A_i\times cos(\omega\times (N-i) \times t - \phi_i) \right)$$ $$x(t)=\frac{1}{N}\left( A_o+\sum_{i=1}^{N/2} A_i\times cos(\omega\times i \times t + \phi_i) + A_i\times cos(2\pi\times t -(\omega\times i \times t + \phi_i)) \right)$$ $$x(t)=\frac{1}{N}\left( A_o + 2\times \sum_{i=1}^{N/2} A_i\times cos(\omega\times i \times t + \phi_i)\right)$$

重要提示:对于大小相同的输入数据集,最后一个DFT分量无需乘以2。因此,输入数据的余弦表示形式如下:

$$x(t)=\frac{1}{N}\left( A_o + 2\times \sum_{i=1}^{N/2-1} A_i\times cos(\omega\times i \times t + \phi_i)+ A_{N/2}\times cos(\omega\times \frac{N}{2} \times t + \phi_{N/2})\right)$$ $$x(t)=\frac{1}{N}\left( A_o + 2\times \sum_{i=1}^{N/2-1} A_i\times cos(\omega\times i \times t + \phi_i)+ A_{N/2}\times cos(\pi \times t + \phi_{N/2})\right)$$ $$x(t)=\frac{1}{N}\left( A_o + 2\times \sum_{i=1}^{N/2-1} A_i\times cos(\omega\times i \times t + \phi_i)+ A_{N/2}\times cos(\phi_{N/2})cos(\pi \times t)\right)$$

结论

利用离散傅里叶变换,我们将离散输入数据集表示为确定的连续三角函数之和。

原始数据定义在离散的时间实例上,而傅立叶表示法与之不同,它是连续的,因此定义在所有时间值上。利用这种连续表示法,我们可以对这一范围内的任何值进行插值(但不能用于外推/预测)。

  附件

评论

文章评论已关闭。

这篇文章有帮助吗?
4 人中有 3 人觉得有帮助