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 :

[accumarray] Accumulation vectorialisée


Sujet :

MATLAB

  1. #1
    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 [accumarray] Accumulation vectorialisée
    Bonjour,

    Je cherche à envoyer plusieurs subs à accumarray, portant sur le même vals. D'après l'aide,
    A = accumarray({subs1, subs2, ...}, val, ...) passes multiple subs vectors in a cell array
    .

    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    accumarray( [1 ; 2  ;2 ],(1:3)') % renvoie [1;5]
    accumarray( mat2cell([1 1; 2 1 ;2 2],3,[ 1 1]),(1:3)') % ne renvoie pas du tout [1 5] sur aucune ligne ni colonne
    Une idée ou une explication ?
    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 : 53 165
    Points
    53 165
    Par défaut
    Si on prend le code pas à pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> accumarray( mat2cell([1 1; 2 1 ;2 2],3,[ 1 1]),(1:3)')
     
    ans =
     
         1     0
         2     3
    en regardant les subs de plus près :

    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
    >> C = mat2cell([1 1; 2 1 ;2 2],3,[ 1 1])
     
    C = 
     
        [3x1 double]    [3x1 double]
     
    >> C{1}
     
    ans =
     
         1
         2
         2
     
    >> C{2}
     
    ans =
     
         1
         1
         2
    Chaque cellules de C donne les indices selon une dimension du résultat final.
    C{1} correspond aux indices des lignes et C{2} à ceux des colonnes.

    Tu ne remplis donc que les éléments (1,1), (2,1) et (2,2) avec uniquement les trois valeurs 1, 2 et 3.

    Il n'y a pas accumulation de valeur dans ton exemple.

    Pour obtenir le même résultat [1;5] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> accumarray( mat2cell([1 1; 2 1 ;2 1],3,[ 1 1]),(1:3)')
     
    ans =
     
         1
         5
    Je ne sais pas si ça répond à ta question... qui n'était d'ailleurs pas très précise
    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
    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 Dut,

    Merci beaucoup, c'est parfait (même si c'est un peu lourd à coder)
    Désolé pour l'imprécision (qui d'ailleurs ne t'a pas empêché de comprendre exactement la question )

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

Discussions similaires

  1. [Windows 2000] Des fichiers .t$m s'accumulent sur mon C:
    Par annedeblois dans le forum Windows 2000/Me/98/95
    Réponses: 10
    Dernier message: 11/07/2008, 14h47
  2. JBoss Remoting : Accumulation de Connection
    Par ecatum dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 09/07/2008, 10h58
  3. [NIO] données 'texte' vers SocketChannel: s'accumule dans le buffer
    Par fantomasmusic dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/11/2007, 11h21
  4. Réponses: 18
    Dernier message: 25/10/2007, 15h08
  5. [Tampon d'accumulation] équivalent
    Par razmott dans le forum DirectX
    Réponses: 5
    Dernier message: 06/02/2007, 17h28

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