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 :

[strcat] concaténation de cell arrays [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 11
    Points
    11
    Par défaut [strcat] concaténation de cell arrays
    Bonjour,

    Je cherche à créer une ligne de cellules en concaténant du texte et des nombres, pour obtenir :
    M(L1C1) M(L1C2) etc ... M(L1C20) M(L2C1) ...etc M(L20C20)

    Pour ce faire j'ai créer 5 cell arrays correspondant à "M(L", "un nombre", "C", "un nombre", ")", de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A=repmat({'M(L'},1,400);
    B=num2cell(ceil((1:400)/20));
    C=repmat({'C'},1,400);
    D=num2cell(repmat(1:20,1,20));
    E=repmat({')'},1,400);
    F=strcat(A,B,C,D,E);
    et pour F j'obtiens bien une concaténation de mes cell arrays, sauf les nombres : dans chaque cellule de F j'ai M(L C )
    Pourtant B et D sont bien des cell arrays et non des vecteurs.

    Pouvez vous me dire quelle est mon erreur ?

  2. #2
    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,

    strcat, comme son nom l'indique, concatène des strings. Tes entiers ne sont pas des strings, mais sont assimilés à des caractères ascii par matlab.
    Il faut soit concaténer les cell arrays (et non les strings) soit transformer les numériques en str via num2str.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Ok merci, en fouinant un peu j'ai trouvé une façon d'utiliser num2str pour que çà fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    A=repmat({'M(L'},1,400);
    B=num2cell(ceil((1:400)/20));
    B=cellfun(@num2str,B,'UniformOutput',false);
    C=repmat({'C'},1,400);
    D=num2cell(repmat(1:20,1,20));
    D=cellfun(@num2str,D,'UniformOutput',false);
    E=repmat({')'},1,400);
    F=strcat(A,B,C,D,E);

  4. #4
    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 882
    Points
    52 882
    Par défaut
    Une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [i,j] = meshgrid(1:20);
     
    str = sprintf('M(L%dC%d) ',[i(:) j(:)].');
     
    C = strsplit(str(1:end-1));
    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)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/04/2007, 09h42
  2. Réponses: 1
    Dernier message: 02/04/2007, 17h16
  3. Ajouter un élément à un cell array
    Par Wookai dans le forum MATLAB
    Réponses: 5
    Dernier message: 10/01/2007, 13h23
  4. Cell array
    Par anabelle dans le forum MATLAB
    Réponses: 9
    Dernier message: 09/11/2006, 13h24
  5. Convertir un cell array en string
    Par Sensib dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/11/2006, 13h12

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