2

私は現在、iOSアプリケーションで使用するためにMATLABアルゴリズムをCに変換しているところです。

私はMATLABのxcorr関数に苦労してきました。関連するMATLABコードは次のとおりです。

xcr = xcorr(A,A,maxlags);

これは、MATLABのドキュメントによると

ラグ範囲[-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 に答える