Matlab获取包含变量名的字符串

NWS*_*NWS 24 matlab

在Matlab中,如何获得包含"GRUMPY"以下声明的String :

  GRUMPY = 500;
Run Code Online (Sandbox Code Playgroud)

这通常在其他编程语言中称为反射,但我在Matlab中找不到它的一个例子.

Pat*_*ick 40

MATLAB没有为此提供内置功能,但是这里使用一种解决方法

从本质上讲,您必须创建自己的功能才能执行此操作.利用Matlab的功能将INPUT ARGUMENT的变量名称添加到函数中.

function out = varname(var)
  out = inputname(1);
end
Run Code Online (Sandbox Code Playgroud)

然后

GRUMPY = 500;
name = varname(GRUMPY)
Run Code Online (Sandbox Code Playgroud)

会给你你想要的.

  • 真好!我之前没有听说过`inputname`.我会在这种情况下使用匿名函数来做到这一点:`varname = @(x)inputname(1)` (6认同)
  • 如果`var`不是对象名,那么这将失败.例如,`varname(foo.bar)`将返回一个空字符串. (3认同)