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 :

Bug au niveau d'un programme avec uigetfile


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Bug au niveau d'un programme avec uigetfile
    Bonjour à tous,

    Voilà je voudrais réaliser un petit programme qui me permettrait de filtrer des fichiers de types images et de types spectrales selon leurs noms. C'est ce que je viens donc de réaliser avec ce petit programme. Le problème c'est que le programme ne peut gérer que des fichiers au nombre de 2 et +. Si je sélectionne un fichier unique le programme plante et je n'arrive pas du tout à savoir d'où cela peut venir. Pourriez-vous m'aider à déboguer le problème.
    Cordialement,

    MK

    Programme :
    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
    16
    17
    18
    19
    20
    21
    clc, clear all,
    [listOfFiles, folder] = uigetfile ({'t*F1.spc','Tubes fenêtre 1 (*.spc)';'t*F2.spc','Tubes fenêtre 2 (*.spc)';
        't*_anormalF1.spc','Tubes anormaux fenêtre 1 (*.spc)';'t*_anormalF2.spc','Tubes anormaux fenêtre 2 (*.spc)';
        'cu*F1.spc','Chambres urinaires fenêtre 1 (*.spc)';'cu*F2.spc','Chambres urinaires fenêtre 2 (*.spc)';
        'cb*F1.spc','Capsules de Bowman fenêtre 1 (*.spc)';'cb*F2.spc','Capsules de Bowman fenêtre 2 (*.spc)';
        'mesang*F1.spc','Mésangiums fenêtre 1 (*.spc)';'mesang*F2.spc','Mésangiums fenêtre 2 (*.spc)';
        'i*F1.spc','Intersitiums fenêtre 1 (*.spc)';'i*F2.spc','Intersitiums fenêtre 2 (*.spc)';
        'vx*F1.spc','Vaisseaux fenêtre 1 (*.spc)';'vx*F2.spc','Vaisseaux fenêtre 2 (*.spc)';
        'cg*F1.spc','Parois capillaires glomérulaires fenêtre 1 (*.spc)';'cg*F2.spc','Parois capillaires glomérulaires fenêtre 2 (*.spc)'
        '*.*','All Files (*.*)'
        }, 'Selection du spectre', 'MultiSelect', 'on');
     
    for j=1:length(listOfFiles) 
       fullFileName = fullfile(folder, listOfFiles{j}); 
       spectrum = tgspcread(fullFileName); 
       figure(1); 
       plot(spectrum.X,spectrum.Y(:,1));
       hold all
     
    end 
    legend(listOfFiles);
    Erreur si je sélectionne qu'un seul fichier :
    ??? Cell contents reference from a non-cell array object.
    
    Error in ==> spectre at 14
       fullFileName = fullfile(folder, listOfFiles{j});

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Lorsqu'un seul fichier est sélectionné, la sortie listOfFiles n'est pas un tableau de cellules mais une simple chaîne de caractères.
    Une solution simple: utiliser la fonction cellstr juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listOfFiles = cellstr(listOfFiles)
    Une vérification à ajouter: si l'utilisateur appuie sur Cancel ou ferme la fenêtre de dialogue. Dans ce cas listOfFiles vaudra 0.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Je te remercie çà marche impeccable.

    Une autre question en rapport aussi avec ce programme (code source identique). Si maintenant je cherche à gérer des images au format par exemple tif.

    Si je met ta ligne commande j'obtient maintenant un autre message d'erreur, si tu as le temps tu pourrais m'expliquer en deux mots pourquoi j'ai cette erreur.

    Cordialement,

    MK

    Erreur :
    ??? Attempt to call constructor image with incorrect letter case.
    
    
    Error in ==> basicImageDisplay at 9
    hh = image(xdata,ydata,cdata, ...
    
    Error in ==> imshow at 246
      hh = basicImageDisplay(fig_handle,ax_handle,...
    
    Error in ==> image at 18
    imshow(img),title(listOfFiles{j})

Discussions similaires

  1. Réponses: 36
    Dernier message: 08/11/2012, 12h03
  2. Liens : Aide à la programmation avec DirectX
    Par djbed dans le forum DirectX
    Réponses: 11
    Dernier message: 22/03/2007, 23h30
  3. Commencer la programmation avec le langage Java ?
    Par von_magnus dans le forum Débuter
    Réponses: 14
    Dernier message: 09/03/2004, 22h19
  4. Réponses: 3
    Dernier message: 27/08/2003, 21h14
  5. Réponses: 4
    Dernier message: 25/08/2003, 09h02

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