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 :

Problème de récupération de paramètres dans une fonction


Sujet :

MATLAB

  1. #1
    Membre habitué Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Points : 125
    Points
    125
    Par défaut Problème de récupération de paramètres dans une fonction
    Bonjour à tous,
    Le problème est que j'ai une interface depuis laquelle je saisi des données, et quand j'appuie sur "OK", je les envoie vers une fonction... or je ne récupère rien dans la fonction (Variables vides) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ??? Reference to a cleared variable choix1.
    Ceci est le bout de code que j'ai rajouté dans le code générer par l'interface:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function OK_Callback(hObject, eventdata, handles)
    % hObject    handle to OK (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    choix1=get(handles.choix1,'value');          %=1,2ou3 car combobox
    choix2=get(handles.choix2,'value');          %=1,2ou3 car combobox
    nbr=str2double(get(handles.nbr,'String')); %espace de saisie d'un nombre
     
    [tmps]=calcul(choix1,choix1,nbr); %tmps:retourne le temps de calcul
    code de la fonction appelé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function [tmps]=calcul(choix1,choix1,nbr) 
    tic
    %afficher les valeurs envoyées depuis l'interface (juste pour tester)=> c'est ici que ça bloque!!!
    choix1
    choix1
    nbr
    tmps=tac;
    Une réponse utile vous a aidé ? N'oubliez pas le
    Votre problème est résolu ? N'oubliez pas le

  2. #2
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function [tmps]=calcul(choix1,choix1,nbr)
    ne doit pas être possible (tu donnes à deux arguments différents le même nom de variables ???)

  3. #3
    Membre habitué Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Points : 125
    Points
    125
    Par défaut
    Grrr, t'as vu juste, mais c'est en nettoyant mon code afin de le poster ici que j'ai comis cette erreur, mais le problème persiste encore...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function OK_Callback(hObject, eventdata, handles)
    % hObject handle to OK (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)
     
    choix1=get(handles.choix1,'value'); %=1,2ou3 car combobox
    choix2=get(handles.choix2,'value'); %=1,2ou3 car combobox
    nbr=str2double(get(handles.nbr,'String')); %espace de saisie d'un nombre
     
    [tmps]=calcul(choix1,choix2,nbr); %tmps:retourne le temps de calcul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function [tmps]=calcul(choix1,choix2,nbr) 
    tic
    %afficher les valeurs envoyées depuis l'interface (juste pour tester)=> c'est ici que ça bloque!!!
    choix1
    choix2
    nbr
    tmps=tac;
    Et merci encore
    Une réponse utile vous a aidé ? N'oubliez pas le
    Votre problème est résolu ? N'oubliez pas le

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pourrais-tu mettre le message d'erreur complet?

    Sinon je pense que tu veux plutôt utiliser:
    non?

    Bonne apm,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre habitué Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Points : 125
    Points
    125
    Par défaut
    Grrr encore, bien vu mais c'est pas ça, c'est une erreur de copiage encore...
    Et voici le message d'erreur complet:
    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
    ??? Reference to a cleared variable choix1.
     
    Error in ==> calcul at 4
    choix1
     
    Error in ==> Interface>OK_Callback at 258
    [tmps]=calcul(choix1,choix2,nbr);
     
    Error in ==> gui_mainfcn at 75
            feval(varargin{:});
     
    Error in ==> Interface at 42
        gui_mainfcn(gui_State, varargin{:});
     
    ??? Error while evaluating uicontrol Callback.
    Bien à vous
    Une réponse utile vous a aidé ? N'oubliez pas le
    Votre problème est résolu ? N'oubliez pas le

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

    Je ne suis pas sur, mais cela peut provenir du fait que ta combobox porte aussi le nom "choix1", essai plutôt de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function OK_Callback(hObject, eventdata, handles)
    % hObject handle to OK (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)
     
    ch1=get(handles.choix1,'value'); %=1,2ou3 car combobox
    ch2=get(handles.choix2,'value'); %=1,2ou3 car combobox
    nb=str2double(get(handles.nbr,'String')); %espace de saisie d'un nombre
     
    [tmps]=calcul(ch1,ch2,nb); %tmps:retourne le temps de calcul
    Sinon, cela n'a rien à voir, mais tu n'as pas besoin des crochets dans la fonction calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function tmps=calcul(choix1,choix2,nbr)

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/09/2009, 09h20
  2. problème de paramètres dans une fonction
    Par morgan54 dans le forum VBA Access
    Réponses: 5
    Dernier message: 12/05/2008, 16h53
  3. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  4. [PL/SQL] Multi paramètre dans une fonction
    Par wiLL_ dans le forum Oracle
    Réponses: 2
    Dernier message: 28/02/2006, 17h31
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

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