0

テンプレート信号を時間内に測定信号にスケーリングするための最小二乗ルーチンが Matlab にあるかどうかを知りたいです。私のテンプレートが約のシグナルであるとしましょう。1秒ですが、計測での該当部分は1.2秒です。ここで、テンプレートの長さも 1.2 秒になるようにスケーリングします。もちろん、いくつかのステップでテンプレートを単純に再スケーリングし、各ステップの信号と相互相関させて最大値を見つけることは可能です。ただし、これは私のプログラムを大幅に遅くします。Matlab の lsqcurvefit には、同じ長さの 2 つのベクトルが必要であり、そのうちの 1 つのベクトルの長さは、まさに私が変更したいものです。誰にもアイデアがありますか?ありがとう!

4

1 に答える 1

0

単純fminsearch関数アプローチを実際に試しましたか?思ったほど遅くないかもしれません。

例(未テスト-説明のためだけに)

x=template; y=data;
fn=@(p)sum(( x(:)-y( 1+max(0,min(length(y),floor([0:(length(x)-1)]-p(1)).*p(2))) ) ).^2)
b=fminsearch(fn,[0 1]); % [offset, scale]

おそらく制限などを微調整する必要があります!

適していない場合は、CPMツールボックスを確認することもできます(ただし、ニーズには高度すぎる可能性があります) http://www.cs.toronto.edu/~jenn/alignmentStudy/

于 2010-08-19T16:26:54.450 に答える