Bonjour à tous,
j'ai un tableau m*n comportant pour chaque case soit un 0 soit un 1.
J'aimerai comparé le profil de mes lignes entre elles, et lorsque certaines lignes ont le même profil, les extraire de mon tableau (en les mettant dans un autre tableau, ainsi j'aurai autant de "sous-tableau" que de profils différents).
Je me suis dit qu'il faudrait prendre la première ligne, la comparer avec les autres, l'extraire elle et ses petites copines, et recommencer l'opération (avec la seconde ligne qui sera passé du coup en tête de tableau) jusqu'à ce que mon tableau initiale soit vide. (s'il y a d'autres "plan" à suivre, je suis aussi preneur
)
Soit A mon tableau :
Soit C et row mon nombre de ligne
1 2 3 4 5 6 7
| %Pour comparer le profil :
for C = 1:size(A,1)
Cligne{C} = A(C,:);
C_ref{C} = Cligne{C}
for row = 2:size(A,1)
Rligne{row} = A(row,:);
corrsp{row} = comp_ref{C} & Rligne{row} |
c'est à partir de là que je suis plutôt perdu.
-> De un ma première comparaison/correspondance me donne [], puisque je pars sur
(en effet je ne vais pas comparer ma première ligne avec ma première ligne. Ou alors je supprime cette comparaison par la suite ?).
-> De deux, je voudrais créer un nouveau tableau avec les lignes identiques. J'ai donc fait :
Nmatrice.reseau{C} = [comp_ref{C},comp_compare]
mais il semble que cela ne marche pas :
1 2 3 4
| " ??? Conversion to cell from double is not possible.
Error in ==> C:\MATLABR11\toolbox\SPM99\danasupprm.m
On line 19 ==> Nmatrice.reseau{C} = [comp_ref{C},comp_compare] " |
-> De 3, je ne sais pas comment supprimer les lignes "à profil identiques" sans que ca fasse planter le bazar : une fois certaines lignes extraites, ma size(A,2) n'est plus la même. Il faudrait une sorte de mise à jour avant le premier "for"
Si quelqu'un a des conseils pour me faire avancer dans ce truc...
merci d'avance !
Dan
Partager