exponenta event banner

addParameter

Добавить необязательный аргумент пары имя-значение во входную схему синтаксического анализатора

Описание

пример

addParameter(p,paramName,defaultVal) добавляет имя параметра необязательного аргумента пары имя-значение во входную схему синтаксического анализатора. Если входные данные функции не включают эту опциональную пару имя-значение, анализатор входных данных назначает paramName стоимость defaultVal.

В отличие от позиционных вводов, добавленных с помощью addRequired и addOptional функции, каждый параметр добавлен с addParameter соответствует двум входным аргументам: один для имени и один для значения.

пример

addParameter(p,paramName,defaultVal,validationFcn) определяет функцию проверки для входного аргумента.

addParameter(___,'PartialMatchPriority',matchPriorityValue) указывает приоритет для частичного сопоставления конфликтующих имен параметров. Входная схема синтаксического анализатора выбирает более низкие значения приоритета по сравнению с более высокими. Используйте эту опцию с любой из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Создание inputParser и добавьте пару имя-значение во входную схему.

p = inputParser;
paramName = 'myParam';
defaultVal = 0;
addParameter(p,paramName,defaultVal)

Передайте имя и значение параметра в parse и отобразить результаты.

parse(p,'myParam',100);
p.Results
ans = struct with fields:
    myParam: 100

Проверить, что значение соответствует myParam, со значением по умолчанию 1, является числовым скаляром, большим нуля.

Создайте схему входного синтаксического анализатора. Для функции проверки, @(x) создает дескриптор анонимной функции, которая принимает один ввод.

p = inputParser;
paramName = 'myParam';
defaultVal = 1;
errorMsg = 'Value must be positive, scalar, and numeric.'; 
validationFcn = @(x) assert(isnumeric(x) && isscalar(x) ...
    && (x > 0),errorMsg);
addParameter(p,paramName,defaultVal,validationFcn)

Синтаксический анализ недопустимого входного аргумента, например -1.

parse(p,'myparam',-1)
The value of 'myparam' is invalid. Value must be positive, scalar, and numeric.

Определение функции проверки с помощью validateattributes. Убедитесь, что аргумент является непустым символьным вектором.

validationFcn = @(x) validateattributes(x,{'char'},{'nonempty'});

Создание входной схемы синтаксического анализатора, включающей необязательный аргумент пары имя-значение с именем параметра myName и значение по умолчанию 'John Doe'. Проверить входной аргумент с помощью validationFcn.

p = inputParser;
paramName = 'myName';
defaultVal = 'John Doe';
addParameter(p,paramName,defaultVal,validationFcn)

Определить myName как число. Не удается выполнить синтаксический анализ.

parse(p,'myName',1138)
The value of 'myName' is invalid. Expected input to be one of these types:

char

Instead its type was double.

Разбор символьного вектора. Синтаксический анализ проходит.

parse(p,'myName','George')

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

свернуть все

Входная схема синтаксического анализатора, заданная как inputParser объект.

Имя входного параметра, заданного как вектор символа или скаляр строки.

Пример: "firstName"

Пример: 'address'

Типы данных: char | string

Значение по умолчанию для входных данных, указанное как любой тип данных. Если argName не является входом в функцию, когда parse функция анализирует входы, затем назначает argName стоимость defaultVal.

Функция для проверки аргумента, указанная как дескриптор функции.

Дескриптор функции должен быть связан с функцией, возвращающей true или false, или проходит тест, или выдает ошибку. Оба типа функций должны принимать один входной аргумент.

Пример: @(s)isstring(s)

Пример: @(x)isnumeric(x)&&isscalar(x)

Пример: @(n)validateattributes(n,{'numeric'},{'nonnegative'})

Типы данных: function_handle

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

Совет

  • Пары «имя-значение параметра» являются необязательными входами. При вызове функции пары имя-значение могут появляться в любом порядке после позиционных аргументов. Они принимают общую форму Name1,Value1,...,NameN,ValueN.

Представлен в R2013b