【发布时间】:2014-07-29 19:02:27
【问题描述】:
我正在尝试找出大型数据集的特征值/特征向量以便计算
PCA。我可以计算2x2、3x3 等的特征值和特征向量。
问题是,我有一个包含 451x128 的数据集,我计算协方差矩阵 给了我 128x128 的值。因此,这如下所示:
A = [ [1, 2, 3,
2, 3, 1,
..........,
= 128]
[5, 4, 1,
3, 2, 1,
2, 1, 2,
..........
= 128]
.......,
128]
计算 128x128 向量的特征值和向量似乎非常困难,而且
会占用大量的计算能力。但是,如果我允许 A 中的每个 块 是二维 (3xN),那么我可以计算协方差矩阵,这将给我一个 3x3 矩阵。
我的问题是:对于求解特征值和向量,这是一个好的还是合理的假设?像这样的:
A 是一个包含 128x451 的二维向量, foreach 块计算协方差向量的特征值和特征向量, 像这样:
Eig1 = eig(cov(A[0])) Eig2 = eig(cov(A[1]))
这会给我 128 个特征值(对于 128x128 向量内的每个块)..
如果这不正确,MATLAB 如何处理如此大的维度数据?
【问题讨论】:
-
“如果这不正确”是什么意思?并且MATLAB可以在几分之一秒内找到大方阵的特征向量和特征值..
-
@AdarshChavakula 嘿,我正在尝试创建一个算法(在 C++ 中),它可以在不使用第三方软件的情况下计算特征值和特征向量。我可以计算
2x2,@ 987654327@ 但我对如何计算大型方阵感到困惑。我不太明白 matlab 是如何做到的 - 这有意义吗?
标签: matlab vector pca svd eigenvalue