举个例子哈
[32,96,7],傅里叶变换分解出的形状是[32,49,7]
-
每一条时间序列分解成了
-
复数形式 $[a₀+0i, a₁+b₁i, a₂+b₂i, ..., a₄₈+0i]$
-
第一个元素a₀是直流分量(实数)
-
最后一个元素a₄₈是奈奎斯特频率(实数)
-
中间元素是共轭对称的复数
-
-
三角函数形式 $[a_0,a_1\cos{\frac{2\pi}{96}} ]$
$f(t) = a₀/2 + Σ[aₙcos(2πnt/96) + bₙsin(2πnt/96)]$
$n=1,2,3,4,...,48$ 分别代入
$$ f(t) = a₀/2 + \\ a₁cos(2πt/96) + b₁sin(2πt/96) + \\ a₂cos(4πt/96) + b₂sin(4πt/96) + ... +\\ a₄₈cos(96πt/96) $$- 其中n从1到48。
- 这里a₀/2表示直流分量
- 最后一项没有正弦部分,因为sin(nπ)=0,当n为整数时
三角函数形式和复数形式的一一对应
对于一个长度为96的实时间序列,其FFT结果为长度49的复数序列,两种表示形式的一一对应关系如下:
- 直流分量(DC, n=0)
- 复数形式: $a₀+0i$
- 三角函数形式: $a₀$ (不是$2a₀$)
- 对于直流分量,通常不需要乘以系数2,因为它不存在对称性的问题。在重构信号时,直流分量直接加上即可。
- 第1个频率分量(n=1)
- 复数形式: $a₁+b₁i$
- 三角函数形式: $2a₁cos(2πt/96) + 2b₁sin(2πt/96)$
- 第2个频率分量(n=2)
- 复数形式: $a₂+b₂i$
- 三角函数形式: $2a₂cos(4πt/96) + 2 b₂sin(4πt/96)$
- 第3个频率分量(n=3)
- 复数形式: $a₃+b₃i$
- 三角函数形式: $2a₃cos(6πt/96) + 2b₃sin(6πt/96)$
- …
- 第k个频率分量(n=k)
- 复数形式: $a_k+b_ki$
- 三角函数形式: $2a_k\cos(2\pi kt/96) + 2b_k\sin(2\pi kt/96)$
- 系数2来自于实信号傅里叶变换的对称性,因为我们只保留了正频率部分
- …
- 奈奎斯特频率(n=48)
- 复数形式: $a_{48}+0i$
- 三角函数形式: $a_{48}\cos(\pi t)$ (不是$2a_{48}\cos(\pi t)$)
- 对于奈奎斯特频率,也不需要乘以系数2,因为它仅出现一次,没有对称分量。
欧拉公式
$e^{i\theta}= \cos \theta + i \sin \theta$
- $a+bi$
- $Acos\theta + Bcon\theta$
证明: 复数形式 $a+bi$ 与三角函数形式 $A\cos\theta + B\sin\theta$ 的系数
对于复数形式 $a+bi$ 与三角函数形式 $A\cos\theta + B\sin\theta$ 的系数对应关系是:
- $A = 2a$
- $B = -2b$
或反向转换:
- $a = A/2$
- $b = -B/2$
在傅里叶变换中,一个频率分量可以表示为复指数形式: $c \cdot e^{i\omega t}$,其中 $c = a+bi$
步骤1:展开复指数
$(a+bi)(\cos(\omega t) + i\sin(\omega t))$ $= a\cos(\omega t) - b\sin(\omega t) + i(a\sin(\omega t) + b\cos(\omega t))$
步骤2:考虑共轭对称性
对于实信号,每个频率 $\omega$ 都有其共轭对应的频率 $-\omega$:
- 正频率贡献:$(a+bi)e^{i\omega t} = (a+bi)(\cos(\omega t) + i\sin(\omega t))$
- $= a\cos(\omega t) - b\sin(\omega t) + i(a\sin(\omega t) + b\cos(\omega t))$
- 负频率贡献:$(a-bi)e^{-i\omega t} = (a-bi)(\cos(\omega t) - i\sin(\omega t))$
- $= a\cos(\omega t) - b\sin(\omega t) - i(a\sin(\omega t) + b\cos(\omega t))$
步骤3:相加两个贡献
$(a+bi)e^{i\omega t} + (a-bi)e^{-i\omega t} = 2a\cos(\omega t) - 2b\sin(\omega t)$
结论
因此,一个频率分量的复数表示 $a+bi$ 对应的三角函数表示为: $2a\cos(\omega t) - 2b\sin(\omega t)$
也就是说 $A = 2a$ 且 $B = -2b$,证毕。
注意:对于直流分量($\omega=0$)和奈奎斯特频率,因为它们没有共轭对应的频率分量,所以系数不需要乘以2。
–
傅里叶变换的三角函数形式与指数函数形式
1. 三角函数形式
傅里叶级数的三角函数形式表示为:
$$f(t) = \frac{a_0}{2} + \sum_{n=1}^{N/2} [a_n \cos(2\pi nt/T) + b_n \sin(2\pi nt/T)]$$其中:
- $a_0/2$ 是直流分量(序列平均值)
- $a_n$ 是余弦系数
- $b_n$ 是正弦系数
- $T$ 是周期长度
2. 指数函数形式
指数形式利用欧拉公式将傅里叶级数表示为:
$$f(t) = \sum_{n=-N/2}^{N/2-1} c_n e^{i2\pi nt/T}$$其中:
- $c_n$ 是复数系数
- $e^{i2\pi nt/T}$ 是复指数函数
两种形式的转换关系
-
从复数到三角函数:X[n] 表示计算机中存储的复数形式
- $a_0 = \text{Re}(X[0])$
- $a_n = 2\text{Re}(X[n])$ 对于 $1 \leq n < N/2$
- $b_n = -2\text{Im}(X[n])$ 对于 $1 \leq n < N/2$
- $a_{N/2} = \text{Re}(X[N/2])$ (奈奎斯特频率)
-
从三角函数到复数:
- $X[0] = a_0$ (直流分量)
- $X[n] = \frac{a_n - ib_n}{2}$ 对于 $1 \leq n < N/2$
- $X[N/2] = a_{N/2}$ (奈奎斯特频率)
思考 一个频率的表示
96 时间步发现了 24 的周期,
- a+bi 的形式:
- 三角函数形式:
- 复指数形式:
周期为24的频率分量在三种形式下的表示
对于长度为96的时间序列中发现的周期为24的模式,这意味着该频率分量在整个序列中完成了4个完整周期(96/24=4)。以下是这个频率分量在三种不同表示形式下的数学描述:
复数形式(a+bi)
|
|
这是通过torch.fft.rfft(x)
计算得到的第4个频率分量,包含实部a₄和虚部b₄。
三角函数形式
|
|
化简为:
|
|
这里的系数2来自于傅里叶变换的对称性,保证了能量守恒。
复指数形式
|
|
化简为:
|
|
其中:
- c₄ = (a₄-ib₄)/2
- c₍₋₄₎ = (a₄+ib₄)/2
- c₄与c₍₋₄₎是共轭复数
计算机傅里叶变换中a₄+b₄i的计算方法
在TimeMixer中,复数系数a₄+b₄i是通过离散傅里叶变换(DFT)计算得到的,具体来自DFT_series_decomp
类的实现。
计算过程
-
首先,使用PyTorch的FFT函数计算时间序列的频谱:
1
xf = torch.fft.rfft(x)
-
对于具体的复数系数a₄+b₄i(第4个频率分量):
1 2
a₄ = xf[4].real # 复数的实部 b₄ = xf[4].imag # 复数的虚部
-
在物理意义上,这个复数表示:
- a₄是复数结果的实部,对应于三角函数形式中余弦系数的一半
- b₄是复数结果的虚部,对应于三角函数形式中正弦系数的一半且可能有符号变化
对于长度为N的序列x,傅里叶系数计算公式为:
$$X_k = \sum_{n=0}^{N-1} x_n \cdot e^{-i2\pi kn/N}$$对于周期为24的模式(在96点序列中),其主要频率分量将出现在k=4处,因为96/24=4。
$$ a+bi \\ = \sqrt{a^2 + b^2} e^{i {arctan\frac{b}{a}}} \\ = \sqrt{a^2 + b^2}(\cos {(\arctan\frac{b}{a})}+ i \sin {(\arctan\frac{b}{a})} )\\ \cos {(\arctan\frac{b}{a})} = \frac{a}{\sqrt{a^2 + b^2}}\\ \sin {(\arctan\frac{b}{a})} = \frac{b}{\sqrt{a^2 + b^2}} $$emm…还是懵懵ε=ε=ε=(#>д<)ノ