2013-01-17 17 views
5

私は別の信号(yとzと呼ぶ)と比較したい信号をmatlabで作りました。私が探しているのは、類似した2つの信号の値または割合を割り当てる方法です。Matlabの2つの信号を比較する最良の方法

私はcorrcoefを使用しようとしていたが、私は非常に貧しい値(corrcoef(y,z) = -0.1141)を取得するには、まだ私はお互いに重畳された二つのグラフのFFTを見たとき、私は視覚的に、彼らは非常に似ていると言っているだろう。 2つの信号の大きさのFFTのcorrcoefを見ると、より多くの有望なものに見えます:corrcoef(abs(fft(y)),abs(fft(z))) = 0.9955しかし、純粋な形の2つの信号がそうでないように見えるので、これが最善の方法かどうかはわかりません相関する。

記載されているように、Matlabの2つの信号を比較する方法はありますか?

ありがとうございます!

+0

この質問のためのより良い場所はdsp.stackoverflow.comです。 (私はそれを移動するようにフラグを立てようとしましたが、何らかの理由でそのサイトがオプションではありませんでした) –

+1

dsp.stackoverflowはありますか? – toozie21

+0

申し訳ありませんdsp.stackexchange.com –

答えて

9

"類似している"という意味の明確な定義がない限り、質問に答えることは不可能です。

「類似の」とは、「相関する周波数応答」を意味する場合は、ゲームの一歩前です。

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

一方、freq-domainの相関関係を使用する考えは悪くありません。しかし、あなたはまた、様々な統計モデルの下で

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

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

私は追加する必要があります:一般的に、相関係数betw 2つの時系列は、非常に特殊な状況(例えば、位相のシフトなし)を除いて、時系列の類似性の非常に貧弱な指標です。

+0

ええ、私は、私が望んでいたほど明確ではなかったと思います、申し訳ありません。私が最終的にやろうとしていたのは、元の信号を「ミックス」して、それを元に戻す「ミックス」と元の信号とどれほど近いかを確認することでした。 2回のミキシングの後にLPFとBPFがあったので少し違うと思っていたので、どれくらい似ているか評価したいと思っていました。悲しいことに、私はそれをあまり明確にしていないと私は確信しています。 – toozie21

+0

すみません。あなたは合理的な質問だと思ったことを尋ねました。今あなたはあなたの前に楽しいものを持っている! – Pete

6

Peteは、さらに進める前に類似性の概念を定義する必要があります。ただし、あなたの状況に類似する有用な概念であることを、正規化相互相関の最大マグニチュードを見つけるかもしれない:

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つの配列の丸暗記相関に似ているが、時間遅延に不変です。

関連する問題