我有一个q包含200元素的行向量和另一个行向量 ,dij它是pdist具有当前48216200元素的函数的输出,但我希望能够更高。我想做的操作本质上是:
t=sum(q'*dij,2);
然而,由于它试图分配一个200x48211290数组,它抱怨这将需要 70GB 的内存。因此我这样做:
t = zeros(numel(q),1);
for i=1:numel(q)
qi = q(i);
factor = qi*dij;
t(i)=sum(factor);
end
但是,这需要太多时间。太多时间,我的意思是它需要大约36s,这比pdist函数所需的时间长几个数量级。有没有一种方法可以在不显式分配这么多内存的情况下加快此操作?我在这里假设,如果第一种方法可以分配内存,(作为向量操作)它会更快。