我正在尝试理解 FFT 和二进制数据。
假设我有一系列随机二进制数据,以 400Hz 的重复率(间隔时间为 0.0025s)测量。我总共有 12489 个点,对应的总测量时间约为 31 秒。
我希望能够更多地了解我期望这些数据的 FFT 是什么样子。
我想了解一些事情的重要性:
- FFT 后数据的平均幅度应该是多少?
- 不是随机的,而是由 1,0,1,0,1,0 个数据(12489 个点)组成的二进制数据的最大幅度的意义是什么。这如何帮助我找到我的 y 尺度?
我正在尝试理解 FFT 和二进制数据。
假设我有一系列随机二进制数据,以 400Hz 的重复率(间隔时间为 0.0025s)测量。我总共有 12489 个点,对应的总测量时间约为 31 秒。
我希望能够更多地了解我期望这些数据的 FFT 是什么样子。
我想了解一些事情的重要性:
我自己也有类似的问题,所以我创建了一个 html 演示来测试它。
我认为您可能会发现它有助于理解 FFT 实际在做什么,因为您还可以阅读和编辑源代码。
https://seanwasere.gitlab.io/FFTBinary
该演示正在对二进制数据进行 FFT 分析。1 和 0
在我的演示中,我有 1024 位,我将它们转换为 8 位 wav,然后使用浏览器内置的音频 api fft 分析功能对其进行分析。Firefox 浏览器在我的情况下效果最好。
8位wav是
在用户界面中有 4 个面板
源代码是 MIT,因此您可以使用它。
首先:当您实际上是指DFT (离散傅里叶变换)时,不要说 FFT (FFT 只是一种有效计算 DFT 的算法)。
第二:随机数据的傅里叶变换(随机过程)很难使用/解释。您应该首先尝试了解确定性数据的 DFT。
第三:在大多数典型应用中,您不会对“完整信号”(12489 个样本=31 秒)进行傅里叶变换,而是将其分割为短“帧”并获取每帧的 DTF。
FFT 后数据的平均幅度应该是多少?
您必须记住,DFT 不是真实的,而是一个复杂的信号。如果您只对大小感兴趣,当然您可以取它的(平方)绝对值。现在,如果信号是随机的,这相当于得到一个周期图,它是 对信号频谱密度的估计。随机信号的“频谱”(非随机)是傅立叶变换,不是信号本身的,而是自相关函数的。非正式地,它测量信号在每个频带中具有多少“能量”。
所以,你的问题的答案并不简单。唯一可以提供帮助的简单属性是Parseval 定理:这表示频谱图的均方值等于信号的均方值(“总能量”),经过适当归一化。
另一个属性(对于确定性信号)是 DFT 的零频率值是信号的平均值,经过适当归一化。
不是随机的,而是由 1,0,1,0,1,0 个数据(12489 个点)组成的二进制数据的最大幅度的意义是什么。
这样的信号几乎所有的能量都在最高频率(加上一个零频率分量,由其平均值 = 1/2 给出。因此,除了频率零和 k = N / 2(对应于最大频率)。
输出将取决于创建二进制点的随机定律的确切类型。
对于采样信号的平均和最大幅度,您可以应用Parseval 的恒等式,该恒等式表明输入信号的能量被保留(在一维中高达 $2 π 常数因子)。在分析中只有一个非零频率的情况下获得最大峰值。 constant factor in 1D). The maximum peak is obtained in the case where there is only one non-null frequency in the analysis.
在数据是随机的一般情况下,Wiener-Khinchin 定理告诉您功率谱的幅度应该是多少,因为它是自相关函数。
在您的情况下,数据本质上是以 400 Hz 采样的 200 Hz 正弦曲线,即: $$ x[n] = x(n T_s) = 0.5\cos(2\pi (200)t) + 0.5 \bigg|_ {t = n T_s} = 0.5\cos(\pi n) + 0.5 $$
在这种情况下,您将在频谱中看到一个直流分量 (0 Hz) 和一个 200 Hz 分量。
直流分量的幅度将为 12489/2,因为您只是将 0.5 与 12489 相加。观察到的 200 Hz 分量的幅度将取决于 FFT 长度。如果将零填充到大于 12489 的偶数,则 200 Hz 分量的高度也将为 12489/2。