【发布时间】:2017-03-07 07:03:40
【问题描述】:
如何使用最小二乘法从这个方程中得到系数a 和b?解决这个问题的最佳方法是什么?
假设θ(k1,k2) 是60x60(常量/值)的矩阵,即theta=rand(60,60),但是
如何在 matlab 中求解 a 和 b?有什么简单的功能吗?
提前致谢!
参考论文:Here(第三节)
【问题讨论】:
标签: matlab least-squares
如何使用最小二乘法从这个方程中得到系数a 和b?解决这个问题的最佳方法是什么?
假设θ(k1,k2) 是60x60(常量/值)的矩阵,即theta=rand(60,60),但是
如何在 matlab 中求解 a 和 b?有什么简单的功能吗?
提前致谢!
参考论文:Here(第三节)
【问题讨论】:
标签: matlab least-squares
您可以使用回归函数来执行此操作。 这是一个例子:
% 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(:) 上完成的,它是一个 (3600,1) 向量,包含 theta(k1,k2) 的值,它使用 X 中的相应坐标,即 (3600,2)。 X的第一列是k1,第二列是k2。
调用regress 的结果为您提供B=[a;b] 最适合theta 数据的系数。
最后一点是最小二乘可以直接使用
B=inv(X'*X)*X'*theta(:)
应该给出相同的结果,但regress 是首选的 MATLAB 方法。
【讨论】:
regress 方法,它更“计算”。也谢谢你的详细解释,现在我用可视化清楚地理解了!