0

時間領域に 2 つの波形があり、MATLABで相互相関係数を測定する必要があります。試してみmax(abs(xcorr(m,n,'coeff')))ましたが、正しく動作していないようです。

また、波形のさまざまなセクションの相互相関係数を測定する必要があります。たとえば、1 分間隔で相互相関係数を測定します。可能であれば、これらの値をマトリックスなどに出力します。

質問がたくさんあることは承知していますが、私は MATLAB の初心者であり、この作業は気が遠くなるようなものです。
この質問のどのセクションでも、あなたが私に与えることができるどんな助けもありがたく受け取られます.


編集: これは、相関コードをテストするために使用したコードです:

x = rand(1,14400);
y = rand(1,14400);
r = max( abs(xcorr(x,y,'coeff')) )
4

4 に答える 4

5

この記事の方程式によると、次の方法で相互相関係数を数えることができます。

% Assuming: m and n are your signals organized as row vectors
r = cov([m;n]) / (std(m)*std(n));

信号の一部の係数のみを計算する場合は、次を使用します。

r = cov([m(1:100);n(1:100)]) / (std(m(1:100))*std(n(1:100)));

corrcoef機能も試しましたか?

編集 OK、corrcoef 関数を確認しましたが、正しく動作しているようです。

>> x = 100*randn(1000,1);
>> y=34*randn(1000,1);
>> corrcoef(x,y)

ans =

    1.0000   -0.0543
   -0.0543    1.0000

したがって、相関係数は -0.0543 に等しく、類似度は小さいです (予想どおり)。
それを確認するために、同一の信号の係数を計算してみましょう。

>> y=x;
>> corrcoef(x,y)

ans =

     1     1
     1     1

予想通り、これは 1 です。

編集します。ご覧のとおり、corrcoef の結果は、これら 2 つの信号間のすべての可能な相関係数の行列です。

       x        y
x    1.0000   -0.0543
y   -0.0543    1.0000

したがって、相互相関の場合、主対角線の外側にある要素の 1 つを選択する必要があります (自己相関係数があり、この場合は常に 1 に等しくなります)。
ans(2,1) または ans(1,2) を選択しても違いはありません。x と y の相関、または y と x の相関を計算しても違いはありません。

したがって、最終的なコードは次のようになります。

R = corrcoef(x,y); % Correlation matrix
r = R(2,1); % this is your Cross-Correlation coefficient
于 2009-12-02T12:16:57.153 に答える
2

代わりに相互共分散を使用してみてください

x = rand(1,14400);
y = rand(1,14400);
r = max( abs(xcov(x,y,'coeff')) )

相互共分散シーケンスは、平均が削除されたシーケンスの相互相関です。Joonasが述べたようにrand、DCオフセットは0.5であり、「誤った」結果が得られます。

于 2009-12-03T22:58:31.817 に答える
0

max(abs(xcorr(m,n,'coeff'))) を試しましたが、正しく機能していないようです。

それはどういう意味ですか?何を出力し、何を期待しますか?

相互相関で考えられる問題の 1 つは、波形の DC バイアスが結果を損なうことです。そして、私の知る限り、それについて何かをするための普遍的な方法はありません. 波形に DC バイアスが含まれていないことを何らかの方法で確認する必要があります。

于 2009-12-02T12:14:18.000 に答える
0

これは、相関コードをテストするために使用したコードです。

x = rand(1,14400);
y = rand(1,14400);
r = max( abs(xcorr(x,y,'coeff')) )

問題は、間隔 (0,1) に均一に分布するrand数値を返すことです。つまり、DC バイアス (平均) は 0.5 です。そのため、一見ランダムな信号に対して高い相関係数が得られます。相関係数に現れる同様の定数成分がそれぞれにあるため、それらは完全にランダムではありません。

したがって、代わりに使用してみてください: 要素が平均 0 で正規分布するrandn乱数を返します。これが、ここで必要なものです。

于 2009-12-03T08:05:16.697 に答える