使用Accelerate框架执行FFT
有几行代码可以利用,这很难整合到iOS中。我想用新的替换它 中有一个成员变量:使用Accelerate框架执行FFT,c,C,有几行代码可以利用,这很难整合到iOS中。我想用新的替换它 中有一个成员变量: fftwf\u计划fftplan 然后在中有两种malloc方法: odsbuf->windoweddata = (float*) fftwf_malloc(framesizebytes); odsbuf->fftbuf = (float*) fftwf_malloc(framesizebytes); 实例化fftplan odsbuf->fftplan = fftwf_plan_
fftwf\u计划fftplan代码>
然后在中有两种malloc方法:
odsbuf->windoweddata = (float*) fftwf_malloc(framesizebytes);
odsbuf->fftbuf = (float*) fftwf_malloc(framesizebytes);
实例化fftplan
odsbuf->fftplan = fftwf_plan_r2r_1d(ods->fftsize, odsbuf->windoweddata, odsbuf->fftbuf, FFTW_R2HC, FFTW_ESTIMATE);
释放内存的方法:
void onsetsds_destroy_audiodata(OnsetsDSAudioBuf *odsbuf){
// take down the FFTW stuff
fftwf_destroy_plan(odsbuf->fftplan);
// free mem
free(odsbuf->data);
free(odsbuf->window);
fftwf_free(odsbuf->windoweddata);
fftwf_free(odsbuf->fftbuf);
}
最后是实际执行FFT的方法:
fftwf_execute(odsbuf->fftplan);
我对C和FFTs的了解非常有限。任何能让我朝着正确方向前进的建议都将不胜感激 你不明白的是什么?如果你想知道FFT是如何工作的,维基百科的文章可能就足够了。如果您想了解这个特定的实现是如何工作的,您可能必须使用源代码。@HonkyTonk它只是不清楚。我假设我需要对音频缓冲区进行FFT,但我很难在原始库中找到它们是如何进行的。读取要分析的数据,将其放入分配的缓冲区,进行FFT调用,完成。还是我遗漏了什么?调用FFT函数的结果很可能存储在fftwf_plan
结构中,但您需要了解其格式。此处的热门话题: