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 :

troncature de mot


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 13
    Points : 6
    Points
    6
    Par défaut troncature de mot
    Bonjour

    j'ai importé un fichier xml sous MATLAB, et je voudrais copier juste copier les données qui m’intéressent dans un autre fichier.

    Pour ce faire je fais une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i= 1 : length(data.pinout.pin_usage)
            if (isfield(data.pinout.pin_usage{1,i}.Attributes,'pin_reference'))
                Dico.data.pin_ref{i} =data.pinout.pin_usage{1,i}.Attributes.pin_reference;
            else
                Dico.data.pin_ref{i}={''};
            end
    pin_reference est une chaine de caractère.
    La fonction marche bien, MATLAB me copie entièrement la chaine de caractère dans Dico.data.pin_ref, jusqu'au moment où le if est faux, MATLAB m'écrit "" dans mon Dico.data.pin_ref, et ça m'enlève la dernière lettre de chaque mot qui a été copié avant

    Par exemple
    avant que MATLAB marque "" dans une colonne
    dico.data.pin_ref{1} = bibimange
    dico.data.pin_ref{2} = bibibois
    dico.data.pin_ref{3} = bibidort
    après que MATLAB ait marqué "" dans une colonne
    dico.data.pin_ref{1} = '"bibimang
    dico.data.pin_ref{2} = "'bibiboi
    dico.data.pin_ref{3} = '"bibidor
    Il me manque la dernière lettre de chaque mot.
    Je sais que le problème vient du fait qu'il n'y a rien dans la colonne, mais je ne vois pas comment régler le problème, j'ai essayé plusieurs choses mais ça me donne toujours le même résultat

    Merci

  2. #2
    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,

    pourrais-tu nous montrer un code qui permet de reproduire ce comportement?

    Car par exemple, en faisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dico.data.pin_ref{1} = 'bibimange';
    dico.data.pin_ref{2} = 'bibibois';
    dico.data.pin_ref{3} = 'bibidort';
    dico.data.pin_ref{4}={''};
    On ne rencontre pas le problème que tu évoques.

    Sinon, pourquoi rajoutes-tu une cellule dans Dico.data.pin_ref{i}? Pourquoi ne pas faire : Dico.data.pin_ref{i}=''; ?
    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.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    % Get the current data structure
    Dico = getappdata(handles.fg_main,'Dico');
     
    % Get file dictionnary
    [FileName,PathName] = uigetfile({'.xml'},'Select the EMS dictionnary');
    data = fullfile(PathName,FileName);
     
    % cancel case
    if ~ischar(FileName)
        return
    else
           set(handles.ed_EMSDictionnary_path,'String',fullfile(PathName,FileName));
     
        % Import data from dictionnary
        data  = xml2struct(fullfile(PathName,FileName));
        [raw] = xmlread(fullfile(PathName,FileName));
        line_nb = length(data.pinout.pin_usage);
        Dico.data.pin_ref = [];
        Dico.data.Name = [];
        Dico.data.high_pin = [];
        Dico.data.low_pin= [];
        Dico.data.gnd_pin =[];
        Dico.data.supply_pin =[];
     
        for i= 1 : length(data.pinout.pin_usage)
            if (isfield(data.pin_usage{1,i}.Attributes,'pin_reference'))
                Dico.data.pin_ref{i} =data.pin_usage{1,i}.Attributes.pin_reference;
            else
                Dico.data.pin_ref{i}={''};
            end
            if (isfield(data.pin_usage{1,i}.Attributes,'signal_reference'))
                Dico.data.Name{i} =data.pin_usage{1,i}.Attributes.signal_reference;
     
            elseif (isfield(data.pin_usage{1,i}.Attributes,'injector_name'))
                Dico.data.Name{i}=data.pin_usage{1,i}.Attributes.injector_name;
             else
                Dico.data.Name{i}= 'NC';
            end
     
            if (isfield(data.pin_usage{1,i}.Attributes,'highside_pin_reference'))
                Dico.data.high_pin{i} =data.pin_usage{1,i}.Attributes.highside_pin_reference;
            else
                Dico.data.high_pin{i}={''};
            end
     
            if (isfield(data.pin_usage{1,i}.Attributes,'lowside_pin_reference'))
                Dico.data.low_pin{i} =data.pin_usage{1,i}.Attributes.lowside_pin_reference;
            else
                Dico.data.low_pin{i}={''};
            end
            if (isfield(data.pin_usage{1,i}.Attributes, 'supply_pin_reference'))
                Dico.data.gnd_pin{i} =data.pin_usage{1,i}.Attributes.supply_pin_reference;
            else
                Dico.data.gnd_pin{i}={''};
            end
            if (isfield(data.pin_usage{1,i}.Attributes, 'gnd_pin_reference'))
                Dico.data.supply_pin{i} =data.pin_usage{1,i}.Attributes.gnd_pin_reference;
                Dico.data.supply_pin{i}={''};
            end
        end

    Voici le code en entier

    je ne comprends pas
    Sinon, pourquoi rajoutes-tu une cellule dans Dico.data.pin_ref{i}? Pourquoi ne pas faire : Dico.data.pin_ref{i}=''; ?
    Où est-ce que je rajoute une cellule?

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

    Tout comme magelan, je ne vois rien dans ton code qui pourrait mener à ton problème...
    N'as-tu pas d'autres endroits où tu utilises Dico.data.pin_ref?
    As-tu vérifié le contenu des data.pin_usage{1,i}.Attributes.pin_reference;?

    Pour ce que te propose magelan, regarde la différence entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {'bibimange','bibibois','bibidort',''}
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {'bibimange','bibibois','bibidort',{''}} % cellule rajoutée ici

Discussions similaires

  1. Extraction de mots clés
    Par Olive1808 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/02/2016, 20h49
  2. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  3. Réccupération du mot de passe d'une connexion
    Par zinaif dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/12/2002, 18h32
  4. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16
  5. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2002, 23h34

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