我不明白谐波,为什么会发生?

信息处理 fft
2022-01-30 08:28:52

我不明白为什么信号中会出现谐波。因此,如果我收到一个 10 Hz 的时域正弦信号并对其进行 FFT,我将观察到 10 Hz、20 Hz、30 Hz 等处的峰值......幅度减小,但为什么呢?它不应该是 10 Hz 的一个峰值吗?

例如,如果我要用这个频率图合成时域信号,我现在不会有一个 10 赫兹、20 赫兹、30 赫兹等的正弦波加在一起,而它应该只是一个 10 的正弦波赫兹?

也许我的问题措辞不正确,但希望有人可以尝试理解并引导我找到一些资源,以帮助我理解泛音...

3个回答

这里对谐波一词有两种解释

第一个是指周期信号的傅里叶级数展开x(t)有一个基本时期T0秒和基频f0=1/T0以赫兹为单位。

在此表示中,频率为f0,2f0,3f0,... 假设组成(总结)一个给定的周期波形,其基频为f0. 调和族具有每个成员也与基本周期呈周期性的性质T0. 因此,如果假设和中存在非谐波频率正弦波,则违反所有正弦波的线性组合和也必须是周期性的事实T0. 所以只有调和族满足这个条件。每个谐波成员的特定权重取决于部分信号波形,对于正弦波,仅存在其自身频率的谐波;这是单个正弦波的基础。

第二种解释是,给定一个纯正弦波,如果你用一个非线性设备处理这个信号,那么它将在输出端添加这个正弦波的谐波。而输入频率的这些谐波来自非线性运算的数学表达式。根据非线性类型(或过程类型),它们也可能产生非谐波贡献。

当您对 FFT 的输入不是纯未调制的正弦波时,就会“发生”谐波。

输入波形生成中的任何意外失真(与 sin(wt) + cos(wt) 的混合完全相同)都可能是 FFT 结果中出现谐波的原因(高于本底噪声和任何窗口伪影)。

需要这些谐波来表示周期信号和相同频率的完美正弦波之间的任何差异的能量。如果不存在谐波,则不会有任何差异(假设整数周期输入),因为 FFT 的单个结果箱只能表示纯正弦曲线。

如果您从 10Hz 正弦波开始,进行 FFT 并看到谐波,那是因为 FFT 是在固定大小的样本块(通常是 2 的幂)上运行的,而这恰好不是波的周期。如果你有一个 48KHz 的采样率,那么每个周期有 4800 个样本,所以傅立叶变换必须是 4800 个样本的倍数才能产生完美的结果。

您必须记住,傅里叶变换假设它正在操作的样本块是无限重复的。如果您对 65536 个样本进行 FFT,那么您将有 13.6533333 个周期,并且在重复时会出现很大的不连续性。

如果您的傅立叶变换长度与信号频率无关,那么您总会有一些杂散谐波。这通常通过“窗口化”信号来处理,将其乘以从零开始的某个值,在 FFT 输入的中途上升到 1,然后在结束时斜坡回零。升余弦形状是窗户的不错选择。这会衰减那些杂散谐波,但没有什么能消除它们,除了有一个输入周期均匀地划分为 FFT 周期。