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
函数,但这不是您提出的问题.
我正在为混音添加另一种解决方案(单线):
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)