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 возвращает ошибку, если она называется в перегруженном subsrefsubsasgnsubsindexnumArgumentsFromSubscriptnumel, или набор свойств или получает метод.

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