2017-07-11 13 views
1

私はケースP(t) = a * A(t) - b* B(t)を得ました。それぞれ17281x1は2倍です。MATLAB適合行列

今は変数abを得るためにカーブフィッティングを使いたいと思います。

Fitting 1

フィッティング場合、私はfitfittypeを、知っているが、彼らはこのような場合には動作しないようで、ここでaとb 1とし、1

これはどのように解決されますか?

答えて

1

最小自乗法はどうですか?私が正しく理解していれば、問題は P(t) = [A(t), B(t)] * [a; -b]と表記できます。

[a; -b] = x[A(t), B(t)] = YP(t) = P

今すぐ最小二乗解は次のようになりましょう:

x = Y\P; 
:あなたも、この場合の 'バックスラッシュ演算子' を使用することができ、MATLABで

x = ((Y'*Y)^-1)*Y'*P; 

の場合は、こちらのドキュメントをご覧ください。mldivide

私はこれが役に立てば幸い

Wikipedia

Mathworks

:参照として

EDIT:

は、ここに私のテストコードです:

A = [1;2;3] 
B = [4;5;6] 
P = [7;8;9] 

Y = [A, -B] 

disp('------- regular least squares formula -------') 
x = ((Y'*Y)^-1)*Y'*P 

a = x(1) 
b = x(2) 

disp('------- mldivide -------') 
x = Y\P 

a = x(1) 
b = x(2) 
+0

申し訳ありませんが、私は私の答えを調整し、私はあなたがあなたのソリューション –

+0

Thxをを取得すべきだと思うこのアプローチで、自分のコンピュータ上の小さな例を試してみました、 しかし、 '[a; -b] = x'あるように複数の左辺 ちょうどyurコードをコピーしてください –

+1

私は '[a; -b] = x'と置き換えて '[a; -b] 'を式に' x 'をつけて単純化すると、最小二乗法の解は列ベクトルになります。私は私の答えにテストコードを追加しました。 –