2015-07-10 4 views
8

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.

+2

Zastanawiam się, dlaczego tego potrzebujesz? – Bernhard

+0

"który jest uruchamiany" kiedy? Podczas wykonywania? Debugowanie? Ostatnia funkcja? –

+0

@Mendo: To jest uruchamiane podczas wykonywania, a także do celów debugowania .. – Argyll

Odpowiedz

3

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 
1

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.

+0

... 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

+2

@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

+0

Zgadzam się, że to nie jest konieczne, ale na pewno jest lepsze. – Edric

Powiązane problemy