0
如何使用最小二乘法從該方程中獲得係數a
和b
?解決這個問題的最好方法是什麼?在matlab中使用最小二乘法求解多維方程
比方說θ(k1,k2)
是60x60
(恆定/值)矩陣,即theta=rand(60,60)
,但
如何解決在MATLAB a
和b
?任何簡單的功能來做到這一點?
提前致謝!
參考紙:Here(第三節)
如何使用最小二乘法從該方程中獲得係數a
和b
?解決這個問題的最好方法是什麼?在matlab中使用最小二乘法求解多維方程
比方說θ(k1,k2)
是60x60
(恆定/值)矩陣,即theta=rand(60,60)
,但
如何解決在MATLAB a
和b
?任何簡單的功能來做到這一點?
提前致謝!
參考紙:Here(第三節)
可以使用迴歸函數來做到這一點。 下面是一個例子:
% 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方法。
非常感謝!你救了我的一天!在嘗試了兩種方法之後,我更喜歡'regress'方法,它更「計算性」。感謝您的詳細解釋,現在我可以清楚地理解可視化! –