Параметры обеспечивают способ программного хранения, доступа и изменения данных для текущего сеанса или между несколькими сеансами. По умолчанию MATLAB® и другие MathWorks® продукты включают настройки, которые могут использоваться для доступа и изменения внешнего вида и поведения инструментов. Например, MATLAB включает настройки, которые позволяют вам программно изменить шрифт для определенных инструментов кода.
Можно создать пользовательские параметры для хранения и доступа к собственным данным между сеансами. Например, можно создать настройки для хранения расположения важной папки в вашей системе или для отслеживания количества раз, когда файл запускается.
Настройки организованы в группы. Параметры группировки облегчают поиск определенного параметра, а также обеспечивают дополнительный контекст в отношении того, для чего используется параметр. Для образца, matlab.editor
группа параметров содержит все параметры редактора MATLAB. Группы настроек организованы в большие группы, образующие дерево. В верхней части дерева находится групповой объект корневых настроек.
Чтобы добавить новую группу параметров, используйте addGroup
функция. Например, создайте группу настроек mysettings
под корневыми настройками группового объекта.
s = settings;
addGroup(s,'mysettings');
s
s = SettingsGroup with properties: matlab: [1×1 SettingsGroup] mysettings: [1×1 SettingsGroup] mldrivetripwireaccess: [1×1 SettingsGroup]
Чтобы создать скрытую группу настроек, которая не отображается в иерархии настроек, например, когда вы отображаете родительскую группу настроек, задайте 'Hidden'
Пара "имя-значение". Скрытые группы настроек не появляются в родительской группе настроек, но к ним можно получить доступ программно. Например, создайте группу настроек myhiddensettings
внутри mysettings
. Заметьте, что myhiddensettings
не отображается в mysettings
.
addGroup(s.mysettings,'myhiddensettings','Hidden',true); s.mysettings
ans = SettingsGroup 'mysettings' with no properties.
Чтобы удалить группу настроек, используйте removeGroup
функция. Для примера удалите myhiddensettings
.
removeGroup(s,'myhiddensettings');
Чтобы добавить новую настройку, используйте addSetting
функция. Например, добавьте настройку MyWorkAddress
на mysettings
группа параметров.
s = settings; addGroup(s,'mysettings'); addSetting(s.mysettings,'MyWorkAddress');
Примечание
Добавление параметров непосредственно в группу корневых параметров не поддерживается.
После того, как вы создали настройку, вы можете задать ей значение. Параметр имеет несколько различных типов значений, которые позволяют вам задать значение только для текущего сеанса или для нескольких сеансов для отдельного пользователя. Дополнительные сведения об этих типах значений см. в разделах Доступ и Изменение параметров.
Чтобы задать значение параметра, задайте его личное или временное значение. Вы не можете задать заводское значение для пользовательского параметра. Для примера укажите личное значение для MyWorkAddress
.
s.mysettings.MyWorkAddress.PersonalValue = '3 Apple Hill Drive';
Затем можно использовать значение настройки программно в коде.
fprintf('I work at %s.\n', s.mysettings.MyWorkAddress.ActiveValue)
I work at 3 Apple Hill Drive.
Чтобы добавить скрытую настройку, используйте 'Hidden'
аргумент пары "имя-значение". Скрытые настройки не отображаются в иерархии настроек, например, когда вы отображаете родительскую группу настроек, но доступны программно. Например, добавьте скрытую настройку MyHiddenWorkAddress
на mysettings
настройки группируются и устанавливают его личное значение.
addSetting(s.mysettings,'MyHiddenWorkAddress','Hidden',true, ... 'PersonalValue','1 Lakeside Campus Drive');
Вы также можете добавить настройки только для чтения, используя 'ReadOnly'
аргумент пары "имя-значение". Если вы создаете параметр только для чтения, вы не можете изменить его временное или личное значение. Поэтому необходимо указать личное значение настройки при ее добавлении. Для примера добавьте параметр только для чтения MyBirthDate
на mysettings
группа параметров с заданным личным значением.
mydate = datetime('6/1/1990','InputFormat','MM/dd/uuuu'); addSetting(s.mysettings,'MyBirthDate','ReadOnly',true,'PersonalValue',mydate);
Можно наложить определенные ограничения на значения параметров, задав функцию валидации для параметра или группы. Функция валидации принимает потенциальное значение параметра в качестве аргумента и выдает ошибку, если значение не соответствует определенному требованию.
MATLAB задает несколько полезных функций валидации, которые могут использоваться для проверки настроек. В этой таблице перечислены эти функции, их значения и функции MATLAB, которые они используют.
Имя | Значение | Функции, вызываемые на входах |
---|---|---|
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
|
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
|
Чтобы задать функцию валидации при создании настройки, используйте 'ValidationFcn'
Аргумент пары "имя-значение" и задайте указатель на функцию. Например, добавьте настройку MyLogicalSetting
на mysettings
settings group и указать, что его значение должно быть логическим скаляром.
s = settings; addGroup(s,'mysettings'); addSetting(s.mysettings,'MyLogicalSetting','ValidationFcn',@matlab.settings.mustBeLogicalScalar);
Попробуйте задать значение MyLogicalSetting
к нелогическому значению. MATLAB возвращает ошибку.
s.mysettings.MyLogicalSetting.PersonalValue = 10;
Error setting 'MyLogicalSetting' in group 'mysettings': Value must be logical or convertible to logical.
Можно также задать функцию валидации для всей группы параметров. Если задано, функция валидации используется для проверки значений всех настроек в группе, для которых не определены собственные функции валидации. Например, создайте группу настроек mylogicalsettings
и задайте функцию валидации matlab.settings.mustBeLogicalScalar
.
addGroup(s.mysettings,'mylogicalsettings','ValidationFcn',@matlab.settings.mustBeLogicalScalar);
Создайте настройку MyLogicalSetting
в рамках mylogicalsettings
и попробуйте задать нелогическое значение параметра. MATLAB возвращает ошибку.
addSetting(s.mysettings.mylogicalsettings,'MyLogicalSetting');
s.mysettings.mylogicalsettings.PersonalValue = 10;
Error setting 'MyLogicalSetting' in group 'mysettings': Value must be logical or convertible to logical.
Можно также создать собственные функции валидации. Они могут проверять свойства, которые не охвачены функциями валидации MATLAB. Функции валидации являются обычными функциями MATLAB, которые предназначены для проверки значений параметров. Они должны:
Примите значение потенциальной настройки как входной параметр.
Не имеют выходных аргументов.
Выдать ошибку в случае сбоя валидации.
Поместите функции валидации в путь MATLAB, чтобы сделать их доступными.
Например, создайте функцию, чтобы проверить, является ли значение параметра числовым.
function numericValidationFcn(x) errorMsg = 'Value must be numeric.'; assert(isnumeric(x),errorMsg); end
Добавьте функцию валидации к новому параметру.
s = settings; addGroup(s,'mysettings'); addSetting(s.mysettings,'MyNumericSetting','ValidationFcn',@numericValidationFcn);
Установите значение MyNumericSetting
в нечисловое значение. MATLAB возвращает ошибку.
s.mysettings.MyNumericSetting.PersonalValue = 'Hello';
Unable to validate settings data. Error using myvalidationFcn (line 3) Value must be numeric.
Можно также создать пользовательские функции валидации, чтобы использовать функции валидации MATLAB, которые требуют нескольких входов, таких как mustBeGreaterThan
, mustBeLessThan
, mustBeGreaterThanOrEqual
, mustBeLessThanOrEqual
, и mustBeMember
. Для примера эта функция проверяет, что значение параметра является одним из четырех цветов.
function colorValidationFcn(val) mustBeMember(val, ['Black' 'Blue' 'Yellow' 'Green']); end
Для получения дополнительной информации о добавлении функции валидации в настройку или группу параметров, см. addSetting
и addGroup
.
addGroup
| addSetting
| hasGroup
| hasSetting
| removeGroup
| removeSetting
| settings