2014-03-25 34 views
2

我想做出类似的图来此上的图片给出: enter image description here如何找到特征值非二次矩阵

我使用费舍尔虹膜数据,并采用PCA,以减少维数。 这是代码:

load fisheriris 
[pc,score,latent,tsquare,explained,mu] = princomp(meas); 

我猜的特征值在潜伏性的给予,那就说明我只有四个特性,并减少约数据。

我的问题是如何显示原始矩阵的所有特征值,这不是二次的(150x4)?请帮忙!非常感谢您提前!

+0

那么问题是什么呢?你不能指望一个150×4矩阵有超过4个特征值 – patrik

+1

她想确定非矩阵矩阵的特征值,这当然不存在,而不是术语特征值我们有奇异值,我们可以通过svd分解找到例如 –

+0

当然,但仍然不超过4个奇异值。顺便说一下,顺便说一句,可以发现与svd +1 – patrik

回答

6

简短(而且没用)的答案是[V,D] eig(_)函数为您提供了特征向量和特征值。不过,恐怕我对你有坏消息。特征值和特征向量仅存在于矩阵中,因此您的150x4矩阵的特征向量有no

所有不会丢失。 PCA实际上使用协方差矩阵的特征值,而不是原始矩阵的特征值,并且协方差矩阵总是平方的。也就是说,如果您有矩阵A,则协方差矩阵为AA T

协方差矩阵不仅是平方的,它是对称的。这很好,因为矩阵的奇异值与它的协方差矩阵的特征值有关。检查以下Matlab代码:

A = [10 20 35; 5 7 9]; % A rectangular matrix 
X = A*A';    % The covariance matrix of A 

[V, D] = eig(X);  % Get the eigenvectors and eigenvalues of the covariance matrix 
[U,S,W] = svd(A);  % Get the singular values of the original matrix 

V是包含特征向量的矩阵,D包含特征值。现在,以下关系:

SS Ť〜d

ü〜Ⅴ类

我用 '〜' 以指示而它们是 “相等”,符号和顺序可以变化。对于特征向量没有“正确的”顺序或符号,所以任一个都是有效的。不幸的是,你将只有四个特征(除非你的数组本来就是相反的)。

+0

非常好的回应!非常感谢!!! – user19565