我使用 libsndfile 库打开了 wav 文件,想要读取该文件并获取 FFT 中的 N 个点,并获取时域样本并计算 FFT。
有什么想法可以用 libsndfile 库中的函数替换 fscanf 吗? 这是代码行:
for(i=0; i < N; i++) fscanf(fs, "%lg%lg", &x[i][0], &x[i][1]);
所以,问题是我不知道如何使用 wav。没有 libsndfile 以及如何使用 libsndfile 实现一些东西。
谢谢, a.
最佳答案
你说你想阅读 N 个样本,然后你就这么做了:
for(i=0; i < N; i++) fscanf(fs, "%lg%lg", &x[i][0], &x[i][1]);
所以你正在阅读 2 * N 个样本,但我不确定为什么。
如果您获取 libsndfile 源代码 tarball,则示例/目录中有示例程序。基本上你会这样做:
SNDFILE * sf ;
SF_INFO info ;
double array [N] ;
memset (&info, 0, sizeof (info));
if ((sf = sf_open (filename, SFM_READ, &info)) == NULL)
handle_error () ;
sf_read_double (sf, array, N) ;
sf_close (sf) ;
此代码假设您的文件是单声道(只有一个 channel )。
关于c - 如何用 libsndfile 库中的函数替换 fscanf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5649960/