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 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 5 sept. 2012 à 22:51
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 5 sept. 2012 à 22:51
A voir également:
- Matlab: supprimer les lignes identiques
- Loi normale matlab - Forum Matlab
- Moyenne glissante matlab - Forum Matlab
- Fonction triangle matlab - Forum Matlab
- Filtre moyenneur matlab - Forum Photo numérique
- Interpolation de lagrange matlab ✓ - Forum Matlab
3 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
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
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
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.