2017-03-07 620 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'方法,它更“计算性”。感谢您的详细解释,现在我可以清楚地理解可视化! –