2015-07-10 111 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

相关问题