Подтвердить что ты не робот

Напечатать имя переменной в 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!)

Спасибо!

4b9b3361

Ответ 1

Matlab по существу не позволяет вам это делать. Однако вы можете написать вспомогательную функцию, чтобы облегчить вашу боль при создании вывода следующим образом:

function disp_msg_var(msg, v)
  disp([msg inputname(2)]);
end

который вы могли бы назвать так в своем случае:

disp_msg_var('Error in: ', a);

Подробнее о теме на форуме Mathworks вы можете прочитать

Кроме того, чтобы перечислить все текущие переменные со значениями, вы можете использовать функцию who, но это не проблема, которую вы представили.

Ответ 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