如何在Matlab中使用最小二乘法?

时间:2015-05-19 19:40:09

标签: matlab math curve-fitting least-squares best-fit-curve

我有37个线性方程和36个变量以矩阵方程的形式; A * X = B.方程式没有确切的答案。我想使用Matlab最小二乘法找到误差最小的答案。我是Matlab的新手,所以任何评论都会有所帮助。谢谢

3 个答案:

答案 0 :(得分:9)

如果A是满秩的,即A的列是线性无关的,那么超定线性方程组的最小二乘解

A * x = b
通过反转正规方程可以找到

(见Linear Least Squares):

x = inv(A' * A) * A' * b

如果A不是满级,则A' * A不可逆。相反,可以使用A

pseudoinverse
x = pinv(A) * b

或Matlab的left-division运算符

x = A \ b

两者都提供相同的解决方案,但左侧划分的计算效率更高。

后两种计算方法也可以处理 确定的线性方程组,但在这种情况下它们给出不同的解:伪逆给出x具有最小和的解正方形,而左除运算符给出一个尽可能多的0系数的解。

答案 1 :(得分:5)

解决此问题的最常用方法是使用pseudoinverse:

X = pinv(A) * B;

答案 2 :(得分:3)

您可以通过以下方式计算x:

x = (A'*A)\A'*B