Find maxima every n positions in 3D matrix
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
James Tursa
2017-9-11
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?
采纳的回答
Image Analyst
2017-9-11
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
更多回答(1 个)
Kaushik Lakshminarasimhan
2017-9-11
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!