【发布时间】:2011-05-21 07:25:50
【问题描述】:
我正在开展一个项目,我基本上在 20-100 点的集合上执行数百万次 PCA。目前,我们正在使用一些遗留代码,这些代码使用 GNU 的 GSL 线性代数包对协方差矩阵进行 SVD。这可行,但速度很慢。
我想知道是否有任何简单的方法可以在 3x3 对称矩阵上进行特征分解,这样我就可以将它放在 GPU 上并让它并行运行。
由于矩阵本身很小,我不确定要使用哪种算法,因为它们似乎是为大型矩阵或数据集设计的。也可以选择对数据集进行直接 SVD,但我不确定什么是最佳选择。
我必须承认,我在线性代数方面并不出色,尤其是在考虑算法优势时。任何帮助将不胜感激。
(我现在正在使用 C++)
【问题讨论】:
-
您需要哪些具体值?你需要特征值本身吗?因式分解?求解线性系统?更多细节可能会有所帮助。
-
我需要 3 个特征值本身,以及最后一个特征向量。谢谢
-
您可以使用解析方法,再加上多精度算术。它应该比基于 QR 的迭代方法更快,并且应该只包含几个分支。
标签: c++ algorithm optimization cuda linear-algebra