8

別の信号と比較したい matlab で作成した信号があります (それらを y および z と呼びます)。私が探しているのは、2 つの信号の類似度の値またはパーセンテージを割り当てる方法です。

私は corrcoef を使おうとしましたが、非常に悪い値 ( corrcoef(y,z) = -0.1141) が得られましたが、重ね合わせた 2 つのプロットの FFT を見ると、それらが非常に似ていることが視覚的にわかりました。2 つの信号の大きさの FFT の corrcoef を見ると、より有望に見えますcorrcoef(abs(fft(y)),abs(fft(z))) = 0.9955:相関します。

説明されているように、Matlab で 2 つの信号を比較する方法の推奨事項はありますか?

ありがとう!

4

2 に答える 2

9

「類似」の意味を明確に定義しないと、この質問に答えることはできません。

「類似」が「相関周波数応答」を意味する場合、まあ、あなたはゲームの一歩先を行っています!

一般に、適切なメトリックを定義することは、アプリケーション固有です。これら 2 つの信号がどの程度類似しているかを測定する方法を知るには、これら 2 つの信号がどの程度類似しているかを知りたい理由に答える必要があります。それらは同じシステムに入力されますか? 同じアルゴリズムで検出する必要がありますか?

それまでの間、周波数ドメイン相関を使用するというあなたのアイデアは悪くありません。しかし、あなたも考慮するかもしれません

http://en.wikipedia.org/wiki/Dynamic_time_warping

または、さまざまな統計モデルの下での時系列の可能性:

http://en.wikipedia.org/wiki/Hidden_ ​​Markov_model http://en.wikipedia.org/wiki/Autoregressive_model http://en.wikipedia.org/wiki/Autoregressive%E2%80%93moving-average_model

または任意の数の他のモデル...

追加する必要があります:一般に、2つの時系列間の相関係数は、非常に特殊な状況(たとえば、位相のシフトがない場合)を除いて、時系列の類似性の非常に悪いメトリックです。

于 2013-01-17T19:02:51.023 に答える
7

ピートは、先に進む前に類似性の概念を定義する必要があるというのは正しいことです。ただし、正規化された最大相互相関の大きさは、状況に応じた類似性の有用な概念であることがわかります。

norm_max_xcorr_mag = @(x,y)(max(abs(xcorr(x,y)))/(norm(x,2)*norm(y,2)));
x = randn(1, 200); y = randn(1, 200); % two random signals 
norm_max_xcorr_mag(x,y)

ans = 0.1636

y = [zeros(1, 30), 3.*x]; % y is delayed, multiplied version of x
norm_max_xcorr_mag(x,y)

ans = 1

この類似性の概念は、2つのシーケンスのロート相関に似ていますが、時間遅延に対して不変です。

于 2013-01-20T19:39:23.907 に答える