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

问题描述 投票:3回答:3

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

matlab math curve-fitting least-squares best-fit-curve
3个回答
9
投票

如果 A 是满级的,即列的 A 是线性独立的,则过定线性方程组的最小二乘解为

A * x = b

可以通过反演法线方程来找到(见 线性最小二乘法):

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

如果... A 是没有满级的。A' * A 是不可逆的。相反,我们可以使用 伪逆A

x = pinv(A) * b

或Matlab的 左分 经营者

x = A \ b

两者给出的解是一样的,但左除法的计算效率更高。

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


5
投票

最一般的解决方法是使用伪逆。

X = pinv(A) * B;

3
投票

你可以用以下方法计算x:

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

© www.soinside.com 2019 - 2024. All rights reserved.