如何在MATLAB中使用最小二乘逼近?

时间:2009-12-02 11:47:51

标签: math matlab linear-algebra least-squares

对于线性代数中的家庭作业,我使用MATLAB的\运算符(这是推荐的方法)解决了以下等式:

A = [0.2 0.25; 0.4 0.5; 0.4 0.25];
y = [0.9 1.7 1.2]';
x = A \ y

产生以下答案:

x =
1.7000
2.0800

对于赋值的下一部分,我应该使用最小二乘近似求解相同的等式(然后将其与先前值进行比较,以查看近似值的准确度)。

如何在MATLAB中找到一种方法呢?

之前的工作:我找到了函数lsqlin,它似乎能够解决上述类型的方程式,但我不明白哪个参数可以提供它,也不知道它的顺序。

2 个答案:

答案 0 :(得分:6)

mldivide ,(“ \ ”)实际上也是如此。根据{{​​3}}:

  

如果A是m-by-n矩阵,其中m~ = n且B是具有m个分量的列向量,或者是具有多个这样的列的矩阵,则X = A \ B是最小二乘意义上的解对于欠定或超定的方程组AX = B.换句话说,X最小化范数(A * X-B),即矢量AX-B的长度.A的等级k由QR分解确定为列旋转(有关详细信息,请参阅算法)。计算的解X每列最多具有k个非零元素。如果k < n,这通常与x = pinv(A)* B不同,它返回最小二乘解。

所以,你在第一次任务中所做的就是用LSE解决方程式。

答案 1 :(得分:2)

您的作业是否涉及明确编码最小二乘近似,或仅使用MATLAB中提供的其他函数?如果您可以使用其他功能,则可以选择LSQR

x = lsqr(A,y);