Если требуется создать свойство System object™ с ограниченным набором допустимых значений, можно использовать перечисления или проверку свойств.
Для объекта System, используемого в системном блоке MATLAB в 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
Чтобы использовать перечисляемые данные в объекте System, следует обратиться к перечислениям как к свойствам в определении класса System и определить перечисляемый класс в отдельном файле определения класса.
Для создания перечисляемого свойства необходимо:
Свойство объекта System имеет класс перечисления.
Связанное определение класса перечисления, определяющее все возможные значения свойства.
В этом примере определяется свойство перечисления цветов для объекта System. Определение класса перечисления ColorValues является:
classdef ColorValues < int32 enumeration blue (0) red (1) green (2) end end
ColorValues класс наследует от int32 для совместимости генерации кода. Значения перечисления должны быть допустимыми идентификаторами MATLAB.В объекте System, Color свойство определяется как ColorValues объект с blue по умолчанию. (1,1) определяет Color свойство как скаляр:
properties
Color (1, 1) ColorValues = ColorValues.blue
end
В этом примере показано определение класса Whiteboard Системные object™, два типа свойств конечного списка и способ использования объекта. Каждый раз при запуске объекта белой доски он рисует линию на белой доске.
Определение Whiteboard Системный объект
type Whiteboard.mclassdef 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
Создайте объект System.
greenInk = Whiteboard; blueInk = Whiteboard;
Измените цвет и задайте стиль синей линии.
greenInk.Color = "green"; blueInk.Color = "blue"; blueInk.Style = "dot";
Нарисуйте несколько линий.
for i=1:3 greenInk(); blueInk(); end

Очистить белую доску
release(greenInk); release(blueInk);
