2

我目前正在将 MATLAB 算法转换为 C,以便在 iOS 应用程序中使用它。

我一直在努力使用 MATLAB 的 xcorr 函数。这是相关的 MATLAB 代码。

xcr = xcorr(A,A,maxlags);

这,根据 MA​​TLAB 文档

返回滞后范围 [-maxlags:maxlags] 上的互相关序列。输出 c 的长度为 2*maxlags+1。

Apple Accelerate.Framework 提供了一个名为的卷积/相关函数vDSP_conv,但我看不到如何使用它来产生与xcorr. 这可能吗 ?如果是的话,任何人都可以帮助我。

最好的祝福,

阿卡乔

4

1 回答 1

4

要复制 MATLAB 的 xcorr 的结果,您需要在向量之前和之后用零填充:

#include <stdio.h>

#include <Accelerate/Accelerate.h>


int main(void)
{
    #define NF  3
    #define NC  (2*NF+1)

    float A[3*NF] = {0, 0, 0, 1, 2, 3, 0, 0, 0};
    float C[NC];

    vDSP_conv(A, 1, A+NF, 1, C, 1, NC, NF);

    for (vDSP_Length i = 0; i < NC; ++i)
        printf("C[%u] = %g.\n", (unsigned) i, C[i]);

    return 0;
}
于 2012-12-11T15:13:20.337 回答