0
点赞
收藏
分享

微信扫一扫

简单易学的机器学习算法——SVD奇异值分解

简单易学的机器学习算法——SVD奇异值分解_奇异值分解


简单易学的机器学习算法——SVD奇异值分解_SVD_02


原始矩阵


对应的图像为


简单易学的机器学习算法——SVD奇异值分解_特征值_03


对应图像


经过SVD分解后的奇异值矩阵为


简单易学的机器学习算法——SVD奇异值分解_机器学习_04


部分奇异值矩阵


取前14个非零奇异值


简单易学的机器学习算法——SVD奇异值分解_奇异值分解_05


前14个非零奇异值


还原原始矩阵B,还原后的图像为


简单易学的机器学习算法——SVD奇异值分解_手写体_06


还原后的图像


对比图像


简单易学的机器学习算法——SVD奇异值分解_SVD_07


对比图像


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);





举报

相关推荐

0 条评论