在Matlab中打印变量名

Mad*_*ddy 14 matlab naming-conventions string-formatting

我在Matlab中有一个函数,里面有一些变量.我需要打印出variable_names(如果是异常等).我知道inputname函数,但它只适用于input_arguments.

mat = [ 1 2 ; 3 4 ] ;

% disp(['Error in var: ' ??(a)])
% desired ouput: Error in var: mat     (and NOT 1 2 ; 3 4!)
Run Code Online (Sandbox Code Playgroud)

谢谢!

Gre*_*ret 17

varname=@(x) inputname(1);
disp(['Error in var: ' varname(mat)])
Run Code Online (Sandbox Code Playgroud)


she*_*mer 14

Matlab本质上不允许你这样做.但是,您可以编写辅助函数来减轻创建输出的痛苦:

function disp_msg_var(msg, v)
  disp([msg inputname(2)]);
end
Run Code Online (Sandbox Code Playgroud)

在你的情况下,你可以这样称呼:

disp_msg_var('Error in: ', a);
Run Code Online (Sandbox Code Playgroud)

您可以在Mathworks论坛上阅读有关该主题的更多讨论

此外,要列出所有具有值的当前变量,您可以使用该who函数,但这不是您提出的问题.


Amr*_*mro 6

我正在为混音添加另一种解决方案(单线):

function myFunction()
    mat = [1 2; 3 4];
    disp(['Error in var: ' feval(@(x)inputname(1),mat)])
end
Run Code Online (Sandbox Code Playgroud)

哪个输出:

Error in var: mat
Run Code Online (Sandbox Code Playgroud)