Bonjour
J'ai une matrice avec 3 colonnes ( x y z) et .. plein de lignes ^^
Mon vecteur z a des valeurs dans le désordre. LA premier étape est de les remettre dans l'ordre ,c'est le vecteur Z_sort . Ensuite je repère leur anciens indice dans la matrice et je fait correspondre les valeurs x et y.
Le problème c'est que parfois il y a plusieurs valeurs de z qui sont identique et donc plusieurs indice. Quand je fais faire correspondres les valeurs x et y , je veux que ces dernières soit dans l'ordre ( vecteur X)
Si j'ai z=[1 5 2 2 6] et x=[50 90 30 12 100] , je veux Z_sort=[1 2 2 5 6]
et X=[50 12 30 90 100] , je veux que cela dans l'ordre seulement si plus d'une valeur de z est identique.
Bon c'est incompréhensible par écrit , j'ai du mal a expliquer :
J'ai fait un code :
Le problème vient de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Z_sort=sort(z); S=1; for n=1:S:numel(x) d=[find(Z_sort(n)==z)]; S=numel(find(Z_sort(n)==z)); if ( S > 1) for j=1:1:S tab(j)= x(d(j)); tab1(j)=y(d(j)); end tab_x=sort(tab); tab_y=sort(tab1); for j=n:1:(n-1+S) X(j)=tab_x(j-n+1); Y(j)=tab_y(j-n+1); end end tab_x=[]; tab=[]; tab1=[]; tab_y=[]; if (S == 1) X(n)=x(d(1)); Y(n)=y(d(1)); end end
Quand n=6 et n=7 , cela correspond a 2 valeurs de z identique. Donc il devrait me mettre 2 valeurs de X différentes dans l'ordre ( 98 et 350). Or , dans les 2 "cases" il met 98 et 98 , il met pas le 350.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 X(j)=tab_x(j-n+1); Y(j)=tab_y(j-n+1);
C'est frustrant car quand je remplace manuellement n par 6 et je je regarde X(j) dans la console il me met bien les 2 bonnes valeurs
voila
merci
Partager