function M = mkm(X,Y,Z,xim,yim) A = zeros(2*length(X),12); for i = 1:length(X) A(2*i-1,:) = [X(i) Y(i) Z(i) 1 0 0 0 0 -xim(i)*X(i) -xim(i)*Y(i) -xim(i)*Z(i) -xim(i) ]; A(2*i,:) = [0 0 0 0 X(i) Y(i) Z(i) 1 -yim(i)*X(i) -yim(i)*Y(i) -yim(i)*Z(i) -yim(i) ]; end [U S V] = svd(A); t = V(:,12); % closest singular value is last M = zeros(3,4); M(1,:) = t(1:4)'; M(2,:) = t(5:8)'; M(3,:) = t(9:12)';