I recently learned how to vectorize a “simple” nested loop in a previous question that I asked. However, now I am trying to vectorize the next loop as well
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
So now k depends on j ... What I have tried so far: The combination of the terms j and k (i.e. B(j)*((k-1>0)+1) gives a triangular matrix, which I manage to independently vectorize:
B2=tril([ones(8,1)*B']'); B2(2:end,2:end)=2*B2(2:end,2:end);
But this gives me the (j, k) matrix correctly, and not a way to use it to vectorize the remaining loop. Maybe I'm wrong too ... So, how can I vectorize this type of loop?