call function name in the same function

2 ビュー (過去 30 日間)
feynman feynman
feynman feynman 2024 年 4 月 20 日
コメント済み: feynman feynman 2024 年 4 月 21 日
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 件のコメント
feynman feynman
feynman feynman 2024 年 4 月 21 日
hi all, thank you for your kindness but bruno's answer is what I want!
Bruno Luong
Bruno Luong 2024 年 4 月 21 日
The "end" added by code formatting changes completely the question; whic is not doesn(t make a sense to me.

サインインしてコメントする。

採用された回答

Bruno Luong
Bruno Luong 2024 年 4 月 20 日
編集済み: Bruno Luong 2024 年 4 月 20 日
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 件のコメント
Bruno Luong
Bruno Luong 2024 年 4 月 21 日
編集済み: Bruno Luong 2024 年 4 月 21 日
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.
feynman feynman
feynman feynman 2024 年 4 月 21 日
wow you are such a genius, thank you a million also to the other kind friends who helped!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by