【问题标题】:solve multidimensional equation using least square method in matlab在matlab中使用最小二乘法求解多维方程
【发布时间】:2017-03-07 07:03:40
【问题描述】:

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

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

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

提前致谢!

参考论文:Here(第三节)

【问题讨论】:

    标签: matlab least-squares


    【解决方案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(:) 上完成的,它是一个 (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 方法,它更“计算”。也谢谢你的详细解释,现在我用可视化清楚地理解了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多