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 saisonnière DJF avec Dec: année n-1 et Jan et Fév année n


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    Mai 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 76
    Points : 57
    Points
    57
    Par défaut Moyenne saisonnière DJF avec Dec: année n-1 et Jan et Fév année n
    Bonjour,
    J'ai des données horaires que je souhaite moyenner annuellement pour la saison DJF.
    J'ai ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Y_era_DJF, ~, id] = unique(daily_era_DJF_time(:, 1)); 
    ERA_yr_DJF = accumarray(id, daily_era_DJF, [], @nanmean);
    Qui marche pour les autres saisons cependant pour la saison DJF je dois moyenner les données horaires avec décembre de l'année n-1 et Jan Fev de l'année n.

    Pour vous monter mes variables :
    daily_era_DJF_time c'est mon vecteur time il s'agit de 4 colonnes (1=année, 2=mois, 3=jour, 4=heures) dans ce vecteur seuls les mois 1,2 et 12 sont présentent
    daily_era_DJF c'est mon vecteur de données horaires (il est de même taille que daily_era_DJF_time).

    Merci
    J'ai pensé à la solution de moyenner toutes les 90 valeurs en commençant par le 1er décembre cependant 90 n'est pas fixe compte tenu des années bissextiles ou j'ai 91. Comme j'ai 50 ans de données je souhaiterai automatiser comme je le fais pour les autres saisons avec le code ci dessus.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Je n'ai pas bien compris cette histoire de saison DJF, peux tu me dire dans quel variable et sous quelle représentation sont stockées tes données de décembre, janvier, février à moyenner ?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    Mai 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 76
    Points : 57
    Points
    57
    Par défaut
    daily_era_DJF_time c'est mon vecteur time il s'agit de 4 colonnes (1=année, 2=mois, 3=jour, 4=heures) dans ce vecteur seuls les mois 1,2 et 12 sont présentent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    2001    01    01    00  % minuit du 1er janvier 2001
    2001    01    01    01  % 1h du 1er janvier 2001
    2001    01    01    02  % 2h du 1er janvier 2001
    [...] 
    2001    02    01    00  % minuit du 1er février 2001
    2001    02    01    01
    2001    02    01    02
    [...] 
    2001    12    01    00  % minuit du 1er décembre 2001
    2001    12    01    00
    2001    12    01    00
     
    % et ainsi de suite pour 2002, 2003 ...
    daily_era_DJF c'est mon vecteur de données horaires (il est de même taille que daily_era_DJF_time). C'est un vecteur de températures qui présente juste les valeurs dans le même ordre que le vecteur time ci dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    0      % Température à minuit du 1er janvier 2001
    2      % Température à 1h du 1er janvier 2001
    3      % Température à 2h du 1er janvier 2001
    [...] 
    1      % Température à minuit du 1er février 2001
    1    
    2    
    [...] 
    5     % Température à minuit du 1er décembre 2001
    6    
    5
    Dans mon code je demande que dès qu'on observe un changement d'année alors on moyenne toutes les données horaires on aura donc une moyenne annuelle pour 2001, 2002, 2003 ... Ce qui marche donc pour mes autre saisons.
    Or je souhaite effectuer des moyennes annuelles mais en prenant en compte déc 2001 + jan 2002 + fev 2002, ma seconde moyenne c'est déc 2002 + jan 2003 + fév 2003 ...

    Merci

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Dans ce cas, il faut que tu trouves les indices de ton tableau qui correspondent à ce que tu recherches.

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    result = ismember(daily_era_DJF_time(:,1:2),[2001,12]);
    idx = result(:,1) & result(:,2);
    Te donnera les indices de décembre 2001.


    Si tu reproduis ça dans une boucle en cherchant à chaque fois le couple mois/année qui t'intéresse, tu devrais ensuite pouvoir faire les moyennes de ces mois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for p = 1:nombre_annee-1
        result = ismember(daily_era_DJF_time(:,1:2),[200+p,12]);
        idx1 = result(:,1) & result(:,2); clear result
     
        result = ismember(daily_era_DJF_time(:,1:2),[200+p+1,1]);
        idx2 = result(:,1) & result(:,2); clear result
     
        result = ismember(daily_era_DJF_time(:,1:2),[200+p+1,2]);
        idx3 = result(:,1) & result(:,2); clear result
     
        idx_total = cat(1,idx1,idx2,idx3);
     
        moyenne(p,1) = mean(daily_era_DJF(idx));
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #5
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    Mai 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 76
    Points : 57
    Points
    57
    Par défaut
    Merci beaucoup !!!
    Après quelques petits changements à votre code j'ai enfin réussi à faire ce dont je voulais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] moyenne dans structure avec des "NaN"
    Par kariboubou dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/12/2009, 11h18
  2. Moyenne arithmetique GUI avec fonction mean
    Par mihaispr dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 31/03/2009, 23h40
  3. Citation avec le même Nom d'auteur et la même année !
    Par mtanana dans le forum Bibliographies - Index - Glossaires
    Réponses: 2
    Dernier message: 24/03/2009, 11h11
  4. recuperer un nombre de mois avec dec
    Par gloglo dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 17/10/2007, 16h08
  5. Problème d'exécution avec Dec C++
    Par PNL dans le forum C
    Réponses: 20
    Dernier message: 02/10/2005, 03h59

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