Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB > Interfaces Graphiques
Interfaces Graphiques Forum d'entraide sur les interfaces graphiques en 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 07/02/2012, 15h49   #1
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 93
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2011
Messages : 93
Points : 57
Points : 57
Par défaut Création d'un fichier à nom variable

Bonjour,

Je voudrais à partir de la fonction mkdir() créer un dossier à nom variable, je m´explique :

1 variable X contient 3 éléments comme suit
Code :
X = [ date '_' nom '_' numero ]
date, nom et numero sont 3 variables
Mais lorsque je rentre mkdir(X) j´obtiens l´erreur suivante:

Error using mkdir
The filename, directory name, or volume label syntax is incorrect.
Le problème est que cette fonction ne prend pas de variable en argument et que d´après ce que j´ai lu c´est la seule à créer un dossier
Merci
junkie1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h00   #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 824
Points : 6 824
Bonjour,

Pourrait-on avoir un aperçu du contenu de ta variable X?
__________________
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 07/02/2012, 17h17   #3
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 93
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2011
Messages : 93
Points : 57
Points : 57
Bonjour,

Dateheure() est une fonction que j´ai crée pour obtenir la date ainsi que l´heure, quant à 'nom' et 'numero' ce sont des variables globales

Code :
1
2
3
Date_et_heure = Dateheure();
nom = 'test';
numero = 1;

Code :
X = [Date_et_heure '_' nom '_' numero];
Je viens d´essayé de créer un dossier qui ne prends comme arguments que Date_et_heure

et cela fonctionne correctement j´ai mon dossier qui se nomme 120207_17h09

Mais je ne sais pas pourquoi mkdir n´accepte pas X qui est une variable globale
junkie1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h38   #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 824
Points : 6 824
Donc si je résume, on a:

Code :
1
2
3
4
5
Date_et_heure = '120207_17h09';
nom = 'test';
numero = 1;

X = [Date_et_heure '_' nom '_' numero]
Alors dans ce cas, attention à numero qu'il faut transformer en chaine de caractères avant la concaténation:
Code :
X = [Date_et_heure '_' nom '_' num2str(numero)]
Remarques:
__________________
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 07/02/2012, 18h02   #5
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 93
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2011
Messages : 93
Points : 57
Points : 57
Merci !

Citation:
Envoyé par Winjerome Voir le message
[*]Je ne sais pas comment tu as codé ta fonction Dateheure()
TempsString = fix(clock);

puis

année = num2str(TempsString(1))
etc ...

A la fin je me suis debrouillé pour avoir une variable du type aammjj_heurehminutes
junkie1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h06   #6
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 93
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2011
Messages : 93
Points : 57
Points : 57
Par défaut uiputfile

Bonjour,

Dans la continuité de ce travail, j´aimerais sauvegarder dans mon dossier à nom variable que je viens de créer un document texte également à nom variable (Le nom de mon document est entré grâce a un 'edit text')

j´aimerais par la suite lorsque j´appuie sur mon bouton 'save as' faire appel à la fonction uiputfile de cette façon :

uiputfile(nom_de_mon_document,'save as',dossier_a_nom variable);

La figure s´affiche mais sans le nom_de_mon_document en surbrillance. Par contre si j´enlève 'dossier_a_nom variable', le document à enregistrer sera afficher en surbrillance mais le chemin sélectionner pour sauvegarder mon document sera MATLAB

Ne peut on pas avoir à la fois directement le nom du document en surbrillance ainsi que le chemin correcte ?

PS : Dans ce cas l´utilisateur devra rentrer 2 fois le nom du document à sauvegarder ( 1 fois dans l´edit text et une fois dans la figure uiputfile )

Code :
1
2
3
4
5
dossier_a_nom variable = [Dateheure '_' nom_de_mon_document '_' num2str((sprintf('%04.0f',numero)))];

    mkdir(dossier_a_nom variable);
        
    uiputfile(nom_de_mon_document,'Save file',dossier_a_nom variable);% dans ce cas le chemin est correcte mais 'nom_de_mon_document' n´est pas en surbrillance dans file name
junkie1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h57   #7
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 824
Points : 6 824
Il y a redondance dans le terme num2str((sprintf('%04.0f',numero))): ici NUM2STR ne sert à rien. C'est:
  • Soit sprintf('%04.0f',numero)
  • Soit num2str(numero,'%04.0f')
Comme montré précédemment, tu peux aussi inclure tous les termes dans SPRINTF:
Code :
dossier_a_nom_variable = sprintf('%s_%s_%04.0f',Dateheure,nom_de_mon_document,numero);
En ce qui concerne UIPUTFILE, il te faut spécifier le chemin entier dans le 3ème argument:
Code :
[FileName,PathName] = uiputfile({'*.txt','Text file'},'Save file',fullfile(dossier_a_nom_variable,nom_de_mon_document));
__________________
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 10/02/2012, 09h26   #8
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 93
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2011
Messages : 93
Points : 57
Points : 57
Merci

PS : J´avais au début cherché un moyen de récupérer le chemin de mon dossier créer avec la fonction path puis après m´en servir comme 3 ème paramètres mais ... Merci encore je ne connaissais pas l´existence de cette fonction
junkie1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2012, 11h32   #9
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 93
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2011
Messages : 93
Points : 57
Points : 57
Bonjour,

Dans le cas d´un fichier à nom variable j´aimerais ne récupérer qu´une partie de son nom, j´ai donc une variable qui contient un char de cette forme :

Code :
variable = 'donneA_donneB_donneC_donneD';
Je voudrais ne 'récupérer' que donneC, mais le problème est que la longueur de donneA et donneB varie, par exemple :

Code :
1
2
3
4
donneA = 'exemple1' ;
% ou 
donneA = 'ex1';
%etc
Mais la longueur de donneC et de donneD non, je me suis alors dis que le plus simple serait d´utiliser :

Mais evidement je recois l´erreur :

Code :
Subscript indices must either be real positive integers or logicals
Puis je me suis dis qu´avec un find :

Mais le fait est que j´ai plusieurs '_' et malheureusement ce n´est ni le premier ni le dernier, je devrais donc récupérer l´indice de mon 2eme '_' et de mon 3eme '_' mais je bloque ...

Quelqu'un aurait t-il une solution SVP ?
junkie1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2012, 11h53   #10
Modérateur
 
Avatar de duf42
 
Homme
Formateur en informatique
Inscription : novembre 2007
Messages : 2 538
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 2 538
Points : 3 253
Points : 3 253
Bonjour,

Avec une expression régulière tu peux récupérer tous les noms séparés par des '_':
Code :
1
2
regexp(variable, '[^_]+', 'match')
Duf
__________________
Modérateur MATLAB

Au boulot : Windows 7 , MATLAB 7.14 (r2012a)
A la maison : ArchLinux mais pas MATLAB
duf42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2012, 12h05   #11
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 909
Points : 15 909
Une autre solution :

Code :
X = strread(variable,'%s','delimiter','_');
ou encore :

Code :
[C,D] = strread(variable,'%*s%*s%s%s','delimiter','_');
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• 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)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2012, 12h14   #12
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 93
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2011
Messages : 93
Points : 57
Points : 57
Bonjour Duf,

Merci infiniment c´est exactement ce que je recherchais, je ne connaissais pas l´existence de cette function, elle est extrêmement pratique je viens de jeter un coup d´œil au help de cette dernière elle est surtout très complète, il y a énormément de possibilité (voir un peu trop pour tout assimiler )

Merci également Dut je vais tester ta solution

PS : la function donnée par Dut est extrêmement simple d´utilisation je la conseil attention tout même :

Code :
strread will be removed in a future version. Use textscan instead
junkie1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h48.


 
 
 
 
Partenaires

Hébergement Web