IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

moyenne et ecart type d'un tableau


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 61
    Points : 31
    Points
    31
    Par défaut moyenne et ecart type d'un tableau
    bonjour;
    j'ai le code suivant
    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
    42
    43
    44
    45
    46
    47
    48
    nexe=1;
    while nexe<50
    x1=-1.2;    %point de départ imposé par mon énoncé: 
    y1=1;        %   P=[-1.2,1]
    T=70;
    RepetitionTfixe=0;  %compteur à zéro
    xbest=-1.2;          % la meilleur solution est pour l'instant le pt de départ
    ybest=1;
    n=4;
     
    while(T>0.01)
        
        while(RepetitionTfixe<50)
     
            x2= x1 + ( (rand(1,1)-rand(1,1))*n);     %recherche d'un point voisin
            y2= y1 + ( (rand(1,1)-rand(1,1))*n);
            Delta=Rosenbrock(x2,y2)-Rosenbrock(x1,y1);  %calcul du delta
            
            if Delta<0
                x1=x2;
                y1=y2;
                Gamma=Rosenbrock(xbest,ybest)-Rosenbrock(x1,y1);
                if Gamma>0
                    xbest=x1;
                    ybest=y1;
                end
                
            else
                p=rand(1,1);    % on tire aléatoirement p entre 0 et 1
                if p< exp(-Delta/T)  % critère de metropolis
                    xbest=x2;           % on sauve les valeurs 
                    ybest=y2;
                    
                end
            end	
            RepetitionTfixe=RepetitionTfixe+1;  
        end
        T=0.99*T;  % une méthode parmi d'autre de "cooling schedule"
        n=0.99*n;   % on diminue l'intervalle de recherche du point voisin
        RepetitionTfixe=0;  % remise à zéro du compteur une fois les 50 répétitions
    plot(T,f_best)
    end
    nexe=nexe+1;            
    [Rosenbrock(xbest,ybest)  xbest ybest]
    
    
    end
    donc je trouve 50 résultat comme suit

    67.1122 -1.3298 -0.1185


    ans =

    149.5970 0.1319 3.5099


    ans =

    149.5970 0.1319 3.5099


    ans =

    144.5970 0.1319 3.5099


    ans =

    247.5970 0.1319 3.5099
    ............
    ...............
    ..........
    je veux dans le même programme trouver les commaande pour
    1- stoker les résultat dans un tableaux dans autre fichier
    2- trouver la moyenne et l'écart type et la valeur minimale du tableaux .
    et merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Pour stocker les valeurs dans un tableau à cahque itérations :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    nexe=1;
    while nexe<50
    x1=-1.2;    %point de départ imposé par mon énoncé: 
    y1=1;        %   P=[-1.2,1]
    T=70;
    RepetitionTfixe=0;  %compteur à zéro
    xbest=-1.2;          % la meilleur solution est pour l'instant le pt de départ
    ybest=1;
    n=4;
     
    tab = [];
    
    while(T>0.01)
        
        while(RepetitionTfixe<50)
     
            x2= x1 + ( (rand(1,1)-rand(1,1))*n);     %recherche d'un point voisin
            y2= y1 + ( (rand(1,1)-rand(1,1))*n);
            Delta=Rosenbrock(x2,y2)-Rosenbrock(x1,y1);  %calcul du delta
            
            if Delta<0
                x1=x2;
                y1=y2;
                Gamma=Rosenbrock(xbest,ybest)-Rosenbrock(x1,y1);
                if Gamma>0
                    xbest=x1;
                    ybest=y1;
                end
                
            else
                p=rand(1,1);    % on tire aléatoirement p entre 0 et 1
                if p< exp(-Delta/T)  % critère de metropolis
                    xbest=x2;           % on sauve les valeurs 
                    ybest=y2;
                    
                end
            end	
            RepetitionTfixe=RepetitionTfixe+1;  
        end
        T=0.99*T;  % une méthode parmi d'autre de "cooling schedule"
        n=0.99*n;   % on diminue l'intervalle de recherche du point voisin
        RepetitionTfixe=0;  % remise à zéro du compteur une fois les 50 répétitions
    plot(T,f_best)
    end
    nexe=nexe+1;            
    
    tab = [tab ; [Rosenbrock(xbest,ybest)  xbest ybest]];
    
    end
    Pour la première question, tu peux certainement utiliser DLMWRITE

    Pour la seconde, voir les fonctions MIN, MEAN et STD
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 61
    Points : 31
    Points
    31
    Par défaut
    salut;
    je fait comme vous m'avez dit mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tab[]
     
    prog
     
    tab = [tab ; [best_fit  xbest ybest]];
     
    end
     
    dlmwrite('filename4',tab,'\t')
    je trouve dans un autre fichier q'une seul ligne

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    C'est assez difficile de te répondre...
    As-tu vérifié chaque ligne de ton code ?

    Sinon le code suivant montre que la méthode fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tab = [];
     
    for n = 1:10
        tab = [tab ; [n 2^n]];
    end
     
    dlmwrite('test.txt',tab,'\t')
     
    edit test.txt
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 61
    Points : 31
    Points
    31
    Par défaut
    voila tou le prog
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    clc ;clear all;close all;
    x1=-1.2;    %point de départ imposé par mon énoncé: 
    y1=1;        %   P=[-1.2,1]
    T=70;
     
    xbest=-1.2;          % la meilleur solution est pour l'instant le pt de départ
    ybest=1;
    n=4;
    nexe=1;
    while nexe<6
    RepetitionTfixe=0;
    T=70;
    n=4;
    while(T>0.001)
     
        while(RepetitionTfixe<50)
     
            x2= x1 + ( (rand(1,1)-rand(1,1))*n);     %recherche d'un point voisin
           y2= y1 + ( (rand(1,1)-rand(1,1))*n);
     
             Delta=(100*(x2^2-y2)^2+(1-x2)^2)-(100*(x1^2-y1)^2+(1-x1)^2);
            if Delta<0
                x1=x2;
                y1=y2;
     
              Gamma= (100*(xbest^2-ybest)^2+(1-xbest)^2)-(100*(x1^2-y1)^2+(1-x1)^2);
                if Gamma>0
                    xbest=x1;
                    ybest=y1;
                end
     
            else
                p=rand(1,1);    % on tire aléatoirement p entre 0 et 1
                if p< exp(-Delta/T)  % critère de metropolis
                    xbest=x2;           % on sauve les valeurs 
                    ybest=y2;
     
                end
            end	
            RepetitionTfixe=RepetitionTfixe+1;  
        end
        T=0.99*T;  % une méthode parmi d'autre de "cooling schedule"
        n=0.99*n;   % on diminue l'intervalle de recherche du point voisin
        RepetitionTfixe=0;  % remise à zéro du compteur une fois les 50 répétitions
         best_fit=(100*(xbest^2-ybest)^2+(1-xbest)^2);
     
     
    end
     nexe=nexe+1;            
    tab=[best_fit xbest ybest]
     
    tab = [tab ; [best_fit  xbest ybest]];
     dlmwrite('filename9',tab,'\t') 
    end
    u=min(tab,[],1)
    et voila mon résultat avec le min pour 6 itération
    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
    tab =
     
       0.000000004979218   0.999973585675475   0.999953715366948
     
     
    tab =
     
       0.000001086514469   1.000045166701522   0.999986197340653
     
     
    tab =
     
       0.000000242863806   1.000031845029777   1.000014512856883
     
     
    tab =
     
       0.000000020291383   0.999998520619603   0.999982797226938
     
     
    tab =
     
       0.000000490853665   0.999971314035056   1.000012631091588
     
     
    u =
     
       0.000000490853665   0.999971314035056   1.000012631091588

    et un fichier tex contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    4.9085e-007	0.99997	1
    4.9085e-007	0.99997	1

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Non... tu n'as pas bien compris la méthode :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    clc ;clear all;close all;
    x1=-1.2;    %point de départ imposé par mon énoncé:
    y1=1;        %   P=[-1.2,1]
    T=70;
     
    xbest=-1.2;          % la meilleur solution est pour l'instant le pt de départ
    ybest=1;
    n=4;
    nexe=1;
     
    tab = [];
     
    while nexe<6
        RepetitionTfixe=0;
        T=70;
        n=4;
        while(T>0.001)
     
            while(RepetitionTfixe<50)
     
                x2= x1 + ( (rand(1,1)-rand(1,1))*n);     %recherche d'un point voisin
                y2= y1 + ( (rand(1,1)-rand(1,1))*n);
     
                Delta=(100*(x2^2-y2)^2+(1-x2)^2)-(100*(x1^2-y1)^2+(1-x1)^2);
                if Delta<0
                    x1=x2;
                    y1=y2;
     
                    Gamma= (100*(xbest^2-ybest)^2+(1-xbest)^2)-(100*(x1^2-y1)^2+(1-x1)^2);
                    if Gamma>0
                        xbest=x1;
                        ybest=y1;
                    end
     
                else
                    p=rand(1,1);    % on tire aléatoirement p entre 0 et 1
                    if p< exp(-Delta/T)  % critère de metropolis
                        xbest=x2;           % on sauve les valeurs
                        ybest=y2;
     
                    end
                end
                RepetitionTfixe=RepetitionTfixe+1;
            end
            T=0.99*T;  % une méthode parmi d'autre de "cooling schedule"
            n=0.99*n;   % on diminue l'intervalle de recherche du point voisin
            RepetitionTfixe=0;  % remise à zéro du compteur une fois les 50 répétitions
            best_fit=(100*(xbest^2-ybest)^2+(1-xbest)^2);
     
     
        end
        nexe=nexe+1;
     
        tab = [tab ; [best_fit  xbest ybest]];
     
    end
     
    dlmwrite('filename9',tab,'\t')
     
    u=min(tab,[],1)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 61
    Points : 31
    Points
    31
    Par défaut
    ah oui j'ai oublé tab[]
    et voila le code il me reste de verifie l'ecat type et min et le moyen
    est ce que ci juste pour (50 run)
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    clc ;clear all;close all;
    x1=-1.2;    %point de départ imposé par mon énoncé:
    y1=1;        %   P=[-1.2,1]
    T=70;
    
    xbest=-1.2;          % la meilleur solution est pour l'instant le pt de départ
    ybest=1;
    n=4;
    nexe=1;
    
    tab = [];
    
    while nexe< 50
        RepetitionTfixe=0;
        T=70;
        n=4;
        while(T>0.001)
            
            while(RepetitionTfixe<50)
                
                x2= x1 + ( (rand(1,1)-rand(1,1))*n);     %recherche d'un point voisin
                y2= y1 + ( (rand(1,1)-rand(1,1))*n);
                
                Delta=(100*(x2^2-y2)^2+(1-x2)^2)-(100*(x1^2-y1)^2+(1-x1)^2);
                if Delta<0
                    x1=x2;
                    y1=y2;
                    
                    Gamma= (100*(xbest^2-ybest)^2+(1-xbest)^2)-(100*(x1^2-y1)^2+(1-x1)^2);
                    if Gamma>0
                        xbest=x1;
                        ybest=y1;
                    end
                    
                else
                    p=rand(1,1);    % on tire aléatoirement p entre 0 et 1
                    if p< exp(-Delta/T)  % critère de metropolis
                        xbest=x2;           % on sauve les valeurs
                        ybest=y2;
                        
                    end
                end
                RepetitionTfixe=RepetitionTfixe+1;
            end
            T=0.99*T;  % une méthode parmi d'autre de "cooling schedule"
            n=0.99*n;   % on diminue l'intervalle de recherche du point voisin
            RepetitionTfixe=0;  % remise à zéro du compteur une fois les 50 répétitions
            best_fit=(100*(xbest^2-ybest)^2+(1-xbest)^2);
            
            
        end
        nexe=nexe+1;
        
        tab = [tab ; [best_fit  xbest ybest]];
        
    end
    
    dlmwrite('filename9',tab,'\t')
    mean=mean (tab,1) 
    std=std (tab,[],1)
    min=min(tab,[],1)
    pouver vous m'aide pour resoudre ce problème
    et merci

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Il ne faut jamais donné le même nom à une variable qu'à une fonction MATLAB.

    Les variables mean, std et min doivent changer de nom.

    Pour la vérification des résultats, si tu parles des derniers calculs à la fin du code, tu n'as qu'à tester sur des données plus simples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    tab = [];
     
    for n = 1:4
        tab = [tab ; [n 2^n]];
    end
     
    tab
     
    me = mean(tab,1) 
    s = std(tab,0,1)
    mi = min(tab,[],1)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 61
    Points : 31
    Points
    31
    Par défaut
    merci

Discussions similaires

  1. lecture fichier texte + moyenne et ecart type
    Par devhercule dans le forum Langage
    Réponses: 15
    Dernier message: 17/03/2015, 19h10
  2. Moyenne et Ecart type
    Par yoshï dans le forum Probabilités
    Réponses: 2
    Dernier message: 20/10/2011, 13h37
  3. [OpenOffice][Tableur] macro "moyenne,minimun,ecart type" et fonction sous totaux
    Par karlakir dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 21/03/2009, 18h04
  4. [VBA-E] Ecart type et moyenne
    Par pierrOPSG dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2006, 16h20
  5. Moyenne et/ou ecart type sur enregistrements
    Par Badboy62cfp dans le forum Access
    Réponses: 5
    Dernier message: 22/05/2006, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo