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 :

Concaténer tableau de cellules


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    Par défaut Concaténer tableau de cellules
    Bonjour,

    Question simple surement.

    Soit un tableau de cellule qui peut avoir 1 ou 2 cellules composées que de vecteurs de données numériques, que j'aimerais concaténer ou pas (si nbr cellule=1)

    1er cas :
    A{1}=[1 5 6 8]

    ou 2eme cas:
    A{1}=[1 5 6 8]
    &
    A{2}=[5 8 9 4 1 12]

    j'aimerais concaténer TOUS les vecteurs de ce tableau de cellule sans passer par une boucle, de sortes qu'il me donne dans le 1er cas, le tableau cde cellule concatenée
    A{1}=[1 5 6 8] (rien ne change)

    et dans le 2eme cas:
    A{1}=[1 5 6 8 5 8 9 4 1 12] (vecteurs concaténés)

    Pour plus de détails:

    J'ouvre 1 ou 2 fichiers par dossier à l'aide d'une boucle et j'aimerais les concaténer, voici mon script :

    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
     
     d=dir(pathDATA);
     NbrFiles=length(find([d.isdir]==0))
     
    allData={}
    allTime={}
        for kk=1:NbrFiles
            filename{kk} = d(kk+2).name % +2 car les 2 premiers sont "." et ".." avant noms des fichiers
            dataname{kk}=[path,filename{kk}] 
     
            [DAT,I]=fctOpen(dataname{kk});
            datatemp = cat(1,DAT(:).d); % cat pour fonction fctOpen
            timetemp = cat(1,DAT(:).t);% cat pour fonction fctOpen
            data{kk}=datatemp(:);
            time{kk}=timetemp(:);
     
          allData={allData data{kk}}
           allTime={allTime time{kk}}
     
        end
    mais dans ce cas, les données sont dans une cellule d'une cellule ... allData{2}{2}





    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 317
    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 317
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >> A{1} = [1 5 6 8];
    >> A{2} = [5 8 9 4 1 12];
    >> [A{:}]
     
    ans =
     
         1     5     6     8     5     8     9     4     1    12

  3. #3
    Membre éprouvé
    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
    Par défaut
    Merci cela marche bien, j'ai une question cependant.

    dans ce code où j'ouvre 2 fichiers (boucle ii) dans 3 dossiers (boucle jj):

    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
     
       for jj 1:3
        for ii=1:2
            times{ii} = cell(ii,1);
            data{ii} = cell(ii,1);
     
     
            [times{ii}, data{ii}] = fonction_open_file([datadir liste{jj}(ii).name]);
     
            data{ii}=data{ii}';
            times{ii}=times{ii}';
        end
     
     
        data{jj}=[data{:}];
        times{jj}=[times{:}];
    end
    je ne comprends pas pourquoi lorsque j'appelle du même nom (comme ici) la variable concaténée et les variables à concaterner (data et times) cela ne fonctionne pas (pas de concaténation) mais si je change les 2 dernière lignes en (par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        dataTOT{jj}=[data{:}];
        timesTOT{jj}=[times{:}];
    ça marche bien..

    Merci d'avance

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

Discussions similaires

  1. [datenum] Concaténation tableau de cellules
    Par Newenda dans le forum MATLAB
    Réponses: 5
    Dernier message: 06/12/2010, 17h02
  2. tableau: largeurs cellules identiques sous IE mais pas sous FF
    Par cortex024 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 01/12/2006, 08h40
  3. Pb avec Tableau de cellules
    Par madislak dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2006, 15h09
  4. BO tableau fusion cellule
    Par marion782 dans le forum Deski
    Réponses: 5
    Dernier message: 19/05/2006, 16h31
  5. [VBA]tableau de cellules
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 22/01/2006, 19h42

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