inputname

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

Синтаксис

s = inputname(argNumber)

Описание

пример

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

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

Примеры

свернуть все

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

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

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

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

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

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

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

function myfun2(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);

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

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

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

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

myfun2(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, numel или наборе свойств, или получите метод.

  • Если функция, которая вызывает 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

Была ли эта тема полезной?