2015-07-10 82 views
8

有沒有辦法獲得在Matlab中運行的本地函數的名稱?有沒有辦法獲得在Matlab中運行的本地函數的名稱?

注意:mfilename返回.m文件的名稱,而不是本地函數的名稱。

+2

我想知道您爲什麼需要此功能? – Bernhard

+0

「正在運行」什麼時候?執行期間?調試?上次運行功能? –

+0

@Mendo:這是在執行期間運行,也用於調試目的。 – Argyll

回答

3

dbstack返回一個結構與全功能調用堆棧。要獲得頂級功能的信息,請使用:

S=dbstack 
fname=S(1).name 
1

Matlab Central website上有一個頁面可以回答你的問題。以下是他們推薦使用的代碼:

[ST,I] = dbstack; 
__PRETTY_FUNCTION__ = ST.name; 

__PRETTY_FUNCTION應該包含正在執行的本地函數的名稱。

+0

...除了'__PRETTY_FUNCTION__'不是有效的MATLAB標識符,並且'ST'是一個數組。 OP需要的是'PRETTY_FUNCTION = ST(1).name'。 – Edric

+2

@Edic:'ST.name'是逗號分隔的列表,'x = ST.name'指定第一個元素。應該在這裏使用索引來使人類的代碼可讀,但這不是必需的。 – Daniel

+0

我同意這不是必要的,但它肯定是可取的。 – Edric

相關問題