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引数のうちの 2 つには渡すべきではないようです。

4

0 に答える 0