我最近学会了如何向量化先前的question中的“简单”嵌套循环。不过,现在我想也向量化下面的循环向量化一个嵌套循环,其中一个循环变量依赖于另一个循环变量
A=rand(80,80,10,6,8,8);
I=rand(size(A1,3),1);
C=rand(size(A1,4),1);
B=rand(size(A1,5),1);
for i=1:numel(I)
for v=1:numel(C)
for j=1:numel(B)
for k=1:j
A(:,:,i,v,j,k)= A(:,:,i,v,j,k)*I(i)*C(v)*B(j)*((k-1>0)+1);
end
end
end
end
所以现在k
取决于在j
...什么都我想到目前为止: 的j
和k
条款(即B(j)*((k-1>0)+1)
的结合使三角矩阵我管理的独立矢量化:
B2=tril([ones(8,1)*B']');
B2(2:end,2:end)=2*B2(2:end,2:end);
但是,这给我的(J,K)矩阵正确,而不是一种方法,用它来向量化剩余的循环也许我在错误的道路了。 ..那么我怎样才能矢量化这种类型的循环?
太棒了!它更优雅,运行速度比@ natan的解决方案快25%。 – Max 2014-10-06 17:24:35
@Max太棒了!很高兴知道这一点! – Divakar 2014-10-06 17:30:45
这个解决方案让我想起[Ramanujan](https://en.wikipedia.org/wiki/Srinivasa_Ramanujan)。我完全不知道你是怎么想出这个答案的。 – rayryeng 2015-11-25 22:22:06