我最近學會了如何向量化先前的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