我有N
kx1
稀疏向量,我需要将它们中的每一个乘以它们的转置,创建 N 个方阵,然后我必须对它们求和。k
所需的输出是k
矩阵。我曾尝试在循环中执行此操作并使用 arrayfun,但两种解决方案都太慢了。也许你们中的一个人可以更快地想出一些东西。以下是有关我提出的最佳解决方案的具体细节。
mdev_big
是稀疏矩阵k
,N
包含每个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 而不是 reshape (较慢), ndSparse 而不是 full (慢得多),并fun_sigma_i
返回一个完整的矩阵而不是一个稀疏的矩阵(较慢)。
谢谢您的帮助!,