本文主要是介绍matlab求矩阵的伪逆或者负二分之一次方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果X不是满秩矩阵的时候,那么不能使用inv()
函数来求X的逆,因为X此时不存在逆,但是我们可以求X的伪逆。
(1)有以下两种方法求X的伪逆:
假设 X=[1 2 1;1 2 1;2 3 4];
1, pinvX=pinv(X);
2,
[U,D,P]=svd(X);
r=rank(X);
Dnew=zeros(size(D));
Dnew(1:r,1:r)=diag(diag(D(1:r,1:r)).^(-1));
eigX=P*Dnew*U';
二者是等价的。
(2)求X的负二分之一次方只可以用:
pinvX=pinv(X)
pinvX=sqrtm(pinvX);
这样却不可以
[U,D,P]=svd(X);
r=rank(X);
Dnew=zeros(size(D));
Dnew(1:r,1:r)=diag(diag(D(1:r,1:r)).^(-1/2));
eigX=P*Dnew*U';
这篇关于matlab求矩阵的伪逆或者负二分之一次方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!