信号的谐波失真
01 方波的谐波失真
一、谐波失真
对于周期信号, 除非是纯粹的正弦波形, 如果出现失真, 那么就会出现很多谐波。 在数学上可以通过傅里叶变换得到各个谐波的幅值。 定义周期信号的谐波失真, 实际上就是将除了基波之外的谐波进行叠加, 得到等效的有效值, 然后除以基波的有效值。 这样就可以得到失真的程度。 可以取对数之后乘以20, 使用dB 来表示。 基波通常是信号频谱中所有谐波对应频率的公约数。 其他谐波的频率都是基波的整数倍数。 总谐波失真可以将所有谐波幅度进行平方叠加之后, 除以基波的幅度来计算。 如果信号中还存在这其它非谐波噪声, 这样可以得到信号中谐波噪声总失真。
二、典型信号谐波失真
1、方波的谐波失真
对于一个对称方波信号, 根据傅里叶级数分解, 可以得到它的谐波幅度。 可以看到, 它只具有奇次谐波, 所以这个信号也被称为奇谐信号。 根据谐波失真公式, 它对应的总谐波失真约为 0.483。 如果只计算它的三次谐波和五次谐波失真, 则对应失真大约为0.3887。 这是理论计算出的谐波失真结果。
2、对称三角波谐波失真
改变一个波形, 对于连续对称三角波, 它的谐波幅度随着谐波分量的平方衰减, 它同样也是一个奇谐信号。 因为谐波衰减比较快, 所以对应的总谐波失真只有0.12115。 三次和五次谐波失真为 0.118。
from headm import *
V = 0
for i in range(10000):
v = 1/(2*(1+i)+1)
V += v**4
printf(sqrt(V))
三、数值仿真
▲ 图1.3.1 50Hz方波信号,10k数据对应的波形
▲ 图1.3.2 2000Hz 以内的谐波分量
这是一个50Hz,一秒之内的方波数据。 采样频率为 10kHz。 使用FFT计算出它的频谱。 通过程序, 计算对应的谐波失真。 最后, 得到谐波失真为 0.4834, 这与前面理论计算值是一样的。
四、不同频率对应的谐波失真
将信号的频率, 从 5Hz变化到250Hz, 使用相同的方法, 计算出信号的频谱。 绘制出不同频率下方波的谐波失真。 可以看到计算结果出现了比较大的误差, 特别是在低频的时候, 谐波失真变化从 0.47 到 0.49, 与理论计算的谐波失真出现了比较大的误差。 为了改善谐波失真出现的仿真误差, 使用升余弦窗口对于数据进行加窗。 得到的谐波失真误差就非常小了。 请关注 一下, 计算数值变化范围是非常小的。 由此, 说明对数据进行加窗, 对于提高频谱分析的精度是非常重要的。
▲ 图1.4.1 从5Hz变化到250Hz的方波信号
▲ 图1.4.2 不同频率方波的频谱

▲ 图1.4.3 计算信号的谐波失真
▲ 图1.4.4 添加升余弦窗口之后的信号数据波形
▲ 图1.4.5 添加升余弦窗口之后计算的结果
※ 总 结 ※
本文通过数值仿真的方法计算了方波信号的谐波失真。 使用数据加窗可以提高计算谐波失真的精度。
■ 相关文献链接:
● 相关图表链接: