I'm trying to remove for loops from a code I wrote long time ago.
function [Rup] = updateR(A,E,S) [imax,jmax,zmax] = size(A); for z = 1 : zmax Stmp = S(:,:,setdiff(1:zmax,z)); Atmp = A(:,:,setdiff(1:zmax,z)); Etmp = E(:,:,:,:,setdiff(1:zmax,z)); for i = 1 : imax for j = 1 : jmax sumtmp = permute(sum(sum(Etmp(i,j,:,:,:), 3), 4),[1 2 5 3 4]); beta = (Stmp(i,j,:)+Atmp(i,j,:)+sumtmp); n = - max(beta); EEtmp = E(i,j,:,:,z); Rup (i,j,z) = S(i,j,z) + n + sum(EEtmp(:)); end end end
A,R,S are [N x M x P] matrices.
I tried a lot by myself, but I have no confidence with the tricks useful to remove loops. Can anyone help me?
Matteo
Best Answer