inputname

Имя переменного входного параметра функции

Синтаксис

Описание

пример

s = inputname(argNumber) возвращает имя переменной рабочей области, s, соответствующий номеру аргумента argNumber.

Вы не можете вызвать inputname из MATLAB® командную строку или в скрипте, вызываемом из командной строки.

Примеры

свернуть все

Создайте следующую функцию в файле, getname.m, в текущей рабочей папке.

function getname(a,b)
s = inputname(1);
disp(['First calling variable is ''' s '''.'])
end

Вызовите функцию в командной строке, используя переменные x и y.

x = 5;
y = 3;
getname(x,y)
First calling variable is 'x'.

Вызовите функцию, используя значения вместо переменных. The inputname функция возвращает пустое char массив, поскольку его вход не имеет имени.

getname(5,3)
First calling variable is ''.

Создайте следующую функцию в файле, getname2.m, в текущей рабочей папке.

function getname2(a,b,c)
for m = 1:nargin
    disp(['Calling variable ' num2str(m) ' is ''' inputname(m) '''.'])
end

Вызовите функцию в командной строке.

x = {'hello','goodbye'};
y = struct('a',42,'b',78);
z = rand(4);

getname2(x,y,z)
Calling variable 1 is 'x'.
Calling variable 2 is 'y'.
Calling variable 3 is 'z'.

Вызовите функцию с помощью поля y. Поскольку входной параметр содержит индексацию точек, inputname функция возвращает пустое char массив для второго имени переменной и всех последующих имен переменных.

getname2(x,y.a,z)
Calling variable 1 is 'x'.
Calling variable 2 is ''.
Calling variable 3 is ''.

Вызовите функцию, используя вторую камеру x. Поскольку входной параметр содержит индексацию камер, inputname функция возвращает пустое char массив для первого имени переменной и всех последующих имен переменных.

getname2(x{2},y,z)
Calling variable 1 is ''.
Calling variable 2 is ''.
Calling variable 3 is ''.

Входные параметры

свернуть все

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Имя переменной рабочей области, возвращенное как вектор символов. Если входной параметр не имеет имени, inputname функция возвращает пустой символьный массив (''). Для примера входного параметра не имеет имени, если это число, выражение или индексирующее выражение вместо переменной.

Если входной параметр к функции, которая вызывает inputname содержит камеру или точек, inputname возвращает пустой символьный массив для этой переменной и последующих переменных. Извлечение элементов из массива ячеек или поля из структуры приводит к разделенному списками , разделенными запятыми. Разделенный списками , разделенными запятыми заставляет расположение любого последующего входа быть динамическим. Поэтому, inputname возвращает '' для аргумента, который произвел список и следующие аргументы.

Совет

  • inputname является удобным способом передачи имени входной переменной в функцию. Например, функция проверяет типы данных входов и, если она находит неправильный тип, отображает имя переменной из вашей рабочей области.

  • Избегайте использования inputname в критическом пути кода или получить имена переменных, которые будут использоваться с такими командами, как eval, evalin, и assignin. Это использование inputname может привести к тому, что код будет трудно поддерживать.

  • inputname возвращает ошибку, если она вызывается внутри перегруженного subsref, subsasgn, subsindex, numArgumentsFromSubscript, numel, или набор свойств или метод get.

  • Если функция, которая вызывает inputname не вызывается из файла кода MATLAB, inputname идет по стеку, пока он не находит вызов из кода MATLAB и не возвращает имена, которые он находит там. Для примера это поведение происходит, если inputname вызывается из встроенной функции или MEX-функции.

    Примите во внимание следующий код, в котором встроенный arrayfun вызовы функций inputname через указатель на функцию.

    fn=@(x) inputname(x);
    a=1:4;
    arrayfun(fn,a,'uniformoutput',false)
    ans = 
    
        'fn'    'a'    ''    ''

    inputname функция проходит по стеку до тех пор, пока не найдет вызов из кода MATLAB. В этом случае код MATLAB является базовым рабочим пространством, и inputname возвращает имена переменных из базового рабочего пространства

См. также

| |

Представлено до R2006a