Here is an example:
I = imread('cameraman.tif'); X = im2double(I); %# SVD [USV] = svd(X); %# variance explained by each eigenvector variances = abs(diag(S).^2); plot(cumsum(variances)./sum(variances), 'b.-'), ylim([0 1]) title('SVD'), xlabel('i^{th} Component'), ylabel('Variance explained') %# iterate over number of components to keep figure subplot(121), imshow(X), title( sprintf('size=%d',numel(X)) ) subplot(122) for p = 1:(size(U,2)/2-1) %# truncated SVD Up = U(:,1:p); Vp = V(:,1:p); Sp = diag(S(1:p,1:p)); %# reconstruct/compress XHat = Up * diag(Sp) * Vp'; %'


source share