Bonjour,

Voici mon problème:
J'ai une matrice initiale (C) de la forme n lignes, 2 colonnes:
1	0.1
1	0.09
1	0.2
2	0.09
2	0.08
3	0.1
3	0.08
4	0.09
4	0.09
Je veux une matrice finale de la forme m lignes (autant que de valeurs discrètes dans la première colonne de la matrice initiale), 3 colonnes:

	Mean	Std	
1	0.13	0.0608276
2	0.085	0.00707107
3	0.09	0.0141421
4	0.09	0

En faisant des boucles, j'arrive à créer ma matrice mais ça prend un temps fou parce que ma matrice initiale est énorme (>10e6 valeurs)!

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
 
Result=zeros(length(A),2);
Result(:,1)=A(:);
Result(:,2)=B(:);
C=sortrows(Result,1); %Matrice initiale dans mon post
 
i=0;j=0;k=0;l=0;
 
for(j=1:max(B(:,1)))
    for(i=1:length(B))
        if(B(i,1)==j)
            k=k+B(i,2);
            l=l+1;
            Std_k(l)=B(i,2);
        end
    end%for
    Result2(j,1)=j;
    %Result2(j,1) contient les différentes valeurs discretes
    Result2(j,2)=k/l;
    %Result2(j,2) contient la valeur moyenne
    Result2(isnan(Result2))=0;
    %Result2(j,3) contient l'écart-type
    Result2(j,3)=std(Std_k);
    k=0;
    l=0;
    Std_k=0;
end%for
Il doit bien y avoir une méthode moins bourrine et plus subtile pour faire ça en Matlab, mais je ne vois pas...

Merci d'avance!

Sébastien