Matlab: supprimer les lignes identiques
Fermé
Lucky2013
Messages postés
1
Date d'inscription
mercredi 5 septembre 2012
Statut
Membre
Dernière intervention
5 septembre 2012
-
5 sept. 2012 à 15:36
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 5 sept. 2012 à 22:51
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 5 sept. 2012 à 22:51
A voir également:
- Matlab: supprimer les lignes identiques
- Supprimer compte instagram - Guide
- Supprimer une page word - Guide
- Supprimer compte facebook - Guide
- Supprimer les cookies - Guide
- Supprimer les doublons excel - Guide
3 réponses
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
5 sept. 2012 à 16:10
5 sept. 2012 à 16:10
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
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.
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.
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
5 sept. 2012 à 22:51
5 sept. 2012 à 22:51
je te conseil alors de faire des impression pour savoir où le problème se présente et pour quelles valeurs d'indices.