[英]solve multidimensional equation using least square method in matlab
如何使用最小二乘法從該方程式獲得系數a
和b
? 解決此問題的最佳方法是什么?
假設θ(k1,k2)
是一個60x60
的矩陣(常數/值),即theta=rand(60,60)
,但是
如何在Matlab中求解a
和b
? 有任何簡單的功能嗎?
提前致謝!
參考文件: 此處 (第三節)
您可以使用回歸函數執行此操作。 這是一個例子:
% 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。
調用回歸的結果為您提供最適合數據theta的系數B=[a;b]
。
最后一點是最小二乘法可以直接使用
B=inv(X'*X)*X'*theta(:)
應該給出相同的結果,但是regress
是首選的MATLAB方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.