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 :

[importdata] Erreur avec array de caractères


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Par défaut [importdata] Erreur avec array de caractères
    Bonjour,

    Je rencontre une petite difficulté lors de la concaténation de caractère pour l'ouverture de fichiers. J'ai créé un chemin et un cell array of strings:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pathname='C:\directory\'; 
    mesnoms={'nom1'; 'monsecondnom'; 'nom3};
    Ensuite, je désire faire une boucle pour importer le contenu des fichiers nom1.txt, monsecondnom.txt et nom3.txt un à un. Pour ce faire j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:3
       name=mesnoms(i);
       A=importdata(cat(2,pathname,char(name),'.txt'),',');
    end
    où char a pour but de transformer le cell array of strings en un character array.

    Matlab indique (erreur non trouvée dans faq, sauf avec les GUIs):

    ??? Attempt to reference field of non-structure array.
    Remarques:

    - la bonne chaîne de caractères est créée avec la fonction cat (p.ex),
    - et compiler ceci fonctionne (!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    name=mesnoms(1);
    A=importdata(cat(2,pathname,char(name),'.txt'),',');
    Bref, je suis un peu désabusé... Y a-t'il une explication à ce problème?
    Merci d'avance!

  2. #2
    Expert confirmé
    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
    Par défaut
    Euh je ne comprends pas pourquoi il y a une erreur mais un conseil pour éviter les cat et autres trucs bizarres genre char :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:3
       name=mesnoms(i);
       A=importdata(fullfile(pathname,[mesnoms{i},'.txt']),',');
    end
    Note : l'erreur signifie que tu essayes d'accèder à un champ inexistant d'une structure, or le seul endroit où tu as un point (.) qui pourrait signaler une structure c'est dans le .txt, le problème doit donc venir de là...
    Pour essayer de comprendre l'erreur sinon il faudrait décomposer ta ligne de commande (pour savoir si cela vient du cat ou du importdata)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Par défaut
    Merci pour cette réponse. Je viens d'essayer avec la fonction fullfile. Ici aussi j'obtiens la même chose:

    - A=importdata(fullfile(pathname,[mesnoms{1},'.txt']),',') avec i fixé à 1 p.ex fonctionne complètement (fichier importé). Fullfile et importdata fonctionnent.

    - par contre, si j'ai une boucle avec dedans
    A=importdata(fullfile(pathname,[mesnoms{i},'.txt']),','), fullfile seule fonctionne impec (bonne chaîne de caractère, touc comme précédemment), mais mise dans importdata avec i "libre" semble poser problème, même si i est mis à 1 à la première itération.

    Merci encore pour votre aide!

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Tu pourrais nous donner un aperçu de quelques lignes types des fichiers à importer ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Par défaut
    Bonjour,

    Certainement, voici un exemple synthétique à deux lignes pour faire court:

    <Nom>,<Groupe>,<Date>,<Age>,<Poids>
    Nom1,A,20061101,48,72
    Nom2,B,20050501,53,55

    Visiblement le délimiteur est correct, et il ne semble pas nécessaire (ni possible?) d'imposer la lecture à partir de la seconde ligne. Sans utiliser la boucle, Importdata fonctionne et crée 2 structures: data avec les colonnes numériques, et textdata avec les colonnes de caractères. Avec la boucle, le chemin reste bon mais on a le message d'erreur. J'espère que cela pourra aider. Avez-vous aussi déja fait des importations itératives?

    Merci encore et très bonne journée

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Le problème est que IMPORTDATA est une fonction de haut niveau, ça ressemble à une fonction magique... mais c'est pas forcément flexible à l'utilisation

    Quelles sont les données que tu souhaites récupérer dans les fichiers ?

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

Discussions similaires

  1. [Débutant] erreur avec importdata
    Par Lorddolf dans le forum MATLAB
    Réponses: 10
    Dernier message: 30/03/2011, 14h44
  2. [résolut]erreur avec array et push
    Par Acropole dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 13/02/2009, 17h16
  3. Réponses: 3
    Dernier message: 18/03/2008, 10h54
  4. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25
  5. Erreur "size array"
    Par boobob dans le forum C
    Réponses: 3
    Dernier message: 06/08/2003, 10h18

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