Matlab - 创建N个稀疏矩阵并求它们

时间:2014-01-10 21:12:35

标签: matlab matrix sparse-matrix sparse-array

我有N kx1稀疏向量,我需要通过它们的转置将它们相乘,创建N个平方矩阵,然后我必须求它。所需的输出是kk矩阵。我已尝试在循环中使用arrayfun执行此操作,但两种解决方案都太慢了。也许你们其中一个人可以更快地拿出一些东西。以下是我提出的最佳解决方案的具体细节。

mdev_big kN稀疏矩阵,包含每个N向量。

fun_sigma_i = @(i) mdev_big(:,i)*mdev_big(:,i)';

sigma_i = arrayfun(fun_sigma_i,1:N,'UniformOutput',false);

sigma = sum(reshape(full([sigma_i{:}]),k,k,N),3);

此过程的缓慢部分是sigma_i已满,但我无法将其重新整形为3d数组。我也试过cat而不是重塑(慢),ndSparse而不是full(慢一点),并使fun_sigma_i返回一个完整的矩阵而不是稀疏的(慢)。

感谢您的帮助! ,

0 个答案:

没有答案