Напечатать имя переменной в Matlab
У меня есть функция в Matlab, в которой есть некоторые переменные. Мне нужно распечатать переменные_имя (в случае исключения и т.д.). Я знаю функцию 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!)
Спасибо!
Ответы
Ответ 1
Matlab по существу не позволяет вам это делать. Однако вы можете написать вспомогательную функцию, чтобы облегчить вашу боль при создании вывода следующим образом:
function disp_msg_var(msg, v)
disp([msg inputname(2)]);
end
который вы могли бы назвать так в своем случае:
disp_msg_var('Error in: ', a);
Подробнее о теме на форуме Mathworks вы можете прочитать
Кроме того, чтобы перечислить все текущие переменные со значениями, вы можете использовать функцию who
, но это не проблема, которую вы представили.
Ответ 2
[email protected](x) inputname(1);
disp(['Error in var: ' varname(mat)])
Ответ 3
Я добавляю другое решение для микширования (однострочный):
function myFunction()
mat = [1 2; 3 4];
disp(['Error in var: ' feval(@(x)inputname(1),mat)])
end
Какие выходы:
Error in var: mat
Ответ 4
Если вы хотите распечатать переменные, присутствующие в функции, вы можете использовать функцию 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