Salut à tous,

Par cette journée pluvieuse, je me suis mis à coder un peu et je cherche à faire un peu d'optimisation.
Si vous avez aussi envie de vous prendre au jeu...

Imaginons qu'on ait une matrice du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
matrice_initiale=[1,2,3,1,2,3,1,2,1,1,2;...
 1,1,1,2,2,2,3,3,4,5,5;...
 1,2,5,8,9,7,8,9,3,1,4;...
 2,6,6,7,8,9,8,5,1,5,3;...
 3,6,1,3,3,7,8,9,5,2,4;...
 4,5,6,7,8,2,3,4,5,6,4]
La 1e ligne serait un index, la seconde notre abscisse et les suivantes des ordonnées.
J'ai cherché à tracer sur 3 figures (liés à l'index) des subplot des 4 ordonnées et ça me donne:

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
31
32
33
34
35
36
37
38
39
40
41
function tracepasoptimisee(matrice_initiale)
% matrice_initiale:
% Index
% X
% Y1
% Y2
% Y3
% Y4
 
%Tri par colonne selon la ligne 1
[pasbesoin,idx] = sort(matrice_initiale(1,:))
matrice_triee=matrice_initiale(:,idx)
% ans =
% 
%      1     1     1     1     1     2     2     2     2     3     3
%      1     2     3     4     5     1     2     3     5     1     2
%      1     8     8     3     1     2     9     9     4     5     7
%      2     7     8     1     5     6     8     5     3     6     9
%      3     3     8     5     2     6     3     9     4     1     7
%      4     7     3     5     6     5     8     4     4     6     2
 
%Recherche en ligne 2 des termes égaux à 1
debut=find(matrice_triee(2,:)==1)%!sous réserve que le nouveau plot commence toujours à index=1
%ans =
%
%     1     6    10
 
nbplot=matrice_triee(1,end)% 3 ici
 
for i=1:nbplot%boucle plot
    figure
    if i~=nbplot
        temp=matrice_triee(:,debut(i):debut(i+1)-1)%sous-matrice
    else
        temp=matrice_triee(:,debut(nbplot):size(matrice_triee,2))%dernière sous-matrice
    end
    for j=1:4%boucle des 4 graphes
        subplot(4,1,j); plot(temp(2,:),temp(j+2,:))
        title(strcat('elle est jolie ma figure n° ',num2str(j),' :)'));
    end%j
end%i
Je suis assez fier de moi mais je cherche à optimiser ce code que je trouve long et parfois fastidieux,
donc si vous avez des astuces...
J'ai notamment un vilain lag sur le tracé de la dernière figure... (à cause du if else?)
Et y'a-t-il un moyen d'avoir un titre général en haut de figure?

Merci d'avance