2017-03-07 125 views
0

如何使用最小二乘法從該方程中獲得係數ab?解決這個問題的最好方法是什麼?在matlab中使用最小二乘法求解多維方程

enter image description here

比方說θ(k1,k2)60x60(恆定/值)矩陣,即theta=rand(60,60),但

enter image description here

如何解決在MATLAB ab?任何簡單的功能來做到這一點?

提前致謝!

參考紙:Here(第三節)

回答

1

可以使用迴歸函數來做到這一點。 下面是一個例子:

% 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); 

注意,迴歸上theta(:)完成其是含有THETA(K1,K2)的值的(3600,1)載體使用對應的座標X,它是(3600 ,2)。 X的第一列是k1,第二列是k2。

調用迴歸結果給你B=[a;b]最適合theta中數據的係數。

最後要注意的是,最小二乘可直接使用

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

應給予同樣的結果來解決,但regress是優選的MATLAB方法。

+0

非常感謝!你救了我的一天!在嘗試了兩種方法之後,我更喜歡'regress'方法,它更「計算性」。感謝您的詳細解釋,現在我可以清楚地理解可視化! –