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 :

somme de colonnes


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Par défaut somme de colonnes
    Bonjour à tous!
    J'ai une petite interrogation sur un script que je viens de créer ou j'essaie de faire la somme de chaque colonnes d'une matrice à n colonnes afin de stoker les résultats dans 1 matrice r (1 ligne et n colonnes), mais cela ne fonctionne pas et je ne vois pas où se situe mon erreur! Quelqu'un pourrait-il me dire où je me suis planté? Merci par avance!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function sucept( filename)  % function
     
    load(filename);%          load the data
     
    [m,n]=size(data);  % data matrix dimensions
     
    r=zeros(1,n);  % results matrix creation
     
    for k=2:n
        r(1,k)=sum(data,2);
    end

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Bonjour,

    Sais tu que la fonction que tu utilises fait déjà ce que tu souhaites?

    tu peux lire :
    If X is a matrix, S is a row vector with the sum over each column.

    Un simple devrait donc suffire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Par défaut somme de colonnes
    Il est vrai... cela fonctionne, je ne sais pas pourquoi je suis allé chercher si loin! Merci

    NB:pour la forme, il devait tout de même y avoir une erreur dans mon script...?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Si tu as fait tourné ton programme, tu as du avoir cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Subscripted assignment dimension mismatch.
     
    Error in ==> test at 47
        r(1,k)=sum(data,2);
    C'est ton sum que matlab n'aime pas ^_^

    Si tu voulais faire cette somme à la main, il fallait prendre les éléments de A séparément.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    A=rand(3,2)
    [m,n]=size(A);
    r=zeros(1,n);
     
    for i=1:m
        for k=1:n
            r(1,k)=r(1,k)+A(i,k);
        end
    end
     
    % Comparaison
    sum(A)
    r

    edit :

    tu peux vectoriser une partie du calcul...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    A=rand(3,2)
    [m,n]=size(A);  
    r=zeros(1,n); 
     
    for i=1:m
        r(1,1:n)=r(1,1:n)+A(i,1:n);
    end
     
    sum(A)
    r

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Par défaut somme de colonnes
    Merci beaucoup pour la clarté de votre réponse, j'en profite pour poser une question plus "générale" concernant le script... : si je crée une fonction et que j'inclue le code précédent, pourquoi matlab ne me stocke t-il pas le résultat (dans ma matrice "r" que j'ai crée auparavant) dans le workspace. Ce n'est pas la première fois que cela m'arrive, je ne peut pas utiliser le résultat de mon script par la suite! Quelqu'un peut-il m'expliquer où se trouve l'astuce.. ou mon erreur! Merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Matlab stocke le résultat dans le workspace de la fonction qui n'est tout simplement pas visible. Il faut mettre un argument de sortie si tu souhaites réutiliser ton résultat.

    Pour plus de détail, je te conseille de lire ces deux sujets de Caro et Dut. La fin du premier notamment ^_^

    quelques-conseils-programmation/

    et

    durée de vie d'une variable

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

Discussions similaires

  1. Somme de colonne comme sur Sql Server
    Par Soulama dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/06/2010, 13h51
  2. Somme de Colonne quickreport
    Par khier dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2007, 13h44
  3. somme de colonnes HTML
    Par freestyler1982 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/11/2006, 11h27
  4. faire une somme de colonnes ?
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/09/2006, 15h49
  5. Réponses: 5
    Dernier message: 07/06/2006, 17h04

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