Создание пользовательских настроек

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

Имя

Значение

Функции, вызываемые на входах

matlab.settings.mustBeStringScalar(A)

A должен быть строковым скаляром.

isStringScalar

matlab.settings.mustBeLogicalScalar(A)

A должен быть логическим скаляром.

islogical, isscalar

matlab.settings.mustBeNumericScalar(A)

A должен быть числовым скаляром.

isnumeric, isscalar

matlab.settings.mustBeIntegerScalar(A)

A должен быть целочисленным скаляром.

isinteger, isscalar

mustBePositive(A)

A > 0

gt, isreal, isnumeric, islogical

mustBeNonpositive(A)

A <= 0

ge, isreal, isnumeric, islogical

mustBeFinite(A)

A не имеет NaN и нет Inf элементы.

isfinite

mustBeNonNan(A)

A не имеет NaN элементы.

isnan

mustBeNonnegative(A)

A >= 0

ge, isreal, isnumeric, islogical

mustBeNegative(A)

A < 0

lt, isreal, isnumeric, islogical

mustBeNonzero(A)

A ~= 0

eq, isnumeric, islogical

mustBeNonempty(A)

A не пуст.

isempty

mustBeNonsparse(A)

A не имеет разреженных элементов.

issparse

mustBeNumeric(A)

A является числовым.

isnumeric

mustBeNumericOrLogical(A)

A является числовым или логическим.

isnumeric, islogical

mustBeReal(A)

A не имеет мнимой части.

isreal

mustBeInteger(A)

A == floor(A)

isreal, isfinite, floor, isnumeric, islogical

Чтобы задать функцию валидации при создании настройки, используйте '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.

См. также

| | | | | |

Похожие темы