Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB
MATLAB Forum d'entraide sur MATLAB. Avant de poster -> FAQ MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2012, 18h12   #1
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
Par défaut char et chaîne de caractères : problème d'espaces

Bonjour,

Code :
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 !
recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 18h34   #2
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
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.
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 18h46   #3
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
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 ?
recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 19h15   #4
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
Que souhaites-tu faire exactement?
Je te l'ai dit: un tableau de cellules. Tu as suivi mon lien vers la ?
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 19h17   #5
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
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
recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 21h19   #6
Membre confirmé
 
Homme Thomas Pegot
Étudiant
Inscription : janvier 2012
Messages : 195
Détails du profil
Informations personnelles :
Nom : Homme Thomas Pegot
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 195
Points : 299
Points : 299
Bonjour,

Voila je t'ai mâché le travail déjà bien pré-mâché:
Code :
1
2
3
4
5
6
>> {'le';'monde'}

ans = 

    'le'
    'monde'
Gakusei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h04   #7
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
Merci beaucoup !

Est-il possible de supprimer les apostrophes dans les résultats ?
recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h17   #8
Membre confirmé
 
Homme Thomas Pegot
Étudiant
Inscription : janvier 2012
Messages : 195
Détails du profil
Informations personnelles :
Nom : Homme Thomas Pegot
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 195
Points : 299
Points : 299
Citation:
Envoyé par recherche888 Voir le message
Est-il possible de supprimer les apostrophes dans les résultats ?
Avec les accolades:

Code :
1
2
3
4
5
6
>> a{1:2}
ans =
le

ans =
monde
Gakusei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h25   #9
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
Merci beaucoup !
recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 17h32   #10
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
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 :
1
2
3
4
5
6
>> C = {'MATLAB' , rand(10) ; 10 , cell(10)}

C = 

    'MATLAB'    [10x10 double]
    [    10]    {10x10 cell  }
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 18h00   #11
Membre confirmé
 
Homme Thomas Pegot
Étudiant
Inscription : janvier 2012
Messages : 195
Détails du profil
Informations personnelles :
Nom : Homme Thomas Pegot
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 195
Points : 299
Points : 299
@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
Gakusei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 19h45   #12
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
@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.
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 19h55   #13
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
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 :
1
2
3
4
5
6
>> tempfilelist(1,3:4)'

ans = 

    'R1_October_03_2011_44984193.wav'
    'R1_October_03_2011_45170109.wav'
Code :
1
2
3
4
5
6
>> {tempfilelist{1,3:4}}.'

ans = 

    'R1_October_03_2011_44984193.wav'
    'R1_October_03_2011_45170109.wav'
recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 20h09   #14
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
Une solution avec FPRINTF:
Code :
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})
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 20h13   #15
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
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.
recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 03h32   #16
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 3 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2009
Messages : 3 598
Points : 6 829
Points : 6 829
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 :
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.
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
Je suis régulièrement sur le chat DVP - Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 08h25   #17
Invité régulier
 
Inscription : mars 2011
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 92
Points : 7
Points : 7
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).

recherche888 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 09h23   #18
Modérateur
 
Inscription : août 2007
Messages : 3 579
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 3 579
Points : 4 405
Points : 4 405
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 :
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 :
1
2
3
4
5
>> tempfilelist{3}

ans =

R1_October_03_2011_44984193.wav
et du coup pour utiliser wavread :
Code :
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.
magelan est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h27.


 
 
 
 
Partenaires

Hébergement Web