使用Accelerate框架执行FFT

使用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_

有几行代码可以利用,这很难整合到iOS中。我想用新的替换它

中有一个成员变量:

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
结构中,但您需要了解其格式。此处的热门话题: