exponenta event banner

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'.

Вызовите функцию, используя значения вместо переменных. 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