Czy istnieje sposób na uzyskanie nazwy funkcji lokalnej uruchamianej w programie Matlab?Czy istnieje sposób na uzyskanie nazwy funkcji lokalnej uruchamianej w programie Matlab?
Uwaga: mfilename
zwraca nazwę pliku .m, a nie nazwę funkcji lokalnej.
Czy istnieje sposób na uzyskanie nazwy funkcji lokalnej uruchamianej w programie Matlab?Czy istnieje sposób na uzyskanie nazwy funkcji lokalnej uruchamianej w programie Matlab?
Uwaga: mfilename
zwraca nazwę pliku .m, a nie nazwę funkcji lokalnej.
dbstack
zwraca struct z pełnym stosem wywołań funkcji. Aby uzyskać informacje na temat funkcji najwyższego poziomu, należy użyć:
S=dbstack
fname=S(1).name
Na stronie Matlab Central website znajduje się strona, na której pojawia się odpowiedź na Twoje pytanie. Oto kod one zalecamy skorzystanie:
[ST,I] = dbstack;
__PRETTY_FUNCTION__ = ST.name;
__PRETTY_FUNCTION
powinno zawierać nazwę lokalnej funkcji, która jest wykonującego.
... z tym że '__PRETTY_FUNCTION__' nie jest poprawnym identyfikatorem MATLAB, a' ST' jest tablicą. To, czego potrzebuje PO, to 'PRETTY_FUNCTION = ST (1) .name'. – Edric
@Edric: 'ST.name' jest listą rozdzielaną przecinkami,' x = ST.name' przypisuje pierwszy element. Należy użyć indeksowania tutaj, aby kod człowieka był czytelny, ale nie jest to konieczne. – Daniel
Zgadzam się, że to nie jest konieczne, ale na pewno jest lepsze. – Edric
Zastanawiam się, dlaczego tego potrzebujesz? – Bernhard
"który jest uruchamiany" kiedy? Podczas wykonywania? Debugowanie? Ostatnia funkcja? –
@Mendo: To jest uruchamiane podczas wykonywania, a także do celów debugowania .. – Argyll