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 :

[mean] dans tableau de cellule


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut [mean] dans tableau de cellule
    Bonjour,

    J'ai un tableau de cellule A{i,j} de deux dimensions ou dans chaque cellule se trouve un signal (vecteur).

    y'a t il un moyen en indexage logique de faire la moyenne :

    moy1 de A{1,1} A{2,1} A{3,1} A{end,1}
    moy2 de A{1,2} A{2,2} A{3,2} A{end,2}
    moy3 de A{1,3} A{2,3} A{3,3} A{end,3}
    [...]


    peut être utiliser cellfun mais je vois pas comment..

    merci de votre aide.
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

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

    L'indexage logique ne te sera d'aucune utilité ici, c'est bien la fonction CELLFUN qu'il te faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellfun(@mean,A(:,1:3))

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Bonjour,

    L'indexage logique ne te sera d'aucune utilité ici, c'est bien la fonction CELLFUN qu'il te faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellfun(@mean,A(:,1:3))
    Merci,

    Seulement j'ai des vecteurs dans mes cells:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    A = 
     
    Columns 1 through 4
     
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
     
      Columns 5 through 8
     
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
     
      Columns 9 through 12
     
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
                     []                 []                 []                 []
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
    en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A_ref{i,j} =cellfun(@mean,A(:,1:12)) ;
    je me retrouve avec :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    A_ref = 
     
      Columns 1 through 11
     
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
         []     []     []     []     []     []     []     []     []     []     []
     
      Column 12
     
                    []
                    []
                    []
                    []
                    []
                    []
                    []
                    []
                    []
                    []
                    []
        [12x12 double]
    Mes vecteurs sont en faites des signaux de 4000 pts (j'en ai 12x12, en comptant aussi les vides..) et j'aimerais donc bien 12 vecteurs moyens de 4000 pts aussi en moyennant les 12 différents types de signaux. Au lieu de me retrouver avec 12x12 valeurs de moyenne de ces vecteurs.

    Merci !
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pourquoi se servir des indices i et j (égaux à 12 ici)?
    Ma ligne appliquée sur A entier te renverra une matrice 12x12 avec les valeurs moyennes de tes vecteur 1x4000 et un NaN pour les cellules vides.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A(1:5,1:12) = {[]};
    A(6:12,:) = {rand(1,4000)};
    A_mean = cellfun(@mean,A)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    J'ai du mal m'exprimer.

    Le A que tu sors est du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    A_mean =
     
           NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
           NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
           NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
           NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
           NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
        0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058
        0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058
        0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058
        0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058
        0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058
        0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058
        0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058    0.5058
    moi j'aimerais faire la moyenne de mes vecteurs comme suis :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    A = 
    
      Columns 1 through 6
    
                     []                 []                 []                 []                 []                []
                     []                 []                 []                 []                 []               []
                     []                 []                 []                 []                 []              []
                     []                 []                 []                 []                 []             []
                     []                 []                 []                 []                 []           []
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
    
      Columns 7 through 12
    
                     []                 []                 []                 []                 []                 []
                     []                 []                 []                 []                 []                 []
                     []                 []                 []                 []                 []                 []
                     []                 []                 []                 []                 []                 []
                     []                 []                 []                 []                 []                 []
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
        [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]    [1x4000 double]
    par exemple ici la moyenne des vecteurs en rouges, c'est à dire avoir un autre vecteur moyen de tous les vecteurs en rouge. et ceci pour les autres colonnes aussi, celle en vert et etc...
    Pour finir donc avec 12 signaux moyens de 4000 pts.

    merci
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok je comprends mieux, voici donc une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A_mat = cell2mat(A);
    A_mean_mat = mean(A_mat);
    A_mean = mat2cell(A_mean_mat,1,4000*ones(1,12));
    Dernière modification par Invité ; 26/09/2011 à 17h50.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    reconvertir en mat, merci, parfait.
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/04/2008, 08h55
  2. [VBA W] : fusionner cellules vides dans tableau
    Par camzo dans le forum VBA Word
    Réponses: 6
    Dernier message: 26/09/2007, 17h01
  3. Réponses: 4
    Dernier message: 10/07/2007, 09h36
  4. Réponses: 11
    Dernier message: 18/04/2007, 17h39
  5. Réponses: 1
    Dernier message: 02/04/2007, 17h16

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