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 :

calculer des moyennes


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 202
    Points : 96
    Points
    96
    Par défaut calculer des moyennes
    Bonjour à tous,

    Alors voila ce que je souhaite faire.
    J'ai une matrice de données, où je souhaite faire la moyenne d'observation lorsque pour un meme jour, du meme mois, d'une meme année, j'ai plusieurs observations.
    Le problème est que lorsque je lance mon script, j'ai uniquement la répétition de la première moyenne calculée, sur ma matrice de destination.

    Je vous envoi ce que j'ai écrit, si vous arriver à détecter l'erreur....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [n2,p2]=size(X2);
     
    X3=ones(length(X2),1)*nan;
     
    for i=1:(n2-1)
        clear f
        f=find(X2(i,1)==X2(i+1,1) & X2(i,2)==X2(i+1,2) & X2(i,3)==X2(i+1,3));
            if length(f)>0
                X3(i,:)=[nanmean(X2(f,4))];
            else  isempty (f);
                X3(i,:)=X3(i,:);
            end
    end
    Merci d'avance

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    Coté syntaxe 'length' sur une matrice, 'else' avec condition (utiliser 'elsif' plutot). Et un petit 'X3(i,: )=X3(i,: )'

    Coté algorithmique, tu fait une passe et tu compares deux lignes successive ... Alors que tu pourrai avoir 3 lignes égaux ...

    Bref, essayes avec ce code Ptinéwik :


    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
     
    X2 =[2001 10 8 2;
         2002 11 4 3;
         2000 5  3 2;
         2001 13 2 5;
         2000 5  3 3;
         2002 11 4 6;
         2000 5  3 2]; 
     
    Xdate = X2(:,1:3);
    Xp = X2(:,4);
     
    Xdate2 = unique(Xdate,'rows');
    Xp2 = zeros(size(Xdate2,1),1);
     
    for u=1:size(Xdate2,1)
        ix = ~any(Xdate-repmat(Xdate2(u,:),size(Xdate,1),1),2);
        Xp2(u) = mean(Xp(ix));
    end
     
    X2mean = [Xdate2 Xp2]
    ++ bonne chance

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

Discussions similaires

  1. [MySQL] Calculer des moyennes, tout bête mais bloqué
    Par pasbonte dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/04/2013, 13h10
  2. calculer des moyennes pour des sous groupes
    Par madib dans le forum SAS Base
    Réponses: 3
    Dernier message: 04/02/2009, 16h50
  3. Calculer des moyennes dans les requêtes
    Par said2n dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 02/07/2008, 13h12
  4. Comment calculer des moyennes sur des nombres positifs
    Par robertetgorgette dans le forum Access
    Réponses: 2
    Dernier message: 20/07/2006, 14h05
  5. Ranking - Calculer des moyennes ?
    Par Slumpy dans le forum Access
    Réponses: 6
    Dernier message: 05/05/2006, 15h42

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