minimum of a 3D matrix
    10 views (last 30 days)
  
       Show older comments
    
M=rand(2,2,3)
[minM idx] = min(M(:));
[n m t] = ind2sub(size(M),idx)
minM
M(n,m,t)
I know this will give the minimum of the M matrix.
However, I want minimum value only for each M(:,:,i) part.
Is there anyway to do that?
Thanks in advance!
0 Comments
Accepted Answer
  Azzi Abdelmalek
      
      
 on 31 Oct 2012
        
      Edited: Azzi Abdelmalek
      
      
 on 31 Oct 2012
  
      M=rand(2,2,3);
out=min(reshape(min(M),size(M,2),[],1))'
or
out=arrayfun(@(x) min(min(M(:,:,x))),1:size(M,3))'
If you want to get the corresponding index
M=rand(6,4,5);
[n,m,p]=size(M)
[c,idx]=min(M)
[c1,idx2]=min(c)
idx1=arrayfun(@(x) idx(1,idx2(1,1,x),x),(1:p)') 
v=[c1(:) idx1(:) idx2(:) (1:p)' ]
0 Comments
More Answers (1)
  Image Analyst
      
      
 on 31 Oct 2012
        Try this:
minOfPlane = min(min(M(:,:, t)))
9 Comments
  Andrei Bobrov
      
      
 on 31 Oct 2012
				[v, i1] = min(reshape(M,[],size(M,3)));
min_idx_m_n_t = [rem(i1-1,size(M,1))+1; ceil(i1/size(M,1)); 1:size(M,3)]';
See Also
Categories
				Find more on Creating and Concatenating Matrices 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!



