Matrice avec matlab

Résolu/Fermé
Ballim - 21 nov. 2008 à 15:26
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 22 nov. 2008 à 17:11
Bonjour,

J'ai un petit problème; j'ai une matrice A de la forme
12 12
12 12
01 02
03 77
03 77
03 77

je cherche à avoir une matrice B de la forme

12 12
01 02
03 77

et un vecteur u qui indique le nombre de fois qu'apparait chaque ligne, ici dans mon exemple
je veux donc

u=[2;1;3] la ligne [12,12] apparait 2 FOIS, la ligne [01,02] une fois...

Quelqu'un pourrait me dire comment faire ou quelle fonctions utiliser?

3 réponses

En fait j'arrive à avoir la matrice B avec la commande
B=unique(A,'rows')

c'est le vecteur u qui me pose problème
0
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 834
21 nov. 2008 à 21:02
Salut
[B I J]=unique(A,'rows','first');
u=sum(repmat(J,1,size(B,1))==repmat((1:size(B,1)),size(A,1),1));
[k l]=sort(I);
B=A(k,:);
u=u(l);
Ciao
0
Merci pour ta réponse mais j'ai un problème avec la fonction unique

??? Error using ==> unique
Too many input arguments.

Error in ==> essai at 4
[B I J]=unique(A,'rows','first');
0
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 834
22 nov. 2008 à 17:11
Salut
C'est bizarre ça O_o
T'as quelle version de Matlab ?
J'ai testé avant de te donner les 5 lignes de code et ça marchait bien.
0