我在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!)
谢谢!
答案 0 :(得分:16)
varname=@(x) inputname(1);
disp(['Error in var: ' varname(mat)])
答案 1 :(得分:13)
Matlab本质上不允许你这样做。但是,您可以编写辅助函数来减轻创建输出的痛苦:
function disp_msg_var(msg, v)
disp([msg inputname(2)]);
end
你可以在你的情况下这样打电话:
disp_msg_var('Error in: ', a);
您可以在Mathworks forum
上阅读有关该主题的更多讨论此外,要列出所有具有值的当前变量,您可以使用who
函数,但这不是您提出的问题。
答案 2 :(得分:6)
我正在为混音添加另一种解决方案(单线):
function myFunction()
mat = [1 2; 3 4];
disp(['Error in var: ' feval(@(x)inputname(1),mat)])
end
哪个输出:
Error in var: mat
答案 3 :(得分:1)
如果要打印出函数中存在的变量,可以使用函数WHO。以下是使用简单函数test.m
:
function test
a = 1;
b = 2;
varNames = who();
disp(sprintf('%s ','Variables are:',varNames{:}));
c = 3;
d = 4;
varNames = who();
disp(sprintf('%s ','Variables are:',varNames{:}));
end
运行此命令将为您提供以下输出:
>> test
Variables are: a b
Variables are: a b c d varNames