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

Interfaces Graphiques Discussion :

[uitable] Récupérer toutes les valeurs d'un tableau et les comparer à un fichier


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 283
    Points : 62
    Points
    62
    Par défaut [uitable] Récupérer toutes les valeurs d'un tableau et les comparer à un fichier
    bonjour,

    Dans mon gui, j'ai un tableau dans lequel l'utilisateur va saisir des données.
    j'ai un fichier .m dans lequel sont stockées des valeurs.

    j'aimerai pouvoir charger ce fichier .m avec uniquement les données qui ne sont PAS saisies dans le tableau...

    je dois donc pouvoir récupérer les valeurs des cellules du tableau puis les comparer avec les données dans le fichier et dire si le nom de ce paramètre est déjà saisi dans le tableau, je l'efface du fichier (mais pas définitivement);

    compliqué tout ça...

  2. #2
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Citation Envoyé par nawal59 Voir le message

    compliqué tout ça...
    disons que ce n'est pas logique d'aller stocker tes valeurs dans un M-file !!!
    pourquoi ne pas stocker tes valeurs dans un fichier paramètres ou dans un MAT-file ?

    Si tu as les valeurs dans un MAT-file, il te suffira d'utiliser load pour récuperer son contenu, puis faire un get 'data' de ton uitable et ensuite d'utiliser setdiff ou intersect ou union pour faire ton postraitement.
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 283
    Points : 62
    Points
    62
    Par défaut
    merci tug pour ta réponse, je ferai comme ça

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 283
    Points : 62
    Points
    62
    Par défaut
    qu'est-ce que tu appelles fichier paramètres?
    en fait le client m'a filé un fichier dans lequel sont stockés les paramètres et c'est un .m donc je n'ai pas le choix

    les valeurs des paramètres qui seront saisies dans le tableau viendront remplacer celles qui sont dans le fichier, exemple tous les paramètres par défaut ont pour valeur 1 dans le fichier, si l'utilisateur veut changer la valeur et mettre 3 par exemple, lorsque l'utilisateur chargera le fichier de paramètres, la valeur 3 remplacera le 1 pour ce paramètre...

    dans le fichier les paramètres sont sous format 'Paramètre=valeur', et dans le tableau j'ai 2 colonnes (une pour le nom du param une pour la valeur), comment faire en sorte qu'ils soient sous le même format?

  5. #5
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Citation Envoyé par nawal59 Voir le message
    qu'est-ce que tu appelles fichier paramètres?
    en fait le client m'a filé un fichier dans lequel sont stockés les paramètres et c'est un .m donc je n'ai pas le choix

    par fichier paramètres j'entendais un fichier texte .

    Ensuite pour lire ton . m tout dépend comment il est foutu.
    Si c'est du style :
    ( donc le signe = est le délimiteur dans ce fichier que j'ai nommé Param.m )

    alors importdata fera l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [A,B,C] =importdata('Param.m','=')
     valeurs = A.data
    parametres = A.textdata
    sinon utiliser fopen, fread, fgetl , textread ...
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 283
    Points : 62
    Points
    62
    Par défaut
    merci pour ton aide.

    j'ai en effet un fichier de ce genre
    Input1=1
    Input2=1
    Input3=3 Etc.....

    par contre pourrais-tu m'expliquer brièvement ce que signifient les A,B,C stp?
    et pourquoi tu fais:
    valeurs = A.data
    parametres = A.textdata

    merci!!!

  7. #7
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    J'ai nommé 3 variables de sortie à importdata A,B et C mais tu les nomme comme tu veux !
    te montre que B sera mon délimiteur (ici le signe = ) et C correspond au nombre de lignes d'en tête de mon fichier (ici 0) .

    Ensuite je fais valeurs = A.data pour te montrer que ça marche bien l'exemple que je t'ai donné. Je récupère bien les valeurs de mon m-file dans la variable valeurs par exemple.
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 283
    Points : 62
    Points
    62
    Par défaut
    j'ai fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [A,delimiter,hd]=importdata('input_parameters.m','=')
    val=A.data
    en fait j'ai cette erreur:

    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
    A = 
     
        'In1=1;'
        'In2=1;'
        'In3=1;'
        'In4=1;'
        'In5=1;'
        'In6=1;'
        'In7=1;'
        'In8=1;'
        'In9=1;'
        'In10=1;'
        'In11=1;'
        'In12=1;'
        'In13=1;'
        'In14=1;'
        'In15=1;'
        'In16=1;'
     
     
    delimiter =
     
    =
     
     
    hd =
     
        16
     
    ??? Attempt to reference field of non-structure array.
     
    Error in ==> maquette_bak>pushbutton31_Callback at 253
    val=A.data
     
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
     
    Error in ==> maquette_bak at 42
        gui_mainfcn(gui_State, varargin{:});
     
    Error in ==>
    @(hObject,eventdata)maquette_bak('pushbutton31_Callback',hObject,eventdata,guidata(hObject))
     
     
    ??? Error while evaluating uicontrol Callback
     
    >>
    je ne sais pas ce que cela signifie...

    en fait, ce que tu m'as montré c'est uniquement l'import des paramètres?
    comment dire que ce qui est à gauche du = c'est le nom du paramètre puis à droite sa valeur?

    car au final je dois intégrer les valeurs saisies dans ce fichier et il faut que les noms et les valeurs soient bien distincts

    désolé si j'ai du mal, j'essaie de comprendre...

  9. #9
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Oui c'est normal ton fichier n'est pas tout à fait identique à mon exemple, essaie ça:


    Là ca va te lire ton fichier et skipper le signe égal et le point virgule , donc récuperer que les valeurs et les paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid  =fopen('input_parameters.m');
     A = textscan(fid,'%s = %d ;')
    fclose(fid);
    A{1} te retournera tes paramètres et A{2} les valeurs associées
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 283
    Points : 62
    Points
    62
    Par défaut
    j'ai fait ce que tu m'as dit, ça donne cela:

    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
    >> fid  =fopen('input_parameters.m');
     A = textscan(fid,'%s = %d ;')
    fclose(fid);
     
    A = 
     
        {1x1 cell}    [0x1 int32]
     
    >> A{1}
     
    ans = 
     
        'In1=1;'
     
    >> A{2}
     
    ans =
     
       Empty matrix: 0-by-1

  11. #11
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Faut que tu cherches un peu , moi je n'ai pas ton fichier d'entrée donc faut que tu cherches l'option à mettre pour textscan:

    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = textscan(fid,'%s','delimiter','=')
    voire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     A = textscan(fid,'%s %d %*s','delimiter','=')
    tout dépend comment tu veux post-traiter tes résultats ...
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

Discussions similaires

  1. Récupérer les valeurs dans un tableau
    Par ssxjim dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/01/2011, 20h49
  2. Accéder correctement à toutes les valeurs d'un tableau
    Par swissbaboon dans le forum OpenCL
    Réponses: 2
    Dernier message: 05/05/2010, 11h39
  3. Réponses: 6
    Dernier message: 12/01/2010, 15h39
  4. [MySQL] Requête pour récupérer toutes les valeurs d'un tableau
    Par djoumusic dans le forum PHP & Base de données
    Réponses: 40
    Dernier message: 24/08/2008, 22h11
  5. initialiser toutes les valeurs d'un tableau
    Par Biosox dans le forum C++
    Réponses: 1
    Dernier message: 09/11/2007, 10h41

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