如标题所示,目的是将矩阵进行PCA分析最终得到降维后的新主成分,对于特征值特征向量的提取方法是通过svd。代码和函数名称定义如下/如图所示

function [Xm,U,L]=pca(X,K);

% Usage: [Xm,U,L] = pca(X,K)

% Inputs:

%   X  [M x N]  Compound data matrix.

%   K  1x1  Number of eigenvalues and eigenvectors to be returned.

% Outputs:

%   Xm  [M x 1]  Mean.

%   U   [M x K]  Matrix whose columns consist of eigenvectors.

%   L   [1 x K]  Vector containing eigenvalues.

[M N]=size(X);

Xm=mean(X,2);

Xd=X-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;

问题在于:

1if语句为何分为两种求解模式,

是因为svd求解必须应该是行数大于列数吗?但是现在是行数小于列数的是正常svd的使用,而行数大于列数的才进行了变换,为啥??

而且现在使用的svd是直接通过协方差矩阵,都是方阵形式,svd对原矩阵还有要求吗以至于仍然是分成了两种?为啥呢?

再者,这两种模式下的协方差矩阵就已经发生变化了,比如我理解的第一个if实际上是做各行之间的主成分提取,出来的是各列对应的变化很大的K(降维后为k)行主成分,else后面是第二种模式也就是对于列之间进行了主成分分析,如果说仅仅是因为svd的行列数大小的原因导致求行或者求列之间的主成分分析,那么加入一开始我就是要求的是列之间的pca但是列数就是大于了行数,这不就是出现问题了吗 怎么才算对 这应该怎么整?

还是说,其实无论行pca还是列pca得到的新成分矩阵都是一样的??可是维数不一样

还是说,其实协方差矩阵怎么求解都不影响,只要将求得的特征向量变成相同维数的,最终求得主成分矩阵的行数/列数改变了,就是进行了行/列pca??例如本例中,将特征向量V进行变换维度,整个程序实际上仍是行变换,对吗??与第2小问有联系,请看第2小问

2  U=U./repmat(sqrt(diag(D)'),M,1);

这句代码我查了一下相当于因子得分系数也就是等于各列的特征向量,所以V本来就是特征向量了,这句的目的就是第1小问中的变换了维数是吗?以确保是同一种行之间的主成分分析???

所以包括均值的处理,这一整个程序求解的都是行之间的pca分析,对吗??

所以如果我需要求列变换了,是可以直接使用V和原矩阵,求得列之间pca后的新主成分矩阵,对吗??

并且整个程序新的主成分分量矩阵相当于到最后都没有求解,对不对?

3

if nargin>1

U=U(:,1:K);

L=L(1:K);

end;

这几句我理解是降维后的特征向量,降维后的特征值,但是 L=diag(D)'/N; 特征值除以列数,是为什么?

4

想问最终变换后的新矩阵,这里应该是Y=U’ X,Y是[k,n],对吗??

因为公式一样,所以我如果想要算出 Y(1,:)/Y(2,:),可以直接使用U'(1,:)/U’(2,:),不可以,对吗??维数也不一样,而且矩阵乘法也不能抵消,是吗??

无论是pca还是svd还是因子分析(应该无大关系)甚至矩阵,本人水平都很菜,所以前来向大佬们请教!望各位大佬不吝赐教!!感谢各位大佬的指导!!!

matlab pca svd,关于使用SVD进行PCA主成分提取的代码问题!也是必须涉及到原理的!...相关推荐

  1. matlab mysvd代码解释,关于使用SVD进行PCA主成分提取的代码问题!也是必须涉及到原理的!...

    如标题所示,目的是将矩阵进行PCA分析最终得到降维后的新主成分,对于特征值特征向量的提取方法是通过svd.代码和函数名称定义如下/如图所示 function [Xm,U,L]=pca(X,K); % ...

  2. matlab求信号的瞬时相位,phrase MATLAB中关于信号瞬时相位和瞬时频率的提取的代码 - 下载 - 搜珍网...

    瞬时相位.频率参考/2ASK.txt 瞬时相位.频率参考/2psk_feature.m 瞬时相位.频率参考/moulation classification/classification rate s ...

  3. MAT之PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并《测试集辛烷值含量预测结果对比》

    MAT之PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并<测试集辛烷值含量预测结果对比> 目录 输出结果 实现代码 输出结果 后期更新-- 实现代 ...

  4. matlab偏最小二乘截距,matlab代写偏最小二乘回归(PLSR)和主成分回归(PCR)

    原标题:matlab代写偏最小二乘回归(PLSR)和主成分回归(PCR) 原文:http://tecdat.cn/?p=2655 此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回 ...

  5. matlab求信号的瞬时相位,phrase MATLAB中关于信号瞬时相位 频率的提取的代码,值得学习,很实用 267万源代码下载- www.pudn.com...

    文件名称: phrase下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 2403 KB 上传时间: 2014-05-06 下载次数: 94 提 供 者: 杨 ...

  6. PCA(主成分分析)+SVD(奇异值分解)+区别

    PCA(主成分分析)+SVD(奇异值分解)+区别 SVD怎么操作是行压缩? SVD怎么操作是列压缩? PCA和SVD又是什么关系? SVD其实是两个方向的PCA而已.但是SVD其实不是算法,而只是一种 ...

  7. matlab 判断矩阵奇异,Matlab 奇异值、奇异矩阵、svd函数

    奇异值: 奇异值分解法是线性代数中一种重要的矩阵分解法,在信号处理.统计学等领域有重要应用. 定义:设A为m*n阶矩阵,A'表示A的转置矩阵,A'*A的n个特征值的非负平方根叫作A的奇异值.记为σi( ...

  8. matlab和python中的svd分解的区别

    matlab中的svd分解中 得到的第三项是V, 代码如下: A=[1 2 3 4 5 6 7 8 9; 5 6 7 8 9 0 8 6 7; 9 0 8 7 1 4 3 2 1; 6 4 2 1 3 ...

  9. matlab 归一化_MATLAB主成分PCA人脸识别深度解析(一)

    前言:人脸识别是一个很经典的课题,围绕它可以做成很多实际应用,比如教室人脸考勤,人脸门禁系统,无人超市购物系统,刷脸支付系统等等.可是,为什么这一切是靠什么进行匹配人脸的呢,怎么那么神奇呢.人脸识别的 ...

最新文章

  1. linux mysql换成_把 SQL Server 迁移到 Linux?不如换成 MySQL
  2. android studil打断点_Android Studio你不知道的调试技巧
  3. 1143 Lowest Common Ancestor (30 分)【难度: 中 / 知识点: 最低公共祖先 未完成】
  4. 设置asp.net网站的信任等级
  5. Lind.DDD.Manager里的3,7,15,31,63,127,255,511,1023,2047
  6. 如何导入数据模板到MVC
  7. CSV大文件的处理(以ngsim数据为例):分割、导入与合并
  8. Android - 布局详解之LinearLayout与RelativeLayout
  9. 网络爬虫相关程序学习(包含jar包等)---各大网站网络爬虫
  10. 【poj3615】 Cow Hurdles
  11. go - json -struct
  12. Mybatis源码详细分析(最新最全)
  13. 购买三维扫描仪的7大准则
  14. centos老是自动更换ip地址解决方案
  15. 多益网络产品专员面经分享
  16. SCI收录的文献类型与认证的文献类型
  17. status(c语言)
  18. WinRAR 4.01 key!注册文件 注册码
  19. Coco2d-x 3.x : Cocos Studio 制作的UI无法正确显示,出现绿色或白色底
  20. C#开发:创建gif图片

热门文章

  1. 笔记本插上HDMI转VGA后,扬声器或音频孔没声音
  2. 【苹果相册推】imessage软件安装推信服IP数据报范例也是0x0800
  3. EasyExcel(二) 导入导出excel的数据格式转换
  4. 《中国人工智能学会通讯》——2.27 利用深度学习改进统计机器翻译
  5. Switf的基本语法
  6. WM8994驱动 STM32 WM8994驱动( STM32f746gdiscovery WM8994驱动)
  7. WebService之通讯协议:SOAP
  8. 华为OD机试 - 最多等和不相交连续子序列(Java JS Python)
  9. django + sae 部署微信后台
  10. 2022 云原生编程挑战赛火热报名中!看导师如何拆解 Serverless 赛题?