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 :

sommation dans une matrice [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 8
    Points
    8
    Par défaut sommation dans une matrice
    Bonjour à tous,

    Après avoir fouillé un peu dans le forum, je n'ai pas trouvé ma réponse.

    Ce que je souhaiterais faire, c'est effectuer une sommation à l'intérieur d'une matrice pour une même date avec plusieurs valeurs.

    Un extrait de la base de donnée serait surement plus parlant qu'une longue description:

    20120103 2
    20120103 8
    20120103 69
    20120103 8
    20120103 12
    20120103 246
    20120103 588
    20120103 867
    20120103 415
    20120103 211
    20120103 200

    3 janvier 2012 étant la date, je souhaiterais sommer les différentes valeurs de cette date pour avoir:
    20120103 X

    et j'ai plusieurs dates comme cela, donc je souhaiterais mettre en place une boucle si cela est possible. Si quelqu'un a une solution, il est le bienvenu

    Merci d'avance!

  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 884
    Points
    52 884
    Par défaut
    Montre nous ce que tu as essayé de coder (même si c'est faux)
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    trades(:,1) étant la date
    trades(:,2) étant les volumes que je cherche à sommer pour cette date

    Première tentative:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %if i==20120102
     %   daily_volume=sum(trades(1:count(trades(1:i,1),2)));
    Deuxième tentative:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    volume=sum(trades(:,2),'trades(:,1)',20060102);
    Après, j'ai tenté de sortir toutes les dates:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date=unique(trades(:,1),'stable')
    Pour ensuite pouvoir faire une boucle du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i==date
        volume= sum(trades(:,2),'trades(i,1))
    end
    Mais je ne suis pas très successful apparemment

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Utilise la fonction accumarray combinée à la fonction unique.
    Exemple :
    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
    trades = [
        20120101 2
        20120101 8
        20120101 69
        20120102 8
        20120102 12
        20120103 246
        20120103 588
        20120103 867
        20120104 415
        20120104 211
        20120104 200 ];
    [date, ~, ic] = unique(trades(:,1));
    volume = accumarray(ic, trades(:,2), [numel(unik) 1]);
    [date volume]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Merci, cela a parfaitement marché après une ou deux modification.

    Encore merci pour l'aide et votre rapidité de réponse!

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/07/2006, 14h42
  2. Stockage de lignes dans une matrice
    Par S4sha dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/06/2006, 14h03
  3. Tracer une ligne dans une matrice
    Par S4sha dans le forum MATLAB
    Réponses: 4
    Dernier message: 30/05/2006, 15h10
  4. chercher un tableau dans une matrice
    Par devdébuto dans le forum C
    Réponses: 12
    Dernier message: 11/12/2005, 01h26
  5. angles possibles dans une matrice
    Par bigbill dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 05/05/2005, 17h08

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