Когда это необходимо, чтобы создать Систему object™ свойство с ограниченным набором приемлемых значений, можно или использовать перечисления или валидацию свойства.
Для Системного объекта, который используется в блоке MATLAB System в Simulink®, можно использовать валидация свойства или перечисления. Если вы используете перечисления, перечисления могут также вывести из Simulink.IntEnumType. Вы используете этот тип перечисления, чтобы добавить атрибуты (такие как пользовательские заголовки) к вводу или выводу блока MATLAB System. Смотрите Использование Перечислимые Данные в Моделях Simulink (Simulink).
mustBeMemberЧтобы ограничить значения свойств с валидацией свойства, вы используете mustBeMember функция валидации.
Этот пример задает Style свойство, которое может иметь значения solid, dash, или dot. Значением по умолчанию является solid и (1,1) задает свойство как скаляр.
properties
Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid";
end
Чтобы использовать перечисленные данные в Системном объекте, вы называете перечисления свойствами в вашем определении класса Системного объекта и задаете ваш перечислимый класс в отдельном файле определения класса.
Чтобы создать перечислимое свойство, вам нужно:
Набор свойств Системного объекта к классу перечисления.
Связанное определение класса перечисления, которое задает все возможные значения для свойства.
Этот пример задает цветное свойство перечисления для Системного объекта. Определение класса перечисления ColorValues :
classdef ColorValues < int32 enumeration blue (0) red (1) green (2) end end
ColorValues класс наследовался int32 для совместимости генерации кода. Перечислимые величины должны быть допустимыми идентификаторами MATLAB.В Системном объекте, Color свойство задано как ColorValues объект с blue как значение по умолчанию. (1,1) задает Color свойство как скаляр:
properties
Color (1, 1) ColorValues = ColorValues.blue
end
Этот пример показывает определение класса Whiteboard Системный объект, два типа конечных свойств списка, и как использовать объект. Каждый раз, когда вы запускаете объект электронной доски, он чертит линию на электронной доске.
Определение Whiteboard Системный объект
type('Whiteboard.m')classdef Whiteboard < matlab.System
% Whiteboard Draw lines on a figure window
%
properties(Nontunable)
Color (1, 1) ColorValues = ColorValues.blue
Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid";
end
methods (Access = protected)
function stepImpl(obj)
h = Whiteboard.getWhiteboard();
switch obj.Style
case "solid"
linestyle = "-";
case "dash"
linestyle = "--";
case "dot"
linestyle = ":";
end
plot(h, randn([2,1]), randn([2,1]), ...
"Color",string(obj.Color), "LineStyle",linestyle);
end
function releaseImpl(~)
cla(Whiteboard.getWhiteboard());
hold on
end
end
methods (Static)
function a = getWhiteboard()
h = findobj('tag','whiteboard');
if isempty(h)
h = figure('tag','whiteboard');
hold on
end
a = gca;
end
end
end
Создайте Системный объект.
greenInk = Whiteboard; blueInk = Whiteboard;
Измените цвет и установите синий стиль линии.
greenInk.Color = "green"; blueInk.Color = "blue"; blueInk.Style = "dot";
Проведите несколько линий.
for i=1:3 greenInk(); blueInk(); end

Очистите электронную доску
release(greenInk); release(blueInk);
