0

我有N kx1稀疏向量,我需要将它们中的每一个乘以它们的转置,创建 N 个方阵,然后我必须对它们求和。k所需的输出是k矩阵。我曾尝试在循环中执行此操作并使用 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 而不是 reshape (较慢), ndSparse 而不是 full (慢得多),并fun_sigma_i返回一个完整的矩阵而不是一个稀疏的矩阵(较慢)。

谢谢您的帮助!,

4

0 回答 0