call function name in the same function
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
feynman feynman
le 20 Avr 2024
Commenté : feynman feynman
le 21 Avr 2024
In a function, I need to run this function somewhere within the function like
function fun
i=1
if i>1
function name
end
end
"function name" is just to call "fun", but I need to create a few copy m files of the above scripts with respective changes in the code so that the function name is actually "copy fun" or "copy 2 fun" etc and I wish "function name" to call "copy fun" or "copy 2 fun" etc.
6 commentaires
Bruno Luong
le 21 Avr 2024
The "end" added by code formatting changes completely the question; whic is not doesn(t make a sense to me.
Réponse acceptée
Bruno Luong
le 20 Avr 2024
Modifié(e) : Bruno Luong
le 20 Avr 2024
This returns the name of the function being executed
s = dbstack;
funname = s(1).name;
In recent MATLAB versions you can do in single line
funname = dbstack().name; % assign the first element of the comma list
Then you can call your recursion by
thisfun = str2func(funname);
thisfun(...); % or feval(thisfun, ...) or feval(funname, ...)
9 commentaires
Bruno Luong
le 21 Avr 2024
Modifié(e) : Bruno Luong
le 21 Avr 2024
In my first version there is NO str2fun
functionName=dbstack().name;
I later concateate only two char arrays.
You also take a freedom to change thisfun to functionname then confuse yourself with what class/type they are.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Startup and Shutdown dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!