• matlab特征值分解和奇异值分解


    特征值分解

    函数 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
    anjiDesktop
    gb_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
    anjiDesktop1.jpg')
    
    re1=s(:,:)*v(:,1:20)*d(:,1:20)';
    figure;
    imshow(mat2gray(re));
    imwrite(mat2gray(re),'C:Users
    anjiDesktop2.jpg')
    
    
    re=s(:,:)*v(:,1:80)*d(:,1:80)';
    figure;
    imshow(mat2gray(re));
    imwrite(mat2gray(re),'C:Users
    anjiDesktop3.jpg')
    
    re=s(:,:)*v(:,1:150)*d(:,1:150)';
    figure;
    imshow(mat2gray(re));
    imwrite(mat2gray(re),'C:Users
    anjiDesktop4.jpg')
    不同特征值进行重构的效果。。。

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

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

    2.噪声滤波。

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

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

  • 相关阅读:
    性能学习-了解前端性能测试
    Python变量类型说明
    Python 标识符说明
    极验验证码-判断需要移动的距离
    极验验证码-userresponse.js
    转载系列
    loadrunner java vuser
    java DES
    java AES
    极验验证码流程-4字段加密
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5708769.html
Copyright © 2020-2023  润新知