Salut,
j'ai un code du type:
Dans un autre fichier m
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 function myfun1 %%fonction quelconque ... var1=12345; ... %exécution de la fonction imbriquée mysubfun2 mysubfun2; ... %code des fonctions imbriquées de myfun1. il y a deux fonction imbriquées function mysubfun 1 disp('et le résultat est:') 2*var1 end function mysubfun2 myfun2(...,@mysubfun1,...); end end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function myfun2 %grâce au pointeur vers mysubfun2 entré en paramètre lors de l'appel de myfun2 % ce pointeur est connu de la fonction myfun2 feval(@mysubfun1) end
Mon problème est le suivant:
Lors de l'exécution du programme, matlab renvoit une 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 ??? Undefined function or variable "var1". Error in ==> myfun1>mysubfun1 at 55 var1 Error in ==> myfun2 at 135 feval(pointerToMysubfun1); Error in ==> myfun1>mysubfun2 at 98 myfun2(...,@mysubfun1,...); Error in ==> myfun1 at 42 mysubfun2
C'est à dire que la fonction imbriquée mysubfun1 ne "voit" plus la variable var1 qui est pourtant déclarée dans la fonction mère myfun1.
1) est-ce que cela est normal?
2 est-ce que cela est du au fait que la fonction imbriquée mysubfun1 est appelée de l'extérieur de myfun1 (par myfun2) et donc les variables internes de myfun1 ne sont plus vues par la fonction imbriquée de myfun1 : mysubfun1?
3) comment résoudre le problème, à savoir que la variable var1 soit "vue" par mysubfun1 et déclarée dans la fonction mère myfun1?
merci d'avance pour vos réponses (surtout la question 3)
Partager