我有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而不是重塑(慢),ndSparse而不是full(慢一点),并使fun_sigma_i
返回一个完整的矩阵而不是稀疏的(慢)。
感谢您的帮助! ,