Posted September 24, 200915 yr Bonjour, J'ai un tableau de taille 600x3 et je souhaiterais le trier selon la première colonne par ordre croissant, c'est à dire que si l'élément (i,1) est le plus petit élément de la colonne 1 alors la première ligne de mon tableau trié sera composée des éléments (i,1) (i,2) (i,3)... Et ainsi de suite pour les autres lignes. (J'espère que c'est assez clair) Je programme sous MATLAB. Ca fait 24h que je me retourne le cerveau mais la je craque un peu! Merci de votre aide
September 25, 200915 yr Je crois que ce sont les fonctions sort et gsort qui permettent de trier une matrice. [s,k]=gsort(a,'lr','i') trie les lignes de la matrice a dans l'ordre lexical croissant. s est obtenue par une permutation des lignes de la matrice a (donnée par le vecteur k) de telle manière que les lignes de s vérifient s(i,:) > s(j,:) si i<j. gsort a plus de propriétés, comme le support des %nan et %inf, ce qui est souvent pratique.
September 25, 200915 yr Author Je crois que ce sont les fonctions sort et gsort qui permettent de trier une matrice.[s,k]=gsort(a,'lr','i') trie les lignes de la matrice a dans l'ordre lexical croissant. s est obtenue par une permutation des lignes de la matrice a (donnée par le vecteur k) de telle manière que les lignes de s vérifient s(i,:) > s(j,:) si i<j. gsort a plus de propriétés, comme le support des %nan et %inf, ce qui est souvent pratique. Merci de la réponse mais ca ne fonctionne pas! gsort n'est pas une fonction MATLAB Quant à sort, il trie selon tous les éléments de la matrice et ce n'est pas ce que je recherche. J'ai essayé ceci mais j'ai un problème de dimension : [N1bisbis,P1bisbis]=size(E1bisbis); E1bisbis est la matrice à trier selon la 1ère colonne E1biscol=E1bisbis(:,1); for i=(1:N1bisbis) E1biscol(i,2)=i; end k=0; i=1; for i=(1:N1bisbis) for j=(1:N1bisbis-i) if E1biscol(j,1)==min(E1biscol(:,1)) %%%%%%%%PROBLEMES DE DIMENSIONS%%%%%%%% k=k+1; E1fin(k,:)=E1bisbis(E1biscol(j,2)); E1biscol(j,:)=[]; i=i+1; end end end
Archived
This topic is now archived and is closed to further replies.