matlabsvd提取特征值_matlab特征值分解和奇异值分解

这篇博客介绍了MATLAB中如何进行特征值分解和奇异值分解,包括函数eig和svd的使用方法。通过示例展示了如何利用奇异值分解进行图像压缩,并讨论了奇异值分解在图像压缩、噪声滤波、模式识别等领域的应用。
摘要由CSDN通过智能技术生成

特征值分解

函数 eig

格式 d = eig(A)         %求矩阵A的特征值d,以向量形式存放d。

d = eig(A,B)       %A、B为方阵,求广义特征值d,以向量形式存放d。

[V,D] = eig(A)      %计算A的特征值对角阵D和特征向量V,使AV=VD成立。

[V,D] = eig(A,'nobalance')   %当矩阵A中有与截断误差数量级相差不远的值时,该指令可能更精确。'nobalance'起误差调节作用。

[V,D] = eig(A,B)    %计算广义特征值向量阵V和广义特征值阵D,满足AV=BVD。

[V,D] = eig(A,B,flag)   % 由flag指定算法计算特征值D和特征向量V,flag的可能值为:'chol' 表示对B使用Cholesky分解算法,这里A为对称Hermitian矩阵,B为正定阵。'qz' 表示使用QZ算法,这里A、B为非对称或非Hermitian矩阵。

说明 一般特征值问题是求解方程: 解的问题。广义特征值问题是求方程: 解的问题。

奇异值分解

函数 svd

格式 s = svd (X)          %返回矩阵X的奇异值向量

[U,S,V] = svd (X)   %返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,且满足= U*S*V'。若A为m×n阵,则U为m×m阵,V为n×n阵。奇异值在S的对角线上,非负且按降序排列。

[U,S,V] = svd (X,0)   %得到一个“有效大小”的分解,只计算出矩阵U的前n列,矩阵S的大小为n×n。

奇异值分解压缩图像

clear all;

close all;

clc;

a=imread('C:\Users\ranji\Desktop\rgb_image.jpg');

imshow(mat2gray(a))

[m n]=size(a);

a=double(a);%r=rank(a);

[s v d]=svd(a(:,:,1)); %取一个分量%re=s*v*d';

re=s(:,:)*v(:,1:1)*d(:,1:1)';

figure;

imshow(mat2gray(re));

imwrite(mat2gray(re),'C:\Users\ranji\Desktop\1.jpg')

33d772756c030013e7c7715f1fb5240c.png

re1=s(:,:)*v(:,1:20)*d(:,1:20)';

figure;

imshow(mat2gray(re));

imwrite(mat2gray(re),'C:\Users\ranji\Desktop\2.jpg')

90bd56a9c0729204aad4e08f0bf0824d.png

re=s(:,:)*v(:,1:80)*d(:,1:80)';

figure;

imshow(mat2gray(re));

imwrite(mat2gray(re),'C:\Users\ranji\Desktop\3.jpg')

54fdb7cd2aac464cb5df3fdb0685c25e.png

re=s(:,:)*v(:,1:150)*d(:,1:150)';

figure;

imshow(mat2gray(re));

imwrite(mat2gray(re),'C:\Users\ranji\Desktop\4.jpg')

af9159bf4c8fc7b1b32af754fd901f45.png

不同特征值进行重构的效果。。。

最后说一些奇异值分解的应用:

1.图像压缩,正如上面的。

2.噪声滤波。

3.模式识别。因为svd就是提取主要的成分嘛。

4.生物,物理,经济方面的一些统计模型的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值