在matlab

时间:2017-03-07 07:03:41

标签: matlab least-squares

如何使用最小二乘法从此等式中获得系数ab?解决这个问题的最佳方法是什么?

enter image description here

假设θ(k1,k2)60x60(常数/值)的矩阵,即theta=rand(60,60),但

enter image description here

如何在matlab中解决ab?有什么简单的功能吗?

提前致谢!

参考文件:Here(第III部分)

1 个答案:

答案 0 :(得分: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方法。