Когда необходимо создать свойство 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.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
Создайте Системный объект.
greenInk = Whiteboard; blueInk = Whiteboard;
Измените цвет и установите стиль синей линии.
greenInk.Color = "green"; blueInk.Color = "blue"; blueInk.Style = "dot";
Нарисуйте несколько линий.
for i=1:3 greenInk(); blueInk(); end

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