如果X不是满秩矩阵的时候,那么不能使用inv()
函数来求X的逆,因为X此时不存在逆,但是我们可以求X的伪逆。
(1)有以下两种方法求X的伪逆 :
假设 X=[1 2 1;1 2 1;2 3 4];
1, pinvX=pinv(X);
2,
matlab
[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的负二分之一次方只可以用:
matlab
pinvX=pinv(X)
pinvX=sqrtm(pinvX);
这样却不可以
matlab
[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';