用inv进行矩阵求逆时,出现矩阵奇异的情况。报错:Warning: Matrix is singular to working precision.
只需将inv替换为pinv求伪逆即可。
很多时候你不需要求逆矩阵,例如:
inv(A)*B
实际上可以写成 A\B;B*inv(A)
实际上可以写成B/A;这样比求逆之后带入精度要高。
inv
和 \ 或 /
;Y=inv(X)
返回方阵X的逆矩阵,如果X病态或者高度奇异,则会显示警告信息。
实际上,很少需要真的把矩阵的逆求出来,常见的使用失误主要出现在求解线性方程组AX=b。一种求解方法为x=inv(A)*b
,但如要达到更快,更稳定,就得用X=A\b
。这个算法使用高斯消去法,因此不产生逆矩阵。
\
矩阵左除A\B
近似等于inv(A)*B
,只是他们的算法不一样;X=A\B
是AX=B
的解;A\EYE(SIZE(A))
计算A的逆,参见mldivide,可得到更多信息;pinv(A)*B
不一样,后者是最小范数解。A\EYE(SIZE(A))
用来求解A的广义逆。原文:https://www.cnblogs.com/rongyupan/p/12662496.html