我目前正在使用 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
不应该为两个参数传递。