2013-05-31 4 views
0

J'ai une grande matrice avec la taille (1000,1000,20)Matlab comparer les éléments d'une grande matrice

Je dois comparer les éléments à la position (x,y,1) avec (x,y,2) et (x,y,3) et ainsi de suite jusqu'à ce (x,y,20) pour trouver le minimum, et l'indice où le minimum est.

Au final je veux 2 nouvelles matrices avec la taille (1000,1000,1): une avec l'élément minimum, et une avec l'index où le minimum était.

Par exemple, j'ai:

A(:,:,1)=[1,2;2,4] 

A(:,:,2)=[0,3;1,2] 

Je veux obtenir les matrices:

X = [0,2;2,4] 

et:

Y=[2,1;1,1] 

avec les informations d'index.

Je peux le résoudre avec une boucle, mais je voudrais utiliser une méthode plus efficace.

Répondre

0

Je pense que votre exemple doit être réécrite, mais la fonction min intégré fera l'affaire:

[C,I] = min(A,[],3) 
+0

que son fonctionnement – user2441536

0

Vous pouvez utiliser la fonction min pour cela.

Quand il est utilisé de cette façon:

[C, I] = min(A, [], dim) 

il renvoie les plus petits éléments le long de la dimension donnée dim dans C et leurs indices I.

Les indices renvoyés sont des indices linéaires, que vous pouvez transformer en indices en utilisant ind2sub pour chaque index.

Questions connexes