精华内容
下载资源
问答
  • 非负矩阵分解matlab代码,内容全,适用于各种信号的分析 非负矩阵分解matlab代码,内容全,适用于各种信号的分析
  • 非负矩阵分解 matlab

    2014-04-02 10:47:50
    本程序为非负矩阵分解,适用于高光谱解混。图形图像处理方面的 matlab程序
  • 矩阵分解matlab程序,包括LU, QR, Givens, HouseHolder 分解,并提供了GUI界面,便于查看。 开发工具为matlab 2010
  • 程序基于板仓-斋藤的非负矩阵分解语音分解
  • 非负矩阵分解matlab程序

    热门讨论 2011-02-24 19:51:31
    典型非负矩阵分级的matlab程序,作用是将高维数据进行降维。
  • NMFSC稀疏非负矩阵分解算法应用程序,其中还包含了其他一些非负矩阵分解的已经写好的程序
  • 前面看到有人在找m版本的其实国外的很多 发个简单的,希望有所帮助
  • 线性代数 NMF 非负矩阵分解 Matlab

    千次阅读 2013-11-17 01:01:34
    点乘 dot product A.*B 叉乘 cross product A*B 转置 tranpose A' 记为A的转置 ...矩阵 A 为 矩阵B为 C=A*B=×== C=A.*B=各个元素对应相乘= 1X5 2X6 3X7 4X

    点乘 dot product A.*B

    叉乘 cross product A*B

    转置  tranpose A' 记为A的转置

    点除 dot divide A./B


    举例


    矩阵 A 为


    矩阵B为


    C=A*B=×==


    C=A.*B=各个元素对应相乘=


    1X5 2X6

    3X7  4X8


    5  12

    21 32


    详细介绍请参见

    http://math.ecnu.edu.cn/sxsykc/jxnr/mat3.htm


    NMF转自

    http://www.cnblogs.com/tiandsp/archive/2012/11/13/2768597.html


    通常矩阵分解如svd或其他什么的分解都会把矩阵分解为有正有负的矩阵,而他的这种分解方法就把矩阵完全分解成只有正数的矩阵,因为现实世界中如图像,负数是没什么意义的,所以这种只分解为正数矩阵的分解方法就很有意义了,要不也不会发在nature这样牛B的杂志上。

      这里是分解的公式:

      这里r是分解矩阵的秩,V是原矩阵的一个近似,W与H就是分解而成的两个矩阵。

      下面是W和H的求法,是一个迭代算法,初始的W与H是随机的就行了:

      

      关于代码,我借鉴了这个博客的:http://fxy1211.blog.163.com/blog/static/68255322007826111015905/,真是太感谢这位博主了。

      下面是代码:

    复制代码
    clear all;
    close all;
    clc;
    
    V=double(imread('lena.jpg'));
    imshow(mat2gray(V));
    
    [i u]=size(V);                                    %计算V的规格
    r=100;                                  %设置分解矩阵的秩
    W=rand(i,r);                            %初始化WH,为非负数
    H=rand(r,u);
    maviter=100;                                    %最大迭代次数
    for iter=1:maviter
        W=W.*((V./(W*H))*H');           %注意这里的三个公式和文中的是对应的
        W=W./(ones(i,1)*sum(W));    
        H=H.*(W'*(V./(W*H)));
    end
    
    img_V=W*H;
    figure;
    imshow(mat2gray(img_V));
    复制代码

      下面是原图和重构后的效果,如果秩和迭代次数越大,那么重构后的图越接近原图:

    原图

    重构图





    展开全文
  • Code%D输入数据n(个)*m(维)r降维后的维度%D=W*HW基向量矩阵H在基下的坐标向量function[W,H]=NMF(D,r)sizeD=size(D);n=sizeD(1);m=sizeD(2);W=abs(rand(n,r));H=abs(rand(r,m));foriterate=1:100WD=W'*D...
    ContractedBlock.gifExpandedBlockStart.gifCode
     % D 输入数据 n(个)* m(维)  r 降维后的维度
    %  D=W*H   W 基向量矩阵  H 在基下的坐标向量

    function [W,H]=NMF(D,r)      

    sizeD=size(D);

    n=sizeD(1);
    m=sizeD(2);

    W=abs(rand(n,r));

    H=abs(rand(r,m));

    for iterate=1:100
        
        WD=W'*D;
        WWH=W'*W*H;

        for a = 1:r
            for u=1:m
                H(a,u)=H(a,u)*WD(a,u)/WWH(a,u);
            end
        end

        
        DH=D*H';
        WHH=W*H*H';
        
        for i = 1:n
            for a=1:r
                W(i,a)=W(i,a)*DH(i,a)/WHH(i,a);
            end
        end

    end

    转载于:https://www.cnblogs.com/feathersky/archive/2009/06/22/1508414.html

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼刚接触机器学习和矩阵分解,有一个预测矩阵空白数据的需求,比较基础的是采用Funk-SVD,V=WH,但这个分解出来可能有负值。后来看了非负矩阵分解的算法,自己推了一下。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    刚接触机器学习和矩阵分解,有一个预测矩阵空白数据的需求,比较基础的是采用Funk-SVD,V=WH,但这个分解出来可能有负值。后来看了非负矩阵分解的算法,自己推了一下。模仿NMF取了一个特殊的学习率,把负项削掉了(没有完备的证明),但正常推导效果不好(猜测是步长会变大?)。然后找到一篇博文,上面加了一个对W或H的归一化,效果就好了。也不知道为啥。有哪位大佬懂么?

    下附matlab程序

    [n m]=size(V);

    Va=V;

    r=round(0.5*m*n/(m+n))+1; %设置分解矩阵的秩

    W=rand(n,r); %初始化WH,为非负数

    H=rand(r,m);

    P=ones(n,m)-isnan(V);

    for i=1:n

    for j=1:m

    if P(i,j)==0 %空

    V(i,j)=1; %任意给一个非空初值

    end

    end

    end

    maviter=2000; %最大迭代次数

    for iter=1:maviter

    % W=W.*((V./(W*H))*H'); %注意这里的三个公式和文中的是对应的

    % W=W./(ones(i,1)*sum(W));

    % H=H.*(W'*(V./(W*H)));

    % W迭代

    B=W*H;

    for i=1:n

    for k=1:r

    fz=0;fm=0;

    for j=1:m

    fz=fz+P(i,j)*V(i,j)*H(k,j);

    fm=fm+P(i,j)*H(k,j)*B(i,j);

    end

    W(i,k)=W(i,k)*fz/fm;

    end

    end

    % W=W./(ones(n,1)*sum(W));

    % H迭代

    for j=1:m

    for k=1:r

    fz=0;fm=0;

    for i=1:n

    fz=fz+P(i,j)*W(i,k)*V(i,j);

    fm=fm+P(i,j)*B(i,j)*W(i,k);

    end

    H(k,j)=H(k,j)*fz/fm;

    end

    end

    H=H./(sum(H)*ones(m,1)); %%%%%这里多了一步归一化

    loss=0;

    for i=1:n

    for j=1:m

    if P(i,j)>0 %非空

    error = 0;

    for k=1:r

    error = error+W(i,k)*H(k,j);

    end

    loss=loss+(V(i,j)-error)*(V(i,j)-error);

    end

    end

    end

    if mod(iter,100)==0

    iter

    loss

    end

    end

    V0=W*H;

    re_V=Va;

    for i=1:n

    for j=1:m

    if P(i,j)==0 %空

    re_V(i,j)=V0(i,j);

    end

    end

    end

    展开全文
  • MATLAB矩阵分解-MATLAB矩阵分解.doc MATLAB矩阵分解
  • 介绍了可逆方阵的三角(LU)分解、任意满秩矩阵的正交三角(QR)分解、对称正定矩阵的Cholesky分解,任意方阵的Schur分解、Hessenberg分解、EVD分解、SVD分解、GMD分解8中矩阵分解Matlab指令。
  • 矩阵qr分解matlab自编程序.pdf
  • VAR模型的方差分解中,很重要的一步是使用cholesky分解对误差项的协方差矩阵进行变形,cholesky分解的本质是将对称的正定矩阵,进行特殊的LU分解,化为如下的形式: 其中L表示下三角矩阵,等于chlesky分解将A变化为...

           VAR模型的方差分解中,很重要的一步是使用cholesky分解对误差项的协方差矩阵进行变形,cholesky分解的本质是将对称的正定矩阵,进行特殊的LU分解,化为如下的形式:

                          4236c21f43ff3dc1bbfc08b0c32714c9.png其中L表示下三角矩阵,等于chlesky分解将A变化为一个下三角矩阵和这个下三角矩阵转置的乘积。如下的代码是基于Matlab编程的cholesky分解和生成对称正定矩阵的Matlab函数,希望对大家的科研有所帮助。

    b43bd51337fd38cdd60f900945538cf6.png

    53afd59011aff5eb53180fa1ad474a30.png

    function [A,B,C] = cholesky(X)

    %cholesky分解

    % X矩阵为实对称矩阵,且必须为正定矩阵

    [n,m]=size(X);

    A=zeros(n,m);

    for i=1:n

        for k=i:n

            a=0;

            for j=1:i-1

                a=a+ A(i,j)*A(k,j);  

            end;

            if k==i

                A(i,i)=sqrt((X(i,i)-a)); 

            end

            if k~=i

                A(k,i)=(X(i,k)-a)/A(i,i);

            end;

        end;

    end;

    B=A';

    if det(X)-det(A*B)<0.000000001

        C=0;

    end

    end

    function [X,xh] = sym_pd(n)

    %生成n行n列的对称正定矩阵(X),xh为该矩阵的特征值,正定矩阵特征值均大于0

    A=randn(n,n);

    B=A';

    C=A*B+0.01*eye(n);

    X=C;

    xh=eig(X);

    end

    展开全文
  • 1、常见的分解方法(1)三角分解(LU分解)(2)正交分解(QR)(3)特征值分解(eig分解)(4)奇异值分解(svd)(5)Chollesky分解2、三角分解(LU分解)>> A = [1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]A =1 2 3 45 6 7 89 10...
  • 中国科学院大学矩阵分析与应用的课程中所涉及的各种矩阵分解(如lu分解)的matlab源程序,也是这门课程的大作业。对学习这门课程有所帮助,希望采纳!!!
  • 几种矩阵分解算法的matlab实现;几种矩阵分解算法的matlab实现;几种矩阵分解算法的matlab实现;几种矩阵分解算法的matlab实现;几种矩阵分解算法的matlab实现
  • 1,1,1]*A我有两点疑问:161051*75287520这么大的矩阵,MATLAB根本读不进来。(我粗算了一下占用内存约几十万个G)除非是用稀疏矩阵。所以我对你的问题表示怀疑,因为你没有办法将这些数一次读进MAT...
  • 【实例简介】低秩矩阵分解代码,inexact alm【实例截图】【核心代码】inexactalm└── inexact alm├── inexact_alm_rpca│ ├── choosvd.m│ ├── inexact_alm_rpca.asv│ ├── inexact_alm_rpca.m│ ├─...
  • 通常矩阵分解如svd或其他什么的分解都会把矩阵分解为有正有负的矩阵,而他的这种分解方法就把矩阵完全分解成只有正数的矩阵,因为现实世界中如图像,负数是没什么意义的,所以这种只分解为正数矩阵的分解方法就很有...
  • matlab矩阵分解

    2016-11-05 17:35:02
    矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解(三角分解)、QR分解(正交变换)、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。 (1) LU分解...
  • matlab矩阵分解

    2019-10-03 18:04:58
    矩阵分解  矩阵分解 (decomposition,factorization)是将矩阵拆解为数个矩阵的乘积。 1.三角分解法: 要求原矩阵为方阵,将之分解成一个上三角形矩阵(或是排列(permuted) 的上三角形矩阵)和一个下三角形矩阵,...
  • Matlab矩阵分解

    千次阅读 2015-11-04 17:07:21
    矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解(三角分解)、QR分解(正交变换)、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。 (1) LU...
  • matlab 矩阵分解

    万次阅读 2012-02-15 10:36:50
    矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。   (1) LU分解 矩阵的LU分解就是将一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 971
精华内容 388
关键字:

矩阵分解matlab

matlab 订阅