我有一个源矩阵和目标矩阵,我用稀疏函数创建了一个邻接矩阵。
W = sparse(w1(:,1),w1(:,2),1,n,n);我的n大约等于540,000 (这是我拥有的数据的子集)。创建矩阵本身在计算上非常容易。但是,我需要得到所述矩阵的特征值。更准确地说
rho = max(abs(eigs(W)));这一行代码要花很长时间。仔细研究一下,我被引导相信获取稀疏矩阵的特征值在计算上是很费钱的。我不能使用完整的命令,比如uint8( full (W)),因为我最终超过了最大矩阵大小/内存容量(130 of内存)。但是,如果格式是uint8,我就可以创建完整的邻接矩阵。
任何帮助都是非常感谢的。我认为我需要的是以下其中之一
发布于 2016-01-12 18:41:50
使用W = sparse(w1(:,1),w1(:,2),1,n,n);,您将创建一个只包含0或1的矩阵。虽然数据类型uint8是不可能的,但您可以选择创建sparse logical矩阵。这样可以避免使用64位数据类型。
W = sparse(w1(:,1),w1(:,2),true,n,n);
W = uint8(full(W));发布于 2016-01-12 21:24:01
知道您使用整数的计划不是解决方案,我再次阅读了您的问题,并意识到您正在浪费许多性能,没有正确地使用eigs。如果您只感兴趣的大小最大的特征值,只计算这个特征值。
rho = abs(eigs(W,1));https://stackoverflow.com/questions/34751165
复制相似问题