Effacer les filtres
Effacer les filtres

minimum of a 3D matrix

14 vues (au cours des 30 derniers jours)
Qian
Qian le 31 Oct 2012
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!

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 31 Oct 2012
Modifié(e) : Azzi Abdelmalek le 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)' ]

Plus de réponses (1)

Image Analyst
Image Analyst le 31 Oct 2012
Try this:
minOfPlane = min(min(M(:,:, t)))
  9 commentaires
Andrei Bobrov
Andrei Bobrov le 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)]';
Walter Roberson
Walter Roberson le 31 Oct 2012
Ah yes, the 0:2 I used should be 0:size(M,3)-1

Connectez-vous pour commenter.

Catégories

En savoir plus sur Statistics and Machine Learning Toolbox dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by