如何对变化的信号进行傅里叶变换?

信息处理 傅里叶变换 声音的
2022-02-02 12:41:40

傅里叶变换用于将周期信号拆分为频率,并计算每个频率的相位和偏移。但是,如果我们想录制一个正在发生变化的音频,例如,因为有人开始使用新乐器演奏,该怎么办?

我知道如果记录是 44100 Hz,那么我们每秒记录 44100 个样本。但是它是如何进行傅里叶变换的呢?我能想到的唯一方法是将一秒分为 25 段,我们进行转换以获得每个段中每个频率的相位和偏移。

3个回答

你是对的,它经常被分解成块。有多种方法可以组合这些块(谷歌:fft 重叠保存)。

对数据进行窗口化通常很重要(再次谷歌:汉明窗口 fft)。这样做的一个关键原因是你问题的核心:fft 假设你喂给它的块在时间上无限地向前和向后。显然,音频文件不具有此属性。

对于您的示例,您可能希望将音频文件分块为 2 的幂组,例如 1024、2048 或 4096。

警告。傅里叶变换还将非周期性信号转换为频谱频率。即使输入发生变化,它也会通过在结果中添加边带来执行相同的操作。

傅里叶变换是一种理论结构。它不关心周期性。如果您有一个变化的信号,您可以将其正弦分量视为“载波”,将包络视为“信号”,傅里叶变换将是载波变换的卷积(通常只是载波处的一对狄拉克脉冲频率)和包络的傅里叶变换。

现在,包络通常作为时间序列比在频率空间中更重要。它的变化速度也比载波振荡低得多。

因此,使用短期傅里叶变换进行分析通常是有意义的。在假设包络变化与窗口长度相比很少的情况下,它们擅长检测瞬时包络值的载波。有限的时间窗口也限制了您的频率分辨率:重叠和窗口用于获取大部分数据。

现在高频载波可以比低频载波更好地反映包络变化(或者更确切地说:频率差异可以更大,需要更短的时间来区分不同的频率):这使得多尺度分析很有吸引力,然后我们就不行了更长时间地谈论用于时频分析的短期傅立叶变换,以分离频率和包络。