gpt4 book ai didi

c - 如何从 WAV 文件中提取数据用于 FFT

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:44 26 4
gpt4 key购买 nike

我正在寻找一种从 WAV 文件中提取数据的方法,这对我尝试实现的 FFT 算法很有用。到目前为止,我拥有的是左右声道的一堆十六进制值,但我对如何将其转换为 FFT 的时域和频域有些迷茫。

例如,这是我需要的:

3.6 2.6
2.9 6.3
5.6 4.0
4.8 9.1
3.3 0.4
5.9 4.8
5.0 2.6
4.3 4.1

这是接收 FFT 数据的函数原型(prototype):

void fft(int N, double (*x)[2], double (*y)[2])

其中 N 是 FFT 的点数,x 是指向时域样本的指针,y 是指向频域样本的指针。

谢谢!

最佳答案

出于测试目的,您不需要从 WAV 文件中提取波形数据。您可以只在内存中生成一些信号(例如 0、非零常数、正弦波、2 个叠加的正弦波、白噪声),然后在它们上测试您的 FFT 函数,看看您是否得到了您应该得到的信号(0 表示0,非零常数信号在零频率处出现峰值,每个正弦波有 2 个峰值,白噪声在所有频率上均匀非零幅值)。

如果你真的想解析 WAV 文件,请参阅 Wikipedia关于格式(点击链接)。使用原始 PCM 编码或 A/µ-law PCM 编码(又名 G.711)。

FFT 通常使用就地算法实现,这意味着输出替换输入。如果你这样做,你真的不需要第二个指针。

关于c - 如何从 WAV 文件中提取数据用于 FFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9505352/

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