3

我目前正在使用 FFT 检测频率。我知道在执行 FFT 之前我需要应用一个窗口,但我不确定如何执行此操作。

究竟应该做什么来应用一个窗口。

我 malloc 正在使用

float * hammingWindow = (float *) malloc(sizeof(float) * numberOfFrames);
vDSP_hamm_window(hammingWindow, n, 0);

但我不确定如何从这里开始。

当我用我的参数调用 vmul

vDSP_vmul((COMPLEX*)outputBuffer, 1, hammingWindow, 1, (COMPLEX*)outputBuffer, 1, n);

即使我正在调用其他 vDSP 方法,我也会收到 vDSP_vmul 不存在的错误。

我在我的 FFT 函数之后调用它

vDSP_zvmags((COMPLEX *)outputBuffer, 1, (COMPLEX *)outputBuffer, 1, bufferCapacity);

我遇到了同样的问题-No matching function for call to vDSP_zvmags

我究竟做错了什么?我的论点不正确吗?看起来(COMPLEX *)outputBuffer不应该为两个参数传递。

4

0 回答 0