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 :

Valeur Max/Min/Moy sous conditions : un peu d'aide serait bienvenue :)


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut Valeur Max/Min/Moy sous conditions : un peu d'aide serait bienvenue :)
    Bonjour à tous,

    Je reviens vers vous pour un petit soucis de méthodologie je pense ...

    J'ai 3 matrices d'une colonne et 1826 lignes.
    Dans ma 1ère matrice (JJ) j'ai mes jours numérotés (valeurs allant donc de 1 à 31 ...)
    Dans ma 2ème matrice (MM) j'ai mes mois numérotés (valeurs de 1 à 12 ...)
    Dans ma 3ème matrice (Deb) j'ai des valeurs.

    J'ai donc x valeurs Deb pour chaque combinaison JJ,MM possibles.

    Objectif : Tracer un graphe avec 3 courbes :
    1) la première représente la valeur "Deb" maximale pour chaque jour de l'année (donc 366 valeurs car des des années bissextiles)
    2) la deuxième représente la valeur "Deb" minimale pour chaque jour de l'année (donc 366 valeurs car des des années bissextiles)
    3) la première représente la valeur "Deb" moyenne pour chaque jour de l'année (donc 366 valeurs car des des années bissextiles)

    Problème : Comment calculer la valeur max journalière en fonction de 2 critères : le jour JJ et le mois MM ?

    J'ai essayé plusieurs chose qui n'ont pas abouties, je ne sais par quoi commencer.

    Est-ce que quelqu'un peut m'aider à faire le travail pour max par exemple ?

    Je pensais d'abord créer de nouvelles "sous-matrices" en fonction des critères JJ et MM ... soit 366 "sous-matrices", mais je ne connais pas les commandes pour le faire. Et je ne trouve pas ce dont j'ai besoin sur internet.
    J'ai essayé avec:

    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
     
    % Choix du fichier de débit à utiliser  :
    FichierTexte = 'FichierTexte.txt'
     
    %Choix du nom du fichier de sortie :
    FichierSortie='FichierSortie.txt'
     
    %%                   ETAPE 1 : Importation des données                   %%              
     
    % Ouverture du fichier texte dans lequel il y a les valeurs.
    fid1=fopen(FichierTexte,'r'); 
     
    % Lecture d'un texte formaté. 
    m=textscan(fid1,'%f %f %f %f','delimiter','/\t');
     
    % Fermeture du fichier après lecture.
    fclose(fid1);
     
    JJ=m{1}; % La colonne 1 de ma matrice m contient les jours "JJ".
    MM=m{2}; % La colonne 2 de ma matrice m contient les mois "MM".
    YY=m{3}; % La colonne 3 de ma matrice m contient les années "YY".
    Deb=m{4}; % La colonne 4 de ma matrice m contient les valeurs "Deb".
     
     
    %%                  ETAPE 2 : Min, Moy et Max de Deb                     %%              
     
    jr = 1:1:31
    ms = 1:1:12
    jj = [jr,ms]
         for jr=1:31
             for ms=1:12
                 Deb = Deb(jj)       
                 DebMax = max(Deb)
             end
         end
     
    % Création du fichier de sortie.
    fid2=fopen(FichierSortie,'w');
     
    % Ecriture dans le fichier de sortie.
    fprintf(fid2,'%f');
    fclose(fid2);
     
     
    %%                   ETAPE 3 : Création des graphes                     %%              
     
    [years,~,ic]= unique(YY);
     
    hold all 
    accumarray(ic(:), (1:numel(YY)).', [numel(years) 1], ... 
         @(idx) scatter(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),Deb(idx)));
         @(idx) plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),DebMax(idx)); 
    datetick('x', 'dd/mm')
    %legend(num2str(years))
    Mais le fichier texte est vide... et le graphe aussi du coup ...

    Quel'qu'un peut m'aider ?
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Il faut
    1/ transformer tes données en matrice M: [jour,mois]-> valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    M= nan(31,12);
    M( sub2ind(size(M), JJ, MM ) ) = Deb;
    2/ prendre le max de M sur la dimension qui t'intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    max(M,[],1) ;% max sur les jours, chaque mois
    max(M,[],2) ;% max sur les mois, chaque jour
    mean(M,1) ;% moyenne sur les jours, chaque mois
    % etc

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    Merci VV33D,

    J'ai testé ta proposition, mais il y a encore une "erreur".

    Si j'ai bien compris, la matrice M a 12 colonnes (une par mois) est 31 lignes remplies avec les valeurs Deb (une par jour, avec "nan" quand il n'y a pas de valeur).

    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    max(M,[],1) ;% max sur les jours, chaque mois
    max(M,[],2) ;% max sur les mois, chaque jour
    mean(M,1) ;% moyenne sur les jours, chaque mois
    Je n'arrive pas à avoir ma valeur max sur tous les jour J que j'ai dons mon fichier : Je dois censé avoir 366 valeurs max :/ Avec la matrice M je ne vois pas comment réussir à calculer ma valeur max pour chaque jour d'une année.

    J'essaye (en ce moment) de trouver le code qui me permettre de réaliser une opération sur l'ensemble des valeurs Deb qui ont un JJ et MM identiques ...

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    Comme dans mon script j'ai ces 4 colonnes d'identifiées :

    JJ=m{1}; % La colonne 1 de ma matrice m contient les jours "JJ".
    MM=m{2}; % La colonne 2 de ma matrice m contient les mois "MM".
    YY=m{3}; % La colonne 3 de ma matrice m contient les années "YY".
    Deb=m{4}; % La colonne 4 de ma matrice m contient les valeurs "Deb".
    Est-ce que je ne peux pas réussir mon travail en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dd = [JJ,MM];
    Deb = Deb(dd)       
    DebMax = max(Deb)
    Sauf que mon exemple ne marche pas car je ne sépare pas les différents jours de l'année ... Je cherche encore

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Tu as plusieurs valeurs par (jour,mois,année) ? Si oui, le même nombre pour chaque (jour,mois,année) différents ?

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    Oui.

    Dans le fichier Exemple joint au premier post, je dois avoir 4 valeurs par jour pour des années différentes. Mais les années ne rentre pas en compte pour l'instant.
    Dans le fichiers complet, je dois avoir une 20aine de valeurs par jours.

    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dd = [JJ,MM];
     
    for JJ=1:31
        for MM = 1 : 12
            Deb = find(Deb(dd));     
            DebMax = max(Deb);
        end
    end
    Mais ça ne marche pas ou pas complètement.
    Comment je pourrais faire pour créer une matrice par opération que je veux réaliser (ici, max() ) pour ensuite les écrire dans un fichier texte ?

  7. #7
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [u,f,i]= unique([JJ,MM], 'rows'); % classifie les données par valeurs uniques de jour/mois
    sums_by_JM= accumarray(i,Deb);
    max_by_JM= accumarray(i,Deb,[],@max);
    sums_by_JM(k) est la somme des valeurs de Deb lorsque [JJ,MM]= u{k};
    max_by_JM(k) est le max des valeurs de Deb lorsque [JJ,MM]= u{k};

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    Ok !
    Ca reprend l'idée de ce qui avait été fait en étape 3 ... Je ne maîtrise vraiment pas


    Je remet mon script avec ton aide intégrée :

    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
     
    % Choix du fichier de débit à utiliser  :
    FichierTexte = 'FichierTexte.txt'
     
    %Choix du nom du fichier de sortie :
    FichierSortie='FichierSortie.txt'
     
    %%                   ETAPE 1 : Importation des données                   %%              
     
    % Ouverture du fichier texte dans lequel il y a les valeurs.
    fid1=fopen(FichierTexte,'r'); 
     
    % Lecture d'un texte formaté. 
    m=textscan(fid1,'%f %f %f %f','delimiter','/\t');
     
    % Fermeture du fichier après lecture.
    fclose(fid1);
     
    JJ=m{1}; % La colonne 1 de ma matrice m contient les jours "JJ".
    MM=m{2}; % La colonne 2 de ma matrice m contient les mois "MM".
    YY=m{3}; % La colonne 3 de ma matrice m contient les années "YY".
    Deb=m{4}; % La colonne 4 de ma matrice m contient les valeurs "Deb".
     
     
    %%                  ETAPE 2 : Min, Moy et Max de Deb                     %%              
     
    % dd = [JJ,MM]
    [dd,f,i]= unique([JJ,MM], 'rows'); % classifie les données par valeurs uniques de jour/mois
    hold all 
    % sums_by_JM= accumarray(i,Deb);
    max_by_JM= accumarray(i,Deb,[],@max);
    min_by_JM= accumarray(i,Deb,[],@min);
    mean_by_JM= accumarray(i,Deb,[],@mean);
     
    % sums_by_JM(k) est la somme des valeurs de Deb lorsque [JJ,MM]= dd{k};
    % max_by_JM(k) est le max des valeurs de Deb lorsque [JJ,MM]= dd{k};
     
     
    % Création du fichier de sortie.
    fid2=fopen(FichierSortie,'w');
     
    % Ecriture dans le fichier de sortie.
    fprintf(fid2, '%f', accumarray(i,Deb,[],@max));
    fclose(fid2);
     
     
    %%                   ETAPE 3 : Création des graphes                     %%              
     
    [years,~,ic]= unique(YY);
     
    hold all 
    accumarray(ic(:), (1:numel(YY)).', [numel(years) 1], ... 
         @(idx) scatter(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),Deb(idx)));
    %   @(idx) plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),Deb(idx),'o')); % --> C'est la même chose qu'au dessus
    datetick('x', 'dd/mm')
    %legend(num2str(years))

    Si je peux me permettre 'encore) de soliciter ton aide : Comment je peux tracer sur un même graphe ce qui apparait dans mon éetape 3" et l'étape 2 que tu viens de me faire ?

    J'ai essayé de réutiliser " @(idx) plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),Deb(idx)));" :

    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
    % Choix du fichier de débit à utiliser  :
    FichierTexte = 'FichierTexte.txt'
    
    %Choix du nom du fichier de sortie :
    FichierSortie='FichierSortie.txt'
    
    %%                   ETAPE 1 : Importation des données                   %%              
    
    % Ouverture du fichier texte dans lequel il y a les valeurs.
    fid1=fopen(FichierTexte,'r'); 
    
    % Lecture d'un texte formaté. 
    m=textscan(fid1,'%f %f %f %f','delimiter','/\t');
            
    % Fermeture du fichier après lecture.
    fclose(fid1);
    
    JJ=m{1}; % La colonne 1 de ma matrice m contient les jours "JJ".
    MM=m{2}; % La colonne 2 de ma matrice m contient les mois "MM".
    YY=m{3}; % La colonne 3 de ma matrice m contient les années "YY".
    Deb=m{4}; % La colonne 4 de ma matrice m contient les valeurs "Deb".
    
    
    %%                  ETAPE 2 : Min, Moy et Max de Deb                     %%              
     
    % dd = [JJ,MM]
    [dd,f,i]= unique([JJ,MM], 'rows'); % classifie les données par valeurs uniques de jour/mois
    hold all 
    % sums_by_JM= accumarray(i,Deb);
    max_by_JM= accumarray(i,Deb,[],@max);
    min_by_JM= accumarray(i,Deb,[],@min);
    mean_by_JM= accumarray(i,Deb,[],@mean);
    
    % sums_by_JM(k) est la somme des valeurs de Deb lorsque [JJ,MM]= dd{k};
    % max_by_JM(k) est le max des valeurs de Deb lorsque [JJ,MM]= dd{k};
    
    % Création du fichier de sortie.
    fid2=fopen(FichierSortie,'w');
    
    % Ecriture dans le fichier de sortie.
    fprintf(fid2, '%f', accumarray(i,Deb,[],@max));
    fclose(fid2);
    
    
    %%                   ETAPE 3 : Création des graphes                     %%              
    
    [years,~,ic]= unique(YY);
    
    accumarray(ic(:), (1:numel(YY)).', [numel(years) 1], ... 
         @(idx) { plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),Deb(idx),'o')    plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),max_by_JM,min_by_JM,mean_by_JM)   plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),min_by_JM)   plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),mean_by_JM)})
    datetick('x', 'dd/mm')
    %legend(num2str(years))
    Mais je n'ai qu'une série qui apparait sur le graphe (max je crois).

  9. #9
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Que cherches tu à plot ? Une courbe par année ?
    Si c'est le cas, il faut refaire le calcul des max et min année par année. (ou encore mieux, avec unique([JJ,MM,YY]))

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    Je cherche à faire le graphe ajouté en pièce jointe, mais avec d'autres données :

    1) Un nuage de point dans lequel chaque point (ou cercle) représente une valeur Deb : j'ai plusieurs deb pour chaque jour dons plusieurs cercles pour chaque jour. Cette partie j'ai réussie à la faire (Etape 3).

    2) Ajouter à ce graphe une ligne qui passe par chaque maxima journalier + une ligne qui passe par chaque minima journalier + une ligne qui passe par chaque moyenne journalière.

    Images attachées Images attachées  

  11. #11
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    il suffit de récupérer les dates des valeurs uniques de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [u,f,i]= unique([JJ,MM], 'rows');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dts= datenum([zeros(size(u,1),1),u(:,1),u(:,2)]);
    hold on
    plot(dts, sums_by_JM, 'k-');
    % etc

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    Merci, j'arrive à tracer tous les graphes.

    Mais j'ai encore du boulot. Pour info je te met la figure que j'obtiens. tu verras qu'ils me reste encore 2/3 trucs à régler :
    1) Les courbes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dts= datenum([zeros(size(dd,1),1),dd(:,1),dd(:,2)]);
    hold on
    plot(dts, max_by_JM, 'g-');
    plot(dts, min_by_JM, 'b-');
    plot(dts, mean_by_JM, 'k-');
    ne correspondent toujours pas à ce qu'il me faut. Si tu regardes bien, les courbes s'étalent sur 4 ans (ce que j'ai mis dans le fichier texte d'exemple), alors que j'ai bien 366 valeurs dans "max_by_JM", "min_by_JM" et "mean_by_JM". Une seule année doit apparaître, et les courbes ne sont pas censé avoir cette allure.
    De plus, les "o" on perdu leurs couleurs.

    Mon script est devenu :

    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
    % Choix du fichier de débit à utiliser  :
    FichierTexte = 'FichierTexte.txt'
     
    %Choix du nom du fichier de sortie :
    FichierSortie='FichierSortie.txt'
     
    %%                   ETAPE 1 : Importation des données                   %%              
     
    % Ouverture du fichier texte dans lequel il y a les valeurs.
    fid1=fopen(FichierTexte,'r'); 
     
    % Lecture d'un texte formaté. 
    m=textscan(fid1,'%f %f %f %f','delimiter','/\t');
     
    % Fermeture du fichier après lecture.
    fclose(fid1);
     
    JJ=m{1}; % La colonne 1 de ma matrice m contient les jours "JJ".
    MM=m{2}; % La colonne 2 de ma matrice m contient les mois "MM".
    YY=m{3}; % La colonne 3 de ma matrice m contient les années "YY".
    Deb=m{4}; % La colonne 4 de ma matrice m contient les valeurs "Deb".
     
     
    %%              ETAPE 2 : Min, Moy et Max de Deb  + Graphe               %%              
     
    % dd = [JJ,MM]
    [dd,f,i]= unique([JJ,MM], 'rows'); % classifie les données par valeurs uniques de jour/mois
    [years,~,ic]= unique(YY);
     
    hold all 
    sums_by_JM= accumarray(i,Deb);
    max_by_JM= accumarray(i,Deb,[],@max);
    min_by_JM= accumarray(i,Deb,[],@min);
    mean_by_JM= accumarray(i,Deb,[],@mean);
     
    % sums_by_JM(k) est la somme des valeurs de Deb lorsque [JJ,MM]= dd{k};
    % max_by_JM(k) est le max des valeurs de Deb lorsque [JJ,MM]= dd{k};
     
    dts= datenum([zeros(size(dd,1),1),dd(:,1),dd(:,2)]);
    hold on
    plot(dts, max_by_JM, 'g-');
    plot(dts, min_by_JM, 'b-');
    plot(dts, mean_by_JM, 'k-');
     
    accumarray(ic(:), (1:numel(YY)).', [numel(years) 1], ... 
         @(idx) plot(datenum([zeros(size(idx)),MM(idx),JJ(idx)]),Deb(idx),'o'));
    datetick('x', 'dd/mm')
    % %legend(num2str(years))
     
    % Création du fichier de sortie.
    fid2=fopen(FichierSortie,'w');
     
    % Ecriture dans le fichier de sortie.
    fprintf(fid2, '%f', accumarray(i,Deb,[],@max));
    fclose(fid2);
    Si quelqu'un est inspiré, qu'il me tienne au courant.

    RAPPEL : Je suis censé avoir le graphe mis en exemple précédemment :
    - un nuage de points qui présentes les différentes valeurs Deb pour chaque jour JJ/MM de l'année. L'année n'intervient pas (que pour colorer la série, et encore ...).
    - une ligne qui passe par chaque maxima journalier + une ligne qui passe par chaque minima journalier + une ligne qui passe par chaque moyenne journalière.

    Merci aux courageux

    je vous tiendrais au courant si je trouve une solution.

    En tout cas MERCI à VV33D qui m'a beaucoup aidé jusque là !
    Images attachées Images attachées  

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Une petite étourderie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dts= datenum([zeros(size(dd,1),1),dd(:,2),dd(:,1)]);

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    Ca corrige le graphe

    Mais le max est toujours mal calculé.

    J'ai essayé une autre version (mais evidemment ça ne marche pas ... ce serait trop simple !!) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for JJ = 1:31
        for MM = 1:12
    Deb = Deb(JJ,MM)
    max_by_JM (JJ,MM) = max(Deb(JJ,MM))
    plot(jj,max_by_JM(JJ,MM))
        end
    end
    L'idée : Je créé une matrice unique dd qui contient mes 3 colonnes. Et j'essaye de trouver la formule qui me permettrait de calculer "pour JJ/MM identique, identifier le max(Deb)".

    ...
    Images attachées Images attachées  

  15. #15
    Invité
    Invité(e)
    Par défaut
    Afin d'éviter d'avoir tous ces fils qui se croisent, on va faire l'inversion plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dd,f,i]= unique([MM,JJ], 'rows');
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dts= datenum([zeros(size(dd,1),1),dd]);
    hold all
    plot(dts, max_by_JM, 'g-', 'lineWidth', 3);
    plot(dts, min_by_JM, 'b-', 'lineWidth', 3);
    plot(dts, mean_by_JM, 'k-', 'lineWidth', 3);
    Le résultat me semble correct non ?

    Nom : frame.png
Affichages : 538
Taille : 64,4 Ko

  16. #16
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2014
    Messages : 74
    Points : 49
    Points
    49
    Par défaut


    Tu es MAGIQUE !!!
    J'ai modifié plein de chose pour essayer d'aboutir ... j'allais poster : "Révélation ... les calculs sont bons, le problèeme est graphique ..."

    C'était tellement bête


    Merci et merci !!!!!

Discussions similaires

  1. [XL-2007] Copie de valeur entre 2 fichiers sous condition
    Par hdisnice dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/06/2011, 15h45
  2. [AC-2003] valeur max d'un sous formulaire dans le formulaire
    Par petitours dans le forum IHM
    Réponses: 1
    Dernier message: 17/01/2011, 23h14
  3. selection de la valeur MAX d'une sous requete
    Par trigone dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/11/2007, 12h05
  4. Afficher valeur d'un champ sous condition
    Par yvevmax dans le forum Modélisation
    Réponses: 9
    Dernier message: 05/06/2007, 20h28
  5. valeur d'un champs sous condition
    Par albatros50 dans le forum IHM
    Réponses: 3
    Dernier message: 10/05/2007, 09h42

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