如何找到非二次矩阵的特征值

时间:2014-03-25 10:38:05

标签: matlab matrix plot pca eigenvalue

我想在图片上给出类似的图表: enter image description here

我正在使用Fisher Iris数据并使用PCA来降低维数。  这是代码:

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

我猜这些特征值是在Latent中给出的,它只显示了四个特征,并且是关于减少的数据。

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

1 个答案:

答案 0 :(得分: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 T ~D

U~V

我用'〜'表明虽然他们是“平等”,但标志和顺序可能会有所不同。没有"正确"为特征向量排序或签名,因此要么是有效的。不幸的是,你只有四个功能(除非你的阵列是另一种方式)。