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 :

problème de "load" des fichiers textes dans un exe


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut problème de "load" des fichiers textes dans un exe
    bonjours à tous

    j'ai crée un exécutable de la fonction suivante :

    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
    function courbes()
     
     load 'YIMC.txt'
     load 'YMIMC.txt'
     load 'UIMC.txt'
     load 'CIMC.txt'
     
    figure (1)
    plot(YIMC)
    figure (2)
    plot(YMIMC)
    figure (3)
    plot(UIMC)
    figure (4)
    plot(CIMC)
    si je l'exécute manuellement ( en double clic) ça marche mais si je l'exécute à partir
    d'une application vb6 le programme (matlab) ne peut pas lire les fichiers. Par contre si je crée un exécutable avec le code suivant (en spécifiant les chemins) le problème est résolu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    load 'C:\adresses.txt'
    load 'C:\Nouveau dossier\YIMC.txt'
    load 'C:\Nouveau dossier\YMIMC.txt'
    load 'C:\Nouveau dossier\UIMC.txt'
    load 'C:\Nouveau dossier\CIMC.txt'
    le problème est que les chemins et les noms des fichiers sont à saisir par une application VB6. J'ai donc essayé de les mettre dans un autre fichier text pour les récupérer par la fonction matlab

    mais ça pas marché

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Citation Envoyé par guefrachi Voir le message
    J'ai donc essayé de les mettre dans un autre fichier text pour les récupérer par la fonction matlab

    mais ça pas marché
    pas très clair ton histoire!!!
    quel est le message d'erreur?
    faire juste un load d'un fichier texte (ici donc ce serait adresses.txt ) sans post-traitement c'est normal que ça ne fasse rien.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    bonjour
    Merci de répondre
    je m'explique

    je met (par vb6) le chemin et les noms des fichiers dans un fichier text comme suit

    C:\Nouveau dossier\
    YIMC.txt
    YMIMC.txt
    UIMC.txt
    CIMC.txt
    puis j'essaye de l'ouvrir par
    j'obtiens l'erreur suivant

    Error using ==> load
    Unknown text on line number 1 of ASCII file c:\adresses.txt
    "c:\".
    mon but est de récupérer ce contenu pour faire une concaténation comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    load adresses[1]+adresses[2]
    équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    load 'C:\Nouveau dossier\YIMC.txt'

  4. #4
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    L'erreur est due à l'espace dans la première ligne entre Nouveau et dossier

    Un code à adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     x=importdata( 'C:\adresses.txt')
     path=x{1}
    for ii= 1 : numel(x)-1
    load(fullfile(path,x{ii}))
    end
    A lire: Importing Text Data Files

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    bonjour
    Merci pour la solution (petite recrtif ii=2:numel(x))

    L'erreur est due à l'espace dans la première ligne entre Nouveau et dossier
    ça se produit même si je met c:\ ou même c uniquement.

    bon je veux tracer ces variables, j'ai chercher dans le help j'ai trouvé eval et strtok et j'ai fait ce code qui marche bien, mais je sens que j'ai compliqué les choses, y a t-il une chose plus simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     x=importdata( 'C:\adresses.txt');
      path=x{1};
     for ii= 2 : numel(x)
     load(fullfile(path,x{ii}))
     figure(ii-1)
    a=cell2mat(strtok(x(ii),'.txt'));
    a=mat2str(a);
    eval(['plot('  eval(a) ')'])
     end
    A +

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Outre le fait que les EVAL c'est mal et qu'il faut limiter au strict nécessaire leur utilisation (c'est à dire jamais ou presque), je pense que tu dois pouvoir remplacer ces lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a=mat2str(a);
    eval(['plot('  eval(a) ')'])
    Par celle-ci (ou quelquechose d'approchant):
    Surtout qu'ici, tu charges a pour le convertir en String pour le réévaluer (ca tourne en rond).

    Duf

    P.S. Pense à indenter ton code (Ctrl+A et Ctrl+I) c'est plus propre et plus lisible

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    Merci de répondre Duf
    peut être tu n'a pas bien saisie la situation.
    j'essayerais de détailler de plus; j'ai 4 fichiers text
    YIMC.txt
    YMIMC.txt
    UIMC.txt
    CIMC.txt
    dont les noms peuvent changer d'un essai à un autre, lorsque je fais load de ces fichiers j'aurais au work space des variables portant les mêmes noms
    ( YIMC YMIMC UIMC et CIMC) puisque je connais pas d'avance leurs noms je ne peux pas faire par exemple
    plot (YIMC)
    je dois donc lire le fichier adresses.txt (bon c le programme) pour savoir les noms des variables afin de les appeler par la suite. Sachant qu'ils sont récupérés de fichier adesses.txt sous type string je dois faire une conversion string-variable ou quelques chose comme ça. J'ai donc pensé au code
    précédent.

    concernant plot(a) j'aurais


    ??? Error using ==> plot
    Invalid first data argument

    A+

  8. #8
    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
    Par défaut
    Tu risques de te compliquer la tache en cherchant à conserver le nom des fichiers dans les noms de variables... Le plus simple est de stocker tes données dans un tableau de cellules. Si chacun de tes fichiers contient exactement une variable, tu peux faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x=importdata( 'C:\adresses.txt');
    path=x{1};
    for ii= 2 : numel(x)
        mamatrice{i} = load(fullfile(path,x{ii}));
        figure(ii-1)
        plot(mamatrice{i});
    end
    Ainsi mamatrice{1} correspondra à YIMC, mamatrice{2} correspondra à YMIMC, ...
    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.

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Par défaut
    bonjour
    Merci pour vous tous
    je garderais ta solution magelan c plus simple.
    bon c s'il n y aurait pas d'autres suggestions.

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

Discussions similaires

  1. suppression des fichiers text dans différents dossiers
    Par guefrachi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/07/2010, 11h26
  2. lire des fichiers text dans un zip
    Par usermap dans le forum C#
    Réponses: 1
    Dernier message: 24/12/2009, 00h37
  3. PHP5: charger des fichiers textes dans une base MYSQL
    Par koueletbak dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/03/2006, 11h14

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