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 avec fichier .mat et matrice


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut problème avec fichier .mat et matrice
    Bonjour, je débute avec matlab, et je suis totalement bloquée !!!


    J’ai un fichier .mat, nommé 26Aug2011_T0948 (‘ddmmmyyy_THHMM’) généré par une fonction…
    A chaque utilisation de cette fonction, le nom du fichier change, et se met à jour avec la date et l’heure de l’exécution de la fonction.
    Dans ce fichier .mat (26Aug2011_T0948), se trouve 3 matrices dont une nommée data_Aug26_2011_T0948.

    Je souhaite importer cette matrice pour n’importe quel jour et date d’exécution. Je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Data1=uiimport(‘-file’) ; %import le fichier .mat
    Data2=Data1 . data_Aug26_2011_T0948 ; %import la matrice
    Pour un fichier donné ca marche, mais pas pour n’importe quel fichier.

    Il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Data1=uiimport(‘-file’) ; %import le fichier .mat
    Data2=Data1 . data_ ?????????? %import la matrice commençant par « data_ »
    je suis totalement bloquée à cet endroit et ne sais pas s'il est possible de continué....

    merci d'avance !

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 36
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Tu peux peut-être utiliser la fonction load qui permet de charger un fichier .mat :

    S sera une structure avec toutes les variables contenues dans le .mat. Ensuite, tu peux utiliser fieldnames pour lister les champ de la structure :

    En faisant une recherche dans les noms (names) tu peux donc retrouver le nom (chaine de caractères) de la matrice en question. (l'utilisation de eval sera peut-être nécessaire)

    Je pense que ça doit marcher mais il y a surement d'autres solutions.

    En espérant que ça aide.

    A bientôt

  3. #3
    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
    Bonjour,

    Citation Envoyé par clem5601;
    Pour un fichier donné ca marche, mais pas pour n’importe quel fichier.
    Qu'est-ce qui ne marche pas exactement? Obtiens-tu unmessage d'erreur? Si oui lequel?
    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.

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    pas de message d'erreur,

    je vous explique mon probleme,
    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data99=uiimport('-file'); %pour importer le fichier .mat a ouvrir, exemple ; j'ouvre le fichier 26Aug2011_T1329.mat-> OK
    
    
    data100=data99.data_Aug26_2011_T1329;  %selectionne le fichier cell "data_Aug26_2011_T1329" contenu dans le fichier .mat importer au dessus -> OK
    Mon Probleme est ici, dans mon code j'ai deja dit quel fichier cell je voulais ouvrir : "data_Aug26_2011_T1329", or le nom de ce fichier change en fonction du fichier .mat que j'ai importé plus haut...la seule ressemblance est le debut du nom du fichier "data_".


    je voudrais pouvoir faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data99=uiimport('-file');
    data100=data99.fichier commencant par "data_";
    mais je ne sais pas comment m'y prendre

    peut-etre existe un caracetere special pour dire ca ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data100=data99.data_'';
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data100=data99.data_{};
    ???


    je suis un peu perdu, j'ai tenté pas mal de chose, mais sans resultat....

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 36
    Points : 42
    Points
    42
    Par défaut
    As tu essaye ce que j'ai propose ?

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Oui j'ai essayé, ca marche tres bien ! mais uniquement pour un fichier donné !
    ca marche pour "data_Aug26_2011_T0948" contenu dans "26Aug2011_T0948.mat"
    Mais si je choisi d'importer "data_Aug31_2011_T1329" dans "31Aug2011_T1329.mat" ca ne marche plus.....


    en fait il faudrait pouvoir importer un fichier cell contenu lui meme dans un fichier .mat

  7. #7
    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 : 53 166
    Points
    53 166
    Par défaut
    La solution donnée par mcewen précédemment devrait fonctionner (sans utiliser EVAL).

    Montre nous le code que tu as essayé d'exécuter.
    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)

  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    S=uiimport('-file');
    names=fieldnames (S);
     
    namesOK=names(1:1);
     
    data=S.namesOK;
     
    ??? Reference to non-existent field 'namesOK' .
    par la suite j'utilise les valeurs contenues dans data pour d'autres calculs.....


    En tout cas, un grand merci pour votre réactivité !!!

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 36
    Points : 42
    Points
    42
    Par défaut
    Normalement ceci devrait fonctionner (avec eval )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    S = uiimport('-file');
    names = fieldnames(S)
    eval(['data = S.' char(names(1)) ';']);

  10. #10
    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 : 53 166
    Points
    53 166
    Par défaut
    Et encore mieux sans EVAL... mais avec les noms de champs dynamiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    S = uiimport('-file');
     
    names = fieldnames(S);
     
    data = S.(names{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)

  11. #11
    Futur Membre du Club
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Rolala ca marche du tonnere !!!

    Merci beaucoup beaucoup !!!!

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 36
    Points : 42
    Points
    42
    Par défaut
    Ah je connaissais pas le coup des champs dynamiques !

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

Discussions similaires

  1. Problème avec fichier .exe
    Par rostomus dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/12/2006, 17h02
  2. [XSL] Problème avec fichier distant
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2006, 20h24
  3. Problème avec fichier Excel génère erreur
    Par Yanmeunier dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/02/2006, 11h53
  4. [Delphi 3] Problème avec fichier ressource .RES
    Par delphim dans le forum EDI
    Réponses: 2
    Dernier message: 28/06/2005, 18h11
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17

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