
 

 
原始矩阵
 
对应的图像为
 

 
对应图像
 
经过SVD分解后的奇异值矩阵为
 

 
部分奇异值矩阵
 
取前14个非零奇异值
 

 
前14个非零奇异值
 
还原原始矩阵B,还原后的图像为
 

 
还原后的图像
 
对比图像
 

 
对比图像
 
MATLAB代码
 
%% 测试奇异值分解过程
load data.mat;%该文件是做好的一个手写体的图片
B = zeros(28,28);%将行向量重新转换成原始的图片
for i = 1:28
    j = 28*(i-1)+1;
    B(i,:) = A(1,j:j+27);
end
%进行奇异值分解
[U S V] = svd(B);
%选取前面14个非零奇异值
for i = 1:14
    for j = 1:14
        S_1(i,j) = S(i,j);
    end
end
%左奇异矩阵
for i = 1:28
    for j = 1:14
        U_1(i,j) = U(i,j);
    end
end
%右奇异矩阵
for i = 1:28
    for j = 1:14
        V_1(i,j) = V(i,j);
    end
end
B_1 = U_1*S_1*V_1';
%同时输出两个图片
subplot(121);imshow(B);
subplot(122);imshow(B_1);  
 










