cp_T_v000

function [T1 Mls]=cp_T(M, R, mtd)
if (size(M,1)>size(M,2))
	[u,s,v]=svd(M);
	T1=u(:,size(M,2)+1:size(M,1))';

	%ls matrix
	if (mtd==0)
		R_inv=inv(R);
		Mls=inv(M'*R_inv*M)*M'*R_inv;
	elseif (mtd==1)
		T2=u(:,1:size(M,2))';   
		mx_a=inv(T1*R*T1');
		mx_b=inv(T2*M);
		Mls=mx_b*(T2-T2*R*T1'*mx_a*T1);
	end
elseif (size(M,1)==size(M,2))
	T1=[]; %No redundancy
	R_inv=inv(R);
	Mls=inv(M'*R_inv*M)*M'*R_inv;
else
	disp('Error cp_T:M is not full col rank');
end