Ios FFT前应用hamming窗

Ios FFT前应用hamming窗,ios,signal-processing,Ios,Signal Processing,我目前正在使用FFT检测频率。我知道在进行FFT之前需要应用一个窗口,但我不确定如何进行 要应用窗口,具体应该做些什么 我知道malloc正在使用 float * hammingWindow = (float *) malloc(sizeof(float) * numberOfFrames); vDSP_hamm_window(hammingWindow, n, 0); 但我不知道如何从这里开始 当我用args调用vmul时 vDSP_vmul((复数*)输出缓冲区,1,汉明窗口,1,(复数*

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

要应用窗口,具体应该做些什么

我知道malloc正在使用

float * hammingWindow = (float *) malloc(sizeof(float) * numberOfFrames);
vDSP_hamm_window(hammingWindow, n, 0);
但我不知道如何从这里开始

当我用args调用vmul时

vDSP_vmul((复数*)输出缓冲区,1,汉明窗口,1,(复数*)输出缓冲区,1,n)

我得到一个错误,即vDSP_vmul不存在,即使我正在调用其他vDSP方法

我在FFT函数之后调用它

vDSP_zvmags((COMPLEX *)outputBuffer, 1, (COMPLEX *)outputBuffer, 1, bufferCapacity);
我也遇到了同样的问题-
没有匹配的函数来调用vDSP_zvmags


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

您不需要应用窗口来实现此功能,它只需要更好地使用窗口即可。我不知道你正在处理的iOS功能,但这听起来像是链接器的问题,而不是窗口或音调检测的问题。也就是说,我有一个关于音高检测的教程,也许会有帮助:@BjornRoche-谢谢你的帮助。这个主函数到底输出什么?我目前使用Core Audio render callback,并在运行fft之前异步写入文件。这个代码将替换我当前用于访问麦克风数据的所有音频代码,对吗?我不完全理解您的问题,但我的代码从麦克风读取并将估计的音调打印到控制台。IDK if PortAudio(用于从麦克风读取数据)可以在iOS上运行,但大部分代码与平台无关。