Когда это необходимо, чтобы создать Систему 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);