finding median along the third dimension of a 3d array

Hi everyone, I have the following code to find the median of every cell along the 3rd dimension. My program works for column 3 but not for other two. Can someone tell me why? My code is
m=1;
for i=1:size(tempBeforeDelam,1)
n=1;
for j=1:size(tempBeforeDelam,2)
if(abs((tempBeforeDelam(i,j,1)-tempBeforeDelam(i,j,2)))< 1 && ...
abs((tempBeforeDelam(i,j,2)-tempBeforeDelam(i,j,3))) < 1 && ...
abs((tempBeforeDelam(i,j,3)-tempBeforeDelam(i,j,4))) < 1 && ...
abs((tempBeforeDelam(i,j,4)-tempBeforeDelam(i,j,5))) < 1 && ...
abs((tempBeforeDelam(i,j,5)-tempBeforeDelam(i,j,1))) < 1)
for k=1:5
beforeDelam(m,n)= nanmedian(tempBeforeDelam(i,j,k),3);
n=n+1;
beforeDelam(m,n)= nanmedian(tempBeforeDelam(i,j,k),3);
n=n+1;
beforeDelam(m,n)= nanmedian(tempBeforeDelam(i,j,1:5),3);
m=m+1;
end
end
end
end

5 Comments

Note: your "if" can be replaced by
if all( abs( diff([tempBeforeDelam(i,j,:), tempBeforeDelam(i,j,1)]) ) < 1)
Hi walter i tried it but it says there is an error in this line and using horzcat is not possible as Dimensions of matrices being concatenated are not consistent.
if all( abs( diff([ squeeze(tempBeforeDelam(i,j,:)); tempBeforeDelam(i,j,1) ]) ) < 1)
Hi Walter, i have a question. How can i modify the above if statement so that the loop goes on if the value is less than 1 or a nan?? looking forward to your help.

Sign in to comment.

 Accepted Answer

nanmedian(tempBeforeDelam(i,j,k),3) with fixed i, j, k, is taking nanmedian() of a scalar. It doesn't matter which dimension is used, the result is going to be the scalar.
nanmedian(tempBeforeDelam(i,j,1:5),3) should work for the third dimension.
For nanmedian to be useful on any particular dimension, there must be multiple elements along that dimension. For example,
nanmedian(tempBeforeDelam(i,:,k),2)

More Answers (0)

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!