MATLAB: How can i remove for loops

for loopMATLAB

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

Just preallocating Rup should speed this up:
First line:
Rup = zeros(size(A));
Related Question