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 :

char et chaîne de caractères : problème d'espaces


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut char et chaîne de caractères : problème d'espaces
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> char('le','monde')
     
    ans =
     
    le   
    monde
    Le programme ajoute des espaces après "le", de sorte à que cette chaîne de caractères aient autant de caractères que la chaîne de caractère la plus longue ("monde").

    Connaîtriez-vous une alternative à la fonction "char" pour éviter ce type d'ajout d'espaces, lors de la concaténation de chaînes de caractères ?

    Merci beaucoup !

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

    Ce comportement est tout à fait normal: MATLAB stocke ce contenu dans un tableau 2D, il n'est donc pas possible d'avoir des "cases vides".
    Pour faire ce que tu veux, c'est un tableau de cellules qu'il te faut utiliser.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Bonjour,

    Ce comportement est tout à fait normal: MATLAB stocke ce contenu dans un tableau 2D, il n'est donc pas possible d'avoir des "cases vides".
    Pour faire ce que tu veux, c'est un tableau de cellules qu'il te faut utiliser.
    Merci bien.

    Quels tableaux créerais-tu pour la concaténation verticale de chaînes de caractères ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Que souhaites-tu faire exactement?
    Je te l'ai dit: un tableau de cellules. Tu as suivi mon lien vers la ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Que souhaites-tu faire exactement?
    Je te l'ai dit: un tableau de cellules. Tu as suivi mon lien vers la ?
    Oui, mais là, j'en ai un peu marre de matlab. Pour moi, c'est l'overdose.
    Aussi, je voudrais que tu me mâchasses ce noble travail cellulesque.
    Grrrr

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut
    Bonjour,

    Voila je t'ai mâché le travail déjà bien pré-mâché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> {'le';'monde'}
     
    ans = 
     
        'le'
        'monde'

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup !

    Est-il possible de supprimer les apostrophes dans les résultats ?

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut
    Citation Envoyé par recherche888 Voir le message
    Est-il possible de supprimer les apostrophes dans les résultats ?
    Avec les accolades:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> a{1:2}
    ans =
    le
     
    ans =
    monde

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par recherche888 Voir le message
    Est-il possible de supprimer les apostrophes dans les résultats ?
    C'est juste MATLAB qui affiche les tableaux de cellules sous cette forme, elles ne sont pas vraiment présentes. Tout comme les crochets pour les tableaux numériques, et des accolades pour les tableaux de cellules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> C = {'MATLAB' , rand(10) ; 10 , cell(10)}
     
    C = 
     
        'MATLAB'    [10x10 double]
        [    10]    {10x10 cell  }

  11. #11
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut
    @Winjerome: Oui tout à fait d'accord.

    Sauf que dans mon cas a{1} renvoie l'élément de la cellule 1 ('le') alors que a(1) renvoie la cellule 1 ( {'le'} ).


    @recherche888: Après ça dépend ce que tu veux en faire

  12. #12
    Invité
    Invité(e)
    Par défaut
    @Gakusei: Je suis tout à fait d'accord avec toi, mais j'ai l'impression que recherche888 pensait que cela insérait les apostrophes dans le contenu lui-même et non seulement à l'affichage.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Simplement, je ne parviens pas à me débarrasser de ces apostrophes et des "ans" (puisque je cherche à ce que ces noms de fichiers apparaissent consécutivement).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> tempfilelist(1,3:4)'
     
    ans = 
     
        'R1_October_03_2011_44984193.wav'
        'R1_October_03_2011_45170109.wav'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> {tempfilelist{1,3:4}}.'
     
    ans = 
     
        'R1_October_03_2011_44984193.wav'
        'R1_October_03_2011_45170109.wav'

  14. #14
    Invité
    Invité(e)
    Par défaut
    Une solution avec FPRINTF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tempfilelist(1,3:4) = {
        'R1_October_03_2011_44984193.wav'
        'R1_October_03_2011_45170109.wav'};
    fprintf('%s\n',tempfilelist{1,3:4})

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    En effet !



    Peut-on insérer le résultat (tel qu'il apparaît) de fprintf dans une variable ?
    Le but pour moi est ensuite de pouvoir manipuler cette variable.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Dans ce cas c'est SPRINTF qu'il te faudra utiliser, mais repassant sur un tableau simple, si les noms de tes fichiers n'ont pas la même longueur, tu reviendras au problème initial...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Str = sprintf('%s\n',tempfilelist{1,3:4})
    Citation Envoyé par recherche888 Voir le message
    Le but pour moi est ensuite de pouvoir manipuler cette variable.
    De quelle façon? La manipulation avec un tableau de cellules est plus aisée.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Il s'agit d'utiliser pour plusieurs centaines de fichiers la fonction "waveread", qui nécessite que le nom du fichier soit précisément mentionné (pas d'espace final, pas d'apostrophes l'encadrant).


  18. #18
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Pour les apostrophes :
    Citation Envoyé par Winjerome Voir le message
    C'est juste MATLAB qui affiche les tableaux de cellules sous cette forme, elles ne sont pas vraiment présentes
    Citation Envoyé par Winjerome Voir le message
    j'ai l'impression que recherche888 pensait que cela insérait les apostrophes dans le contenu lui-même et non seulement à l'affichage.
    Les apostrophes ne font pas partie de la chaîne de caractère. Pour différencier les nom de variables/function des chaines de caractères, on utilise des apostrophes. Mais dans l'expression :
    b contiendra uniquement le caractère a.
    Ensuite les apostrophes, c'est juste pour l'affichage.

    Citation Envoyé par recherche888 Voir le message
    Il s'agit d'utiliser pour plusieurs centaines de fichiers la fonction "waveread", qui nécessite que le nom du fichier soit précisément mentionné (pas d'espace final, pas d'apostrophes l'encadrant).
    Quel est le problème avec cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tempfilelist(1,3:4) = {
        'R1_October_03_2011_44984193.wav'
        'R1_October_03_2011_45170109.wav'};
    ?
    Il n'y a pas d'apostrophe dans les chaines de caractères et il n'y a pas d'espace. Pour accéder au contenu de la troisième cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> tempfilelist{3}
     
    ans =
     
    R1_October_03_2011_44984193.wav
    et du coup pour utiliser wavread :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wavread(tempfilelist{3});
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/10/2013, 11h33
  2. chaînes de caractères : problème selon l'OS
    Par loacast dans le forum C++
    Réponses: 10
    Dernier message: 16/03/2007, 16h20
  3. Réponses: 3
    Dernier message: 16/03/2006, 16h44
  4. Problème pour exécuter une chaîne de caractères
    Par Pongo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h34
  5. Problème de chaîne de caractères (BSTR)
    Par patvdb dans le forum MFC
    Réponses: 2
    Dernier message: 26/02/2004, 15h44

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