1. 离散傅里叶变换 (DFT) 基本概念
离散傅里叶变换(DFT)是一种将时域信号转换为频域信号的工具。对于一个长度为 N 的离散信号 x ( n ) x(n) x(n)( n = 0 , 1 , 2 , … , N − 1 n = 0, 1, 2, \dots, N-1 n=0,1,2,…,N−1),其 DFT 定义为:
X ( k ) = ∑ n = 0 N − 1 x ( n ) ⋅ e − j 2 π N k n , k = 0 , 1 , 2 , … , N − 1 X(k) = \sum_{n=0}^{N-1} x(n) \cdot e^{-j \frac{2\pi}{N} k n}, \quad k = 0, 1, 2, \dots, N-1 X(k)=n=0∑N−1x(n)⋅e−jN2πkn,k=0,1,2,…,N−1
其中, X ( k ) X(k) X(k) 是频域上的第 k k k 个频率分量。
2. N = 128 的双重意义
N = 128 在 DFT 中有两个主要含义:
-
时域采样点数:
- 表示时域信号 x ( n ) x(n) x(n) 的长度为 128 个样本点。
- 在您的例子中,窗口函数 w ( n ) w(n) w(n) 也是长度为 128 个样本点的矩形窗,即 w ( n ) = 1 w(n) = 1 w(n)=1 对于 0 ≤ n < 128 0 \leq n < 128 0≤n<128,其余为 0。
-
频域频率分量数:
- DFT 将这 128 个时域样本点转换为 128 个频域频率分量(频率桶)。
- 每个频率分量对应一个特定的角频率
ω
k
\omega_k
ωk,其计算公式为:
ω k = 2 π k N = 2 π k 128 = π k 64 , k = 0 , 1 , 2 , … , 127 \omega_k = \frac{2\pi k}{N} = \frac{2\pi k}{128} = \frac{\pi k}{64}, \quad k = 0, 1, 2, \dots, 127 ωk=N2πk=1282πk=64πk,k=0,1,2,…,127
3. 频率分量的解释
频率分量(Frequency Bins) 表示信号在不同频率上的成分。具体来说:
- 频率分量 X ( k ) X(k) X(k) 表示信号中存在的第 k k k 个频率成分的幅度和相位。
- 由于 DFT 的周期性,频率分量在 k k k 和 N − k N - k N−k 处是共轭对称的,即 X ( k ) = X ∗ ( N − k ) X(k) = X^*(N - k) X(k)=X∗(N−k),这反映了实数时域信号的频域对称性。
4. 为什么 N=128 导致 128 个频率分量
DFT 的一个基本性质是,输入的 N 个时域样本点会被转换为 N 个频域分量。这是因为:
- 线性代数角度: DFT 可以视为一个 N × N N \times N N×N 的线性变换矩阵,每个输出频域分量 X ( k ) X(k) X(k) 都是输入时域样本的线性组合。
- 频率解析度: 每个频率分量对应的角频率间隔为 Δ ω = 2 π N \Delta\omega = \frac{2\pi}{N} Δω=N2π,确保覆盖整个 0 0 0 到 2 π 2\pi 2π 的频率范围。
5. 频域频率分量的具体分布
对于 N=128 的 DFT,频率分量 ω k \omega_k ωk 分布如下:
ω k = π k 64 , k = 0 , 1 , 2 , … , 127 \omega_k = \frac{\pi k}{64}, \quad k = 0, 1, 2, \dots, 127 ωk=64πk,k=0,1,2,…,127
这意味着:
- k = 0 k = 0 k=0: 对应直流分量(DC Component),即信号的平均值。
- k = 1 k = 1 k=1 到 k = 63 k = 63 k=63: 对应正频率分量,从 π 64 \frac{\pi}{64} 64π 到 63 π 64 \frac{63\pi}{64} 6463π。
- k = 64 k = 64 k=64: 对应奈奎斯特频率(Nyquist Frequency),即 π \pi π radians/sample。
- k = 65 k = 65 k=65 到 k = 127 k = 127 k=127: 对应负频率分量,具体为 k − 128 k - 128 k−128 的频率,例如 k = 65 k = 65 k=65 对应 − 63 π 64 -\frac{63\pi}{64} −6463π,依此类推。
6. 您的具体例子分析
在您的例子中:
-
输入信号频率:
ω 0 = π 32 radians per sample \omega_0 = \frac{\pi}{32} \text{ radians per sample} ω0=32π radians per sample -
DFT 频率桶:
ω k = π k 64 , k = 0 , 1 , 2 , … , 127 \omega_k = \frac{\pi k}{64}, \quad k = 0, 1, 2, \dots, 127 ωk=64πk,k=0,1,2,…,127 -
频率对齐:
为了使输入信号的频率与某个 DFT 频率桶对齐,需要满足:
ω k = ω 0 ⟹ π k 64 = π 32 ⟹ k = 2 \omega_k = \omega_0 \implies \frac{\pi k}{64} = \frac{\pi}{32} \implies k = 2 ωk=ω0⟹64πk=32π⟹k=2这意味着,输入信号的频率正好对应于 k = 2 k = 2 k=2 的频率桶。因此,DFT 结果中只有 k = 2 k = 2 k=2 和 k = 126 k = 126 k=126(对应负频率) 的频率分量会有非零值,而其他频率分量将为零。这确保了没有频谱泄漏,信号的频率成分被准确捕捉。
7. 总结
- N=128 表示在时域上选取了 128 个样本点进行 DFT 计算,同时 DFT 结果包含 128 个频率分量,覆盖从 0 0 0 到 2 π 2\pi 2π radians/sample 的整个频率范围。
- 在您的例子中,由于信号频率与 DFT 频率桶 完美对齐,DFT 结果中只有对应的频率分量有非零值,显示出窗口化操作没有引入频谱泄漏。