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 :

Erreur, ecriture d'une matrice dans un fichier


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Physicien médical
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Physicien médical
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 35
    Points
    35
    Par défaut Erreur, ecriture d'une matrice dans un fichier
    Salut!

    J'ai un petit probleme concernant un fichier texte dans lequel je souhaiterais ecrire une matrice qui s'itere ds une boucle...j'essaie d'utiliser la fonction fwrite, mais j'obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Error using ==> fwrite
    Cannot write value: unsupported class cell
    pour info, voici le bout de code que j'ai tape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>mat = fopen ('C:\Rodolphe\matrix.txt');
    >> for i=3:numel(K)
    F= dicominfo (fullfile(rep, K(i).name));
    P ('%03d',i) = {F.PatientName};
    tab = fwrite (mat,P);
    end
    (Sachant que K= dir (blabla)) et que mon fichier texte est vierge...

    merci beaucoup d'avance!

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut


    ça fonctionne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P ('%03d',i) = {F.PatientName};
    Je suis sceptique...

    Et c'est censé faire quoi ?

    Sinon pour le message il te dit que FWRITE ne supporte pas les objets de class cell (donc P) comme argument.

  3. #3
    Nouveau membre du Club
    Profil pro
    Physicien médical
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Physicien médical
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Concernant le P, oui je crois bien que ca fonctionne..

    Ce que je souhaite c'est qu'a chaque lecture d'un fichier du paquet de fichiers que j'ai, il me preleve le champ "PatientName" qui appartient au "dicominfo" stocke dans F, qui change a chaque tour de boucle... Je souhaiterais qu'ensuite il me stocke cette information dans une matrice (ou plutot un tableau, car il n'y a pas que des nombres) , que j'exporterai au format txt (dans le fichier matrix donc)...

    j'ai besoin de ces infos pour travailler dessus apres...Sans doute je n'emploie pas la bonne methode...

    en tout cas merci pour ta reponse sur l'erreur deja...Dans l'aide matlab ils disent que l'argument de fwrite doit etre une matrice...je vais donc chercher la fonction me permettant d ecrire des tableaux de n'importe quoi ds un fichier texte!

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Si tu souhaites écrire du texte FWRITE n'est pas du tout la bonne fonction.
    Utilise plutôt FPRINTF et du coup tu n'as pas besoin de passer par cette variable intermédiaire étrange.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(mat,'%s\n',F.PatientName)
    Et sinon as-tu réellement besoin de stocker ces données en format texte ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Physicien médical
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Physicien médical
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Merci pour l'info sur la fonction a utiliser, je ne la connaissais pas, au debut c'est un peu galere de trouver ce qu'on veut dans Matlab sans avoir eu le moindre cours dessus

    Ensuite concernant le fichier texte, je pensais creer une petite base de donnees sur Office avec lui (j'ai deja programme de quoi le lire sous IDL) et la comparer a une BDD bien plus grosse que j'ai deja creee et qui contient de tres nombreux rapports, qui contiennent entre autres le champ PatientName..Le but final etant de relier le bon fichier DICOM au bon rapport en comparant quelques champs.... je sais pas si ce que je dis est clair, j'espere que c'est pas trop confus ^^

  6. #6
    Nouveau membre du Club
    Profil pro
    Physicien médical
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Physicien médical
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Excusez moi de nouveau !

    Il y a un petit probleme que je ne m'explique pas; Le code n e comporte pas d'erreur, et pourtant mon fichier texte ne s'ecrit absolument pas; voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    mat = fopen ('C:\Rodolphe\matrix.txt');
    for i=3:numel(K)
        F= dicominfo (fullfile(rep, K(i).name));
        P= F.PatientName;
        S=F.StudyDate;
        famname = P.FamilyName;
        tab = fprintf( mat,'%s' , famname, S);
    end
    FamilyName et StudyDate sont bien des strings, j'ai verifie..je suis dsl je ne trouve vraiment pas ou peut etre l'erreur

  7. #7
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Oui ce sont DEUX string et non pas une seule
    C'est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab = fprintf( mat,'%s %s' , famname, S);
    Ici j'ai mis un espace entre les 2 éléments, je ne sais pas si c'est ce que tu souhaites.
    De plus tu n'as pas mis non plus de retour ligne (/n ou \n flemme de vérifier )

    Et je trouve dommage de passer par des variables temporaires.

    Ceci dit cela aurait du écrire, ou mettre un message d'erreur.

    Tu as oublié de mettre les options d'ouverture de FOPEN :
    w pour write = écrire, t pour texte

    Et as-tu bien fait le FCLOSE à la fin ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Physicien médical
    Inscrit en
    Juillet 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Physicien médical
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Okay !!!

    Merci beaucoup Caro-Line, c'est super cool d'avoir pris de ton temps pour m'aider, c'est nickel maintenant

    Je manque vraiment de pratique sur Matlab, je connais pas tous ces petits details et sans toi je crois que j'aurais pu chercher encore longtemps (L'aide en anglais est pas tjs hyper complete..)

    PS: j'avais pas mis le fclose

    Tres bonne soiree a toi, bon courage (si tu tombe encore sur des nazes du Matlab comme moi) !!

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

Discussions similaires

  1. Ecrire une matrice dans un fichier texte
    Par tiouba dans le forum MATLAB
    Réponses: 5
    Dernier message: 20/04/2012, 14h26
  2. sauvgarder une matrice dans un fichier TXT
    Par malikakika dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/03/2008, 16h45
  3. Ecriture d'une image dans un fichier
    Par davidou2001 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/06/2007, 15h20
  4. Ecriture d'une list() dans un fichier Pb d'optimisation
    Par sebastien2222 dans le forum Langage
    Réponses: 11
    Dernier message: 13/06/2006, 16h53
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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