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 :

Variable d'une fonction a une autre


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Par défaut Variable d'une fonction a une autre
    Bonjour, je suis nouveau! tant sur le forum que sur l'utilisation de Matlab, il faut bien commencer un jour..
    Mon probleme est le suivant : j'ai un popupmenu avec 3 choix de patient, la valeur retournee est celle associee a popVal quil mest possible de recuperer dans le workspace grace a la ligne assignin('base','popVal',popVal);. Cette valeur popVal doit me choisir le fichier excel du patient 1,2 ou 3 mais cela ne fonctionne pas. Le but pour moi est juste de voir si mes fichiers sont lus, donc voir dans le workspace num2, txt2 et raw2 . Je precise que ma partie calcul marche tres bien dans un autre programme.

    l'erreur est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ??? Attempted to access popVal(1,1); index out of bounds because size(popVal)=[0,0].
     
    Error in ==> patient11mai>patient11mai_OpeningFcn at 23
    popVal2=popVal(1,1);
     
    Error in ==> gui_mainfcn at 221
        feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
     
    Error in ==> patient11mai at 17
        gui_mainfcn(gui_State, varargin{:});
    je suppose quil execute function patient11mai_OpeningFcn(hObject,handles, varargin) en 1er, d'ou size(popVal)=[0,0]...et cest la mon probleme..j'ai essaye d'utiliser popVal comme variable globale, javais aussi utilise les handles mais jai du mal encore.


    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    function varargout = patient11mai(varargin)
     
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @patient11mai_OpeningFcn, ...
                       'gui_OutputFcn',  @patient11mai_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
     
    % --- Executes just before patient11mai is made visible.
    function patient11mai_OpeningFcn(hObject,handles, varargin)
    global popVal
    popVal2=popVal(1,1);
    [num, txt, raw]=xlsread(strcat('C:\...........\Trial',32,num2str(popVal2),'.xls'));
    [num2, txt2, raw2]=xlsread(strcat('C:\...........\Trial',32,num2str(popVal2),'.xls'),2);
     
    %partie calcul
     
    numcol_ex=9; numcol_wx=3;
        for l=1:3   
            e=num2(:,numcol_wx);
            w=num2(:,numcol_ex);
            vect(:,l)=e-w;
            numcol_wx=numcol_wx+1;
            numcol_ex=numcol_ex+1;
            l=l+1;
    	end
     
    %Vector WM3
     
    numcol_mx=9; numcol_wx=15;
        for l=4:6   
            m=num2(:,numcol_wx);
            w=num2(:,numcol_mx);
            vect(:,l)=m-w;
            numcol_wx=numcol_wx+1;
            numcol_mx=numcol_mx+1;
            l=l+1;
    	end
     
    %Angle between M3-Wrist JC-Elbow JC : 
    n=length(num2);
    for i=1:n
        numcol_vwe=1; numcol_vwm=4;
        vect(i,7)=vect(i,numcol_vwe)*vect(i,numcol_vwm)+vect(i,numcol_vwe+1)*vect(i,numcol_vwm+1)+vect(i,numcol_vwe+2)*vect(i,numcol_vwm+2);
        vect(i,8)=sqrt(vect(i,numcol_vwe)*vect(i,numcol_vwe)+vect(i,numcol_vwe+1)*vect(i,numcol_vwe+1)+vect(i,numcol_vwe+2)*vect(i,numcol_vwe+2));
        vect(i,9)=sqrt(vect(i,numcol_vwm)*vect(i,numcol_vwm)+vect(i,numcol_vwm+1)*vect(i,numcol_vwm+1)+vect(i,numcol_vwm+2)*vect(i,numcol_vwm+2));
        vect(i,10)=(acos(vect(i,7)/(vect(i,8)*vect(i,9))))*(360/6.28);
        vect(i,11)=num2(i,2);
        i=i+1;
    end
     
    handles.output = hObject;
    guidata(hObject, handles);
     
    % --- Outputs from this function are returned to the command line.
    function varargout = patient11mai_OutputFcn(hObject, eventdata, handles) 
    varargout{1} = handles.output;
     
    % --- Executes during object creation, after setting all properties.
    function popupPatient_CreateFcn(hObject, eventdata, handles)
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
     
    % --- Executes on selection change in popupPatient.
    function popupPatient_Callback(hObject, eventdata, handles)
     
    contents=cellstr(get(hObject,'String'));
    popPatient=contents{get(hObject,'Value')};
    if (strcmp(popPatient,'Patient 1'))
        popVal=1;
     
    elseif (strcmp(popPatient,'Patient 2'))
        popVal=2;
     
    elseif (strcmp(popPatient,'Patient 3'))
        popVal=3;
    end
    % creation dune base avec la valeur de popVal 
    %(soit 1, 2 ou 3 selon la selection du popup)
    assignin('base','popVal',popVal);
    Ce qui ne va pas est probablement la partie :
    global popVal
    popVal2=popVal(1,1);

    Avez vous des conseils a me donner pour avancer? je rame merci de votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour et bienvenue sur le forum

    Quel est le contenu de la variable popVal ? (Ou plus exactement, que penses-tu que cette variable contienne?)
    Si tu ne sais pas comment faire, place un point d'arrêt au début de la fonction function patient11mai_OpeningFcn(hObject,handles, varargin) et test le contenu de ta variable dans ta command windows.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Par défaut
    En testant function popupPatient_Callback(hObject, eventdata, handles) separement, je peux voir mes valeurs de popVal, exemple quand le popmenu selectionne le patient 2:

    Nom : unnamed.jpg
Affichages : 152
Taille : 9,7 Ko

    En mettant un point d'arret au debut de la fonction patient11mai_OpeningFcn(hObject,handles, varargin), mon popVal est un tableau de cellule vide, car il execute cette fonction avant celle du popupPatient_Callback, j'essai donc de recuperer la valeur de popVal en debut de function patient11mai_OpeningFcn mais je dois mal m'y prendre avec ma variable global.. qui d'ailleurs j'ai vu, n'est pas recommander. Comment m'y prendre?

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    J'ai du mal à comprendre. Peux tu nous montrer le morceau de code relatif à l'initialisation/le calcul de popVal?

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Réponses: 2
    Dernier message: 17/04/2007, 17h14
  3. Réponses: 8
    Dernier message: 10/01/2007, 21h10
  4. Réponses: 3
    Dernier message: 16/01/2006, 16h02
  5. Réponses: 4
    Dernier message: 17/03/2004, 17h24

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