Matlab: supprimer les lignes identiques [Fermé]

Signaler
Messages postés
1
Date d'inscription
mercredi 5 septembre 2012
Statut
Membre
Dernière intervention
5 septembre 2012
-
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
-
Bonjour,
Je voudrais savoir comment supprimer les lignes identiques dans une matrice M*N sur Matlab. J'ai commencé à le faire par itération, mais après la première itération, le programme s'arrête.

All_XYOpt=All_XYS;
for i=1:size(All_XYOpt,1);
for j=1:size(All_XYOpt,1);
if All_XYOpt(i,2:8)==All_XYOpt(j,2:8) & i~=j;
All_XYOpt(i,:)=[];
end;
XYS=All_XYOpt;
All_XYOpt=XYS;
end;
end;


3 réponses

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 263
All_XYOpt=All_XYS;
for i=1:size(All_XYOpt,1)-1;
for j=i+1:size(All_XYOpt,1);
  if All_XYOpt(i,2:8)==All_XYOpt(j,2:8) & i~=j;
    All_XYOpt(j,:)=[];
    j=j-1;
  end;
  XYS=All_XYOpt;
  All_XYOpt=XYS;
end;
end; 

Voilà comment je ferais si All_XYOpt(j,:)=[]; redimensionne correctement la matrice. Il ne faut pas oublier de décrémenter l'indice j, sinon tu saute une ligne car après une suppression, la ligne x>j devient x-1 du fait du décalage.
De même il vaut mieux supprimer la ligne j plutôt que i pour éviter de supprimer ta ligne de référence (sachant que tu boucle d'abord sur i avant j)
Salut,
Merci pour ta réponse. je comprend plus ou moins ce que tu dis. Cependant je supprime la ligne i parce que ce sont les lignes supérieures dont j'ai besoin. Tu as vu que j'ai commencé par la colonne 2 au lieu de 1 (if All_XYOpt(i,2:8)==All_XYOpt(j,2:8), parce que à la colonne 1 il y a une information dont j'ai besoin et elle doit être prise sur les lignes supérieures
et lorsque j'applique la même erreur se produit.
All_XYOpt=All_XYS;
for i=1:size(All_XYOpt,1)-1;
for j=i+1:size(All_XYOpt,1);
if All_XYOpt(i,2:8)==All_XYOpt(j,2:8) & i~=j;
All_XYOpt(j,:)=[];
j=j-1;
end;
XYS=All_XYOpt;
All_XYOpt=XYS;
end;
end;

et voila le message d'erreur
??? Index exceeds matrix dimensions.
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 263
je te conseil alors de faire des impression pour savoir où le problème se présente et pour quelles valeurs d'indices.