gpt4 book ai didi

audio - 为什么啁啾频率的微小变化会导致快速傅立叶变换输出的重大变化?

转载 作者:行者123 更新时间:2023-12-01 04:24:58 26 4
gpt4 key购买 nike

使用 Audacity,我生成并导出了两个非常相似的 1 秒啁啾声。一个频率为440.00Hz,另一个频率为440.01Hz。

使用 Julia,我编写了一个简短的脚本来生成 FFT 图:

using WAV
using FFTW
using PyPlot

data, bps = wavread("440.01hz.wav")
plot(fft(data))

440.01 图看起来与我预期的差不多,在那个频率有一个很大的尖峰:
Spike at around 440
然而,在精确的整数 440 文件上重复相同的过程产生了这个结果:
Squiggle line
一条非常参差不齐的线,没有尖刺。缩小它看起来像这样(x 轴变为 44100,因为这是文件的每秒节拍数):
Wild graph
我已经用更多的频率重复了这个过程,当频率为非整数时,它似乎总是产生一个好的(合理的?)结果,否则会产生一个令人困惑的结果。我在这里遇到什么问题?

编辑:

以下是文件:

440.00Hz http://www.mediafire.com/file/n6erdh3tkzslpro/440.00hz.wav/file

440.01Hz http://www.mediafire.com/file/2au05df2aelmn9o/440.01hz.wav/file

这是两个波(几乎无法区分)的图,两个 fft 都放大了:

enter image description here

并缩小:

enter image description here

用于生成这些的代码与上面的代码相同,但有 4 个图(440 WAV、440 FFT、440.01 WAV、440.01 FFT)。

编辑2:

我至少发现了部分问题。如果我在绘制之前首先将 440.00hz wav 的傅立叶变换传递给绝对值函数 plot(fft(data) .|> abs) ,我得到一个正确的结果:

enter image description here

所以我现在知道问题的解决方案,但不知道该解决方案为何有效。问题仍然存在:生成没有尖峰的图形的整数频率是什么?或者,同样有效,为什么分数频率会用它们生成图形?

最佳答案

(真实)FFT 将您的信号分解为正弦分量的总和。

对于每个频率,您都会得到一个复数。 (暂时忽略负频率)实部给出余弦分量,虚部给出正弦分量。

您正在制作一个包含正弦波的 .wav 文件,因此您只能获得正弦分量,但您正在绘制实际分量,因此它们都是 0。

除了... FFT 认为您的信号是周期性的。当您使用任意频率时,您不会在文件中得到整数个周期,因此当它从结尾到开头环绕时存在不连续性。

由于在这种情况下您的信号不是完美的正弦曲线,因此您会在余弦分量中获得一些能量。

——

你用这个 FFT 做的事情可能与你想要做的相差甚远。如果您询问有关如何做您真正想做的事情的问题,我们或许可以提供帮助。

关于audio - 为什么啁啾频率的微小变化会导致快速傅立叶变换输出的重大变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59206586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com