给定矩阵A,我需要乘以其他n个向量Bi(即i = 1...n)。A的大小可以为5000x5000,因此Bi可以为5000x1。
如果我按以下方式评估乘积:
结果比计算产品慢得多(数量级),例如:
问题在于向量Bi的数量n可能太大而无法存储在内存中,例如n = 300000,因此我需要使用循环方法,在每次评估乘积时使用它,然后丢弃向量Bi。
为什么这种方法与直接乘法相比如此缓慢,有没有克服这个问题的方法?
如果我按以下方式评估乘积:
for i=1:n
product=A*Bi;
% do something with product
end
结果比计算产品慢得多(数量级),例如:
%assume that S is a matrix that contains the vectors Bi as columns, i.e. S(:,i)=Bi, then:
results=A*S; %stores all the products in matrix form
% do something with results
问题在于向量Bi的数量n可能太大而无法存储在内存中,例如n = 300000,因此我需要使用循环方法,在每次评估乘积时使用它,然后丢弃向量Bi。
为什么这种方法与直接乘法相比如此缓慢,有没有克服这个问题的方法?