时域与频域信号特性分析——DFT归一化与双边谱合并分析
文章目录
- 时域与频域信号特性分析
- 直流信号与正弦信号的定义
- 直流信号
- 正弦信号
- 归一化功率分析
- 直流信号案例
- 正弦信号案例
- 关键特性对比
- 结论
- DFT归一化与双边谱合并分析
- DFT双边谱特性
- 双边谱合并判断
- 需要合并的情况
- 无需合并的情况
- 算法实现
- 保留双边谱(默认)
- 合并为单边谱
- 数学验证
- 实现注意事项
时域与频域信号特性分析
直流信号与正弦信号的定义
直流信号
时域表现:恒定值信号,例如:
x[n]=1(所有时间点取值为1)x[n] = 1 \quad \text{(所有时间点取值为1)} x[n]=1(所有时间点取值为1)
频域表现:DFT仅在零频率处有非零值:
X[k]={Nk=00k≠0X[k] = \begin{cases} N & k=0 \\ 0 & k \neq 0 \end{cases} X[k]={N0k=0k=0
正弦信号
时域表现:振荡波形,例如:
x[n]=cos(2πfn)x[n] = \cos(2\pi fn) x[n]=cos(2πfn)
频域表现:DFT在正负频率处有峰值:
∣X[f]∣=∣X[−f]∣=N2|X[f]| = |X[-f]| = \frac{N}{2} ∣X[f]∣=∣X[−f]∣=2N
归一化功率分析
直流信号案例
归一化功率=∣X[0]∣2N2=N2N2=1时域功率=1N∑n=0N−1∣x[n]∣2=1\begin{aligned} \text{归一化功率} &= \frac{|X[0]|^2}{N^2} = \frac{N^2}{N^2} = 1 \\ \text{时域功率} &= \frac{1}{N}\sum_{n=0}^{N-1} |x[n]|^2 = 1 \end{aligned} 归一化功率时域功率=N2∣X[0]∣2=N2N2=1=N1n=0∑N−1∣x[n]∣2=1
正弦信号案例
单边功率=∣X[f]∣2N2=(N/2)2N2=14总功率=2×14=12时域功率=1N∑n=0N−1cos2(2πfn)=12\begin{aligned} \text{单边功率} &= \frac{|X[f]|^2}{N^2} = \frac{(N/2)^2}{N^2} = \frac{1}{4} \\ \text{总功率} &= 2 \times \frac{1}{4} = \frac{1}{2} \\ \text{时域功率} &= \frac{1}{N}\sum_{n=0}^{N-1} \cos^2(2\pi fn) = \frac{1}{2} \end{aligned} 单边功率总功率时域功率=N2∣X[f]∣2=N2(N/2)2=41=2×41=21=N1n=0∑N−1cos2(2πfn)=21
关键特性对比
信号类型 | 时域表现 | 频域表现 | 归一化功率(单边) |
---|---|---|---|
直流信号 | x[n]=1x[n]=1x[n]=1 | X[0]=NX[0]=NX[0]=N, 其他为0 | N2N2=1\dfrac{N^2}{N^2} = 1N2N2=1 |
正弦信号 | cos(2πfn)\cos(2\pi fn)cos(2πfn) | X[±f]=N2X[\pm f]=\dfrac{N}{2}X[±f]=2N | (N/2)2N2=14\dfrac{(N/2)^2}{N^2} = \dfrac{1}{4}N2(N/2)2=41 |
结论
- 除以N2N^2N2的归一化对直流信号严格成立(时域幅值1 ⇒ 频域功率1)
- 对正弦信号需考虑双边谱功率叠加(14+14=12\frac{1}{4} + \frac{1}{4} = \frac{1}{2}41+41=21)
- 归一化建立了时域单位幅值与频域功率的直接映射关系
DFT归一化与双边谱合并分析
DFT双边谱特性
对于实数信号的离散傅里叶变换(DFT),其频域结果具有共轭对称性:
X[k]=X∗[−k](负频率分量是正频率的共轭)X[k] = X^*[-k] \quad \text{(负频率分量是正频率的共轭)} X[k]=X∗[−k](负频率分量是正频率的共轭)
其中能量分布在正负频率上,例如正弦波的能量出现在kkk和N−kN-kN−k两个位置。
双边谱合并判断
需要合并的情况
- 分析总功率时需合并正负频率能量
- 物理功率计算要求单边谱表示
无需合并的情况
- 需要观察完整频谱对称性
- 处理复数信号(无双边对称性)
算法实现
保留双边谱(默认)
# 输入: fft为DFT结果,N为信号长度
# 输出: 归一化双边功率谱
normalized_spectra = [np.abs(fft)**2 / (N**2) for fft in spectra]
合并为单边谱
def normalize_to_onesided(fft, N):# 初始化单边谱(取前N/2+1个点)spectrum = np.abs(fft[:N//2 + 1])**2 / (N**2)# 正频率能量乘2(排除直流和Nyquist)spectrum[1:-1] *= 2# 处理直流分量spectrum[0] /= 2# 处理Nyquist频率(当N为偶数)if N % 2 == 0:spectrum[-1] /= 2return spectrum
数学验证
对于时域信号x[n]=cos(2πfn)x[n] = \cos(2\pi f n)x[n]=cos(2πfn):
双边谱峰值=14(在k=f和k=N−f处)单边功率=2×14=12时域平均功率=1N∑n=0N−1∣x[n]∣2=12\begin{aligned} \text{双边谱峰值} &= \frac{1}{4} \quad \text{(在$k=f$和$k=N-f$处)} \\ \text{单边功率} &= 2 \times \frac{1}{4} = \frac{1}{2} \\ \text{时域平均功率} &= \frac{1}{N}\sum_{n=0}^{N-1} |x[n]|^2 = \frac{1}{2} \end{aligned} 双边谱峰值单边功率时域平均功率=41(在k=f和k=N−f处)=2×41=21=N1n=0∑N−1∣x[n]∣2=21
实现注意事项
- 直流分量(k=0k=0k=0)和Nyquist频率(k=N/2k=N/2k=N/2)需单独处理
- 复数信号需采用不同处理逻辑
- 实际应用推荐使用单边谱表示:
P单边[k]={∣X[0]∣2N2k=02∣X[k]∣2N21≤k≤N/2−1∣X[N/2]∣2N2k=N/2(偶数N)P_{\text{单边}}[k] = \begin{cases} \frac{|X[0]|^2}{N^2} & k=0 \\ \frac{2|X[k]|^2}{N^2} & 1 \leq k \leq N/2-1 \\ \frac{|X[N/2]|^2}{N^2} & k=N/2 \text{(偶数N)} \end{cases} P单边[k]=⎩⎨⎧N2∣X[0]∣2N22∣X[k]∣2N2∣X[N/2]∣2k=01≤k≤N/2−1k=N/2(偶数N)