maximum value in a 3d matrix
Show older comments
write a MATLAB script that finds the maximum value and its M and N indexes in each of the P pages. (i.e. the max on EACH of the pages, not the single max among all the pages. You will find P maxima and P pairs of indexes.
This is a 3d matrix (m*n*p) and i want to find the maximum value on each "page", as well as its m by n indexes on each page. can anyone please help?
4 Comments
Bola
on 14 Sep 2013
Image Analyst
on 14 Sep 2013
What does that mean? If you have a 640*480*3 array, you want to "plot" 640*480 = 307,200 points? How are you getting those 3 hundred thousand points? Or do you want a 640*480 array of the max value from each page? (That would be like an image and you could use image() or surf() to visualize it.)
Bola
on 14 Sep 2013
Image Analyst
on 14 Sep 2013
Edited: Image Analyst
on 14 Sep 2013
Assuming "page" means a "slice" or "plane" in the "z" (third) dimension, then for each "page" you'll have one or more max values. Let's say you have only one per page just to make it easy. So you have 100 maxes. And each max element will have an x, a y, and a z index. So you can store these in a 100 by 4 array where each row is
[maxValue, x, y, z]
So that's 100*4 = 400 values, or 300 if you're not including the values of the element and just record the x,y,z values, or even 200 if you just have 100 rows and the x and y locations for that row (where the row is the page number). So how do you get 100*100 = ten thousand values?
So, assuming you have the 100 locations (300 x,y,z values) how do you want to plot them? With plot3() or scatter3()?
Accepted Answer
More Answers (1)
Andrei Bobrov
on 14 Sep 2013
s = size(A);
[v,ii] = max(reshape(A,[],s(3)));
[i1 j1 ] = ind2sub(s(1:2),ii);
out = [v;i1;j1;1:s(3)]';
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!