在Matlab中打印变量名

时间:2011-07-13 15:52:29

标签: matlab string-formatting naming-conventions

我在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!)

谢谢!

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