我在Matlab中有一个函数,它有一些变量。我需要打印出variable_names(如果发生异常等)。我知道inputname
函数,但它仅适用于input_arguments。在Matlab中打印变量名称
mat = [ 1 2 ; 3 4 ] ;
% disp(['Error in var: ' ??(a)])
% desired ouput: Error in var: mat (and NOT 1 2 ; 3 4!)
谢谢!
我在Matlab中有一个函数,它有一些变量。我需要打印出variable_names(如果发生异常等)。我知道inputname
函数,但它仅适用于input_arguments。在Matlab中打印变量名称
mat = [ 1 2 ; 3 4 ] ;
% disp(['Error in var: ' ??(a)])
% desired ouput: Error in var: mat (and NOT 1 2 ; 3 4!)
谢谢!
Matlab的基本上是不会让你这样做。然而,你可以写一个辅助函数来减轻你的痛苦在创造这样的输出:
function disp_msg_var(msg, v)
disp([msg inputname(2)]);
end
,你可以调用像这样在您的情况:
disp_msg_var('Error in: ', a);
你可以阅读的话题更多的讨论在Mathworks forum
此外,要列出所有具有值的当前变量,您可以使用who
函数,但这不是您提出的问题。
如果要打印出函数中存在的变量,可以使用函数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
我加入另一种解决方案混合(一个班轮):
function myFunction()
mat = [1 2; 3 4];
disp(['Error in var: ' feval(@(x)inputname(1),mat)])
end
,输出:
Error in var: mat
什么是'(一)'应该是什么? – gnovice
@gnovice:我认为他的意思是说'mat'而不是'a' – Amro
只是出于好奇,这个练习的用例是什么?我的意思是变量名实际上在这种状态下是已知的。什么可以防止键入'disp('var in:'错误')'?不要把它当作批评,而是作为一个真正感兴趣的问题。 – patrik