Find maxima every n positions in 3D matrix

Hello! I have a 500x400x120 matrix. I need to get the maximum values of every 12 steps in the 3rd dimension, so to end up with a 500x400x10 matrix. I tried
max(matrix(:,:,1:12:end),[],3)
but it gives me a 500x400 matrix as a result. Any ideas? Thanks in advance!

2 Comments

Do you mean max of matrix(:,:,1:12) across the 3rd dimension being the first 2D matrix, then the max of matrix(:,:,13:24) across the 3rd dimension being the next 2D matrix, etc?
Yeah, exactly!

Sign in to comment.

 Accepted Answer

Do that 10 times but with the indexes correct:
means = zeros(500, 400, 10);
for k = 1 : 10
z1 = (k - 1) * 12 + 1;
z2 = z1 + 11;
means(:, :, k) = max(matrix(:,:, z1:z2), [], 3);
end

More Answers (1)

Here's one with while loop. There's probably a faster way.
stepsize = 12; count = 1; i=1;
while i<=size(mymatrix,3)
mymaxmatrix(:,:,count) = max(mymatrix(:,:,i:i+stepsize-1),[],3);
count = count+1; i=i+stepsize;
end

Categories

Asked:

on 11 Sep 2017

Commented:

on 11 Sep 2017

Community Treasure Hunt

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

Start Hunting!