如果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';