nas*_*sim 3 math matlab curve-fitting best-fit-curve least-squares
我有37个线性方程和36个变量的矩阵方程; A*X = B. 方程没有确切的答案.我想使用Matlab最小二乘法找到误差最小的答案.我是Matlab的新手,所以任何评论都会有所帮助.谢谢
如果A是满秩,即A线性独立的列,则是超定线性方程组的最小二乘解
A * x = b
Run Code Online (Sandbox Code Playgroud)
可以通过反演正规方程找到(参见线性最小二乘法):
x = inv(A' * A) * A' * b
Run Code Online (Sandbox Code Playgroud)
如果A不是满级,A' * A则不可逆.相反,人们可以使用伪逆的A
x = pinv(A) * b
Run Code Online (Sandbox Code Playgroud)
或Matlab的左分区运算符
x = A \ b
Run Code Online (Sandbox Code Playgroud)
两者都提供相同的解决方案,但左侧划分更具计算效率.
后两种计算方法也可以处理下,线性方程组的决定,但这一系统给在这种情况下,不同的解决方案:伪逆给出,其中溶液x具有平方的总和最小,而左除法运算给出了尽可能多的解决方案0个系数尽可能.
解决此问题的最常用方法是使用pseudoinverse:
X = pinv(A) * B;
Run Code Online (Sandbox Code Playgroud)