matlab奇异值分解SVD用于数据压缩

奇异值分解SVD的目的:

对于一个n阶方阵A,可以求出其特征值和特征向量,满足Ax=λx,可以对其进行特征值分解,由A=WΣWT,W由n个特征向量构成,Σ是对角矩阵,对角线上的元素为特征值

对于一般的mxn维矩阵A,无法求其特征值和特征向量,但是可以求得其奇异值,完成奇异值分解,即A=UΣVT,Σ是包含r个奇异值的对角矩阵,奇异值分解可以看作是特征值分解的推广

628aa2da3f611c6b257c2559c569149b.png

 

奇异值分解SVD的计算步骤:

  1. 求AAT的特征值和特征向量,将特征向量单位化、正交化构成U
  2. 求ATA的特征值和特征向量,将特征向量单位化、正交化构成V
  3. 将AAT(或ATA)的非零特征值开方得到奇异值,构成Σ

 

奇异值分解SVD的应用:

奇异值和特征值的性质类似,将原始数据向大的奇异值对应的特征向量的方向投影,可以在降低数据维度的同时保留主要的信息,下图中,原始数据在z1方向上的投影可以更多的体现出它的数据特征(在一个方向上数据的方差越大,所代表的信息越多,如果在一个方向上没有方差,那么从这个方向来描述数据,所有的数据都是一致的,携带的信息量为0)。对于一般的mxn维矩阵A要对其进行降维,只能采用SVD方法实现PCA算法。

4889c6bb528e8db620ba7b9419cf259f.png

 

值得注意的是,使用SVD方法实现PCA算法只能对数据矩阵X从一个方向上降维,也就是要么从行方向,要么从列方向上进行降维压缩,在实际数据中,行和列所代表的意义不同,比如n个具有m个时间点的信号构成mxn维的矩阵,那么压缩的选择就是很关键的。

 

SVD压缩图像matlab实现:

function mySVD
 
data = im2double(imread('data.jpg'));       %读取图片
data = data(:,:,1);
data = ((data-min(min(data)))/(max(max(data))-min(min(data))))*250;     %将灰度值调整到0-250
imshow(uint8(rot90(data,1)));       %显示原始图像
title('原始图像');
 
[U,S,V] = svd(data);        %对图像进行SVD分解
 
%保留不同个数的奇异值
S_10 = S;   
S_10(11:end,:) = 0;     %将从第11大开始的奇异值置0
 
S_50 = S;
S_50(51:end,:) = 0;     %将从第51大开始的奇异值置0
 
S_100 = S;
S_100(101:end,:) = 0;       %将从第101大开始的奇异值置0
 
data_10 = U*S_10*V';
imshow(uint8(rot90(data_10,1)));       %显示保留最大的10个奇异值的图像
title('由前10大的奇异值重建的图像');
 
data_50 = U*S_50*V';
imshow(uint8(rot90(data_50,1)));        %显示保留最大的50个奇异值的图像
title('由前50大的奇异值重建的图像');
 
data_100 = U*S_100*V';
imshow(uint8(rot90(data_100,1)));        %显示保留最大的100个奇异值的图像
title('由前100大的奇异值重建的图像');
 
end

325d55406cdd174c607240b7dabcf727.png1de9f468384eb00de84fa8cb885bc025.pngf4d12b80ff4b0dca937a14f58e4b6834.png70b26b884e09d8913700c750af977c0a.png

随着保留的奇异值的数量增多,图像重建的效果越来越好,由前100大的奇异值重建出的图像基本上与原图一致

  

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tizzy477

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值