Когда необходимо создать свойство System object™ с ограниченным набором допустимых значений, можно использовать перечисления или валидацию свойств.
Для Системного объекта, которая используется в блоке MATLAB System в Simulink® можно использовать перечисления или валидацию свойств. Если вы используете перечисления, перечисления также могут быть выведены из Simulink.IntEnumType
. Этот тип перечисления используется для добавления атрибутов (таких как пользовательские заголовки) к входу или выходу системного блока MATLAB. См. Использование перечисленных данных в моделях Simulink (Simulink).
mustBeMember
Чтобы ограничить значения свойств с валидацией свойств, вы используете mustBeMember
функции валидации.
Этот пример задает Style
свойство, которое может иметь значения solid
, dash
, или dot
. Значение по умолчанию solid
и (1,1)
задает свойство как скаляр.
properties Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end
matlab.system.mustBeMember
вместо этого.properties Style (1,:) char {matlab.system.mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end
Чтобы использовать перечисленные данные в системном объекте, вы ссылаетесь на перечисления как свойства в определении класса системного объекта и задаете свой перечисленный класс в отдельном файле определения класса.
Чтобы создать перечисленное свойство, вам нужно:
A Системного объекта набора свойств к классу перечисления.
Связанное определение класса перечисления, которое задает все возможные значения для свойства.
Этот пример задает свойство перечисления цветов для системного объекта. Определение класса перечисления ColorValues
является:
classdef ColorValues < int32 enumeration blue (0) red (1) green (2) end end
ColorValues
класс наследует от int32
для совместимости генерации кода. Значения перечисления должны быть допустимыми идентификаторами MATLAB.В системном объекте Color
свойство определяется как ColorValues
объект с blue
как значение по умолчанию. The (1,1)
задает Color
свойство как скаляр:
properties
Color (1, 1) ColorValues = ColorValues.blue
end
Этот пример показывает определение класса Whiteboard
Системные object™, два типа свойств конечного списка и как использовать объект. Каждый раз, когда вы запускаете объект доски, он рисует линию на доске.
Определение 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);