查看: 106|回复: 0|关注: 0

[未答复] 请教各位大佬关于matlabSVD做特征提取代码上的一些问题

[复制链接]

新手

7 麦片

财富积分


050


3

主题

16

帖子

0

最佳答案
发表于 2019-11-17 07:40:54 | 显示全部楼层 |阅读模式
使用svd提取特征做pca的工作的代码
其中蓝色高光的都是不理解的,

[应该D就是特征值的意思而不是奇异值了,后面为什么要开方除,不知道是不是跟均一化有关?
[还有就是mask不知道怎么用以及写的格式,怎么直接就等于U1(mask)而且最后使用的时候也不是U1(mask)只写U1就可以使用,以及为什么前面要变第一列为零,,不知道mask是怎么一回事

菜鸟来袭,其实已经百度过,但是仍然不懂,所以来请教各位大神!
如果可以的话每个公式能解释得清楚一些让我理能够理解吗,,,,,,
感谢各位!!




代码如下:   for i=1:dim(3)
        temp = X(:,i);
        %Compound image after filtering the mask
        Xf(:,i)= temp(Mask(:));
    end


[M N]=size(Xf);
    Xm=mean(Xf,2);
    Xd=Xf-repmat(Xm,1,N);
    if (N < M) %less images than image length
        C=Xd'*Xd;
        [V D Vt]=svd(C);
        U=Xd*V;
       U=U./repmat(sqrt(diag(D)'),M,1);
    else %more images than image length
        C=Xd*Xd';
        [U D Ut]=svd(C);
    end;

    L=diag(D)'/N;   
    if nargin>1
        U=U(:,1:K);
        L=L(1:K);
    end;   


    U(:,1)=max(U(:,2)).*(U(:,1)./max(U(:,1)));
    U1 = X(:,1).*0;
    U2 = U1;
   
    U1(Mask)=U(:,1);
    U2(Mask)=U(:,2);


    Mod =  reshape(sqrt(U1.^2+U2.^2),dim(1),dim(2));


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表