在matlab中使用最小二乘法求解多维方程

solve multidimensional equation using least square method in matlab

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

假设θ(k1,k2)60x60(constant/values)的矩阵,即theta=rand(60,60),但是

如何在 matlab 中求解 ab?有什么简单的功能可以做到吗?

提前致谢!

参考论文: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。

调用 regress 的结果为您提供 B=[a;b] 最适合 theta 中数据的系数。

最后要注意的是,最小二乘法可以直接使用

求解
B=inv(X'*X)*X'*theta(:)

应该给出相同的结果,但 regress 是首选的 MATLAB 方法。