clear; figure; hold off; %Create data X1 = randn(2,100); X2 = randn(2,100); X1 = X1 + repmat([0,3]',1,100); X2 = X2 + repmat([0,-3]',1,100); X = [X1 X2]; size(X) plot(X(1,:),X(2,:),'+'); grid on; hold on; [U S V] = svd(X); size(U) size(S) size(V) Uk = U(:,1:2); Sk = S(1:2,1:2); Vk = V(:,1:2); foo = inv(Sk)*Uk'; %normalize for plotting purposes foo(1,:) = foo(1,:)./norm(foo(1,:)); foo(2,:) = foo(2,:)./norm(foo(2,:)); axisLength=10; plot([0 foo(1,1)*axisLength foo(1,1)*-axisLength],[0 foo(1,2)*axisLength foo(1,2)*-axisLength],'r') plot([0 foo(2,1)*axisLength foo(2,1)*-axisLength],[0 foo(2,2)*axisLength foo(2,2)*-axisLength],'g') figure plot(Vk(:,1),Vk(:,2),'g+') grid on;