2017-03-07 35 views
0

係数最小二乗法を使用してこの式から係数abを得るにはどうすればよいですか?これを解決する最善の方法は何ですか?matlabで最小二乗法を使用して多次元方程式を解く

enter image description here

私はMathWorks社のMATLABでabを解くためにはどうすればよいことがtheta=rand(60,60)ある、のはθ(k1,k2)60x60(定数/値)の行列であるとしましょう、しかし

enter image description here

?それを行うための簡単な関数?

ありがとうございます!

参考論文:Here(セクションIII)

答えて

1

あなたがこれを行うに後退機能を使用することができます。ここ は例である:シータ(K1、K2)の値を含む(3600,1)ベクトルである回帰をtheta(:)で行われること

% Generate an example 
n = 60; 
theta = rand(n); 

% Create regressors 
[M,N] = meshgrid(1:n,1:n); 
X = [M(:), N(:)]; 

% Regress 
B=regress(theta(:), X); 

% Compare the results 
theta_hat = reshape(X*B,n,n); 
plot3(M,N,theta,'o'); 
hold on; 
surf(M,N,theta_hat); 

通知は(3600であるXに対応する座標を使用し、2)。 Xの第1列はk1であり、第2列はk2である。

regressを呼び出した結果、B=[a;b]にはthetaのデータに最も適した係数が得られます。

最後の注意は、最小二乗法は、同じ結果を与えるべき直接

B=inv(X'*X)*X'*theta(:) 

を用いて解くことができるが、regressが好ましいMATLAB方法であることです。

+0

ありがとうございました!あなたは私の一日を救った!両方の方法を試した後、私は '回帰'メソッドも好んでいます。もっと計算的です。詳細な説明をお寄せいただきありがとうございます。今、私は視覚化で明確に理解しています! –

関連する問題