Когда это необходимо, чтобы создать Систему object™ свойство с ограниченным набором приемлемых значений, вы используете перечисления. Чтобы использовать перечисленные данные в Системном объекте в MATLAB® или Simulink®, вы обращаетесь к ним в вашем определении класса Системного объекта и задаете свой перечислимый класс в отдельном файле определения класса.
Перечисления могут вывести от любого целого типа, меньшего, чем, или равняться int32
. Например,
classdef Bearing < uint8 enumeration North (0) East (90) South (180) West (270) end end
Для Системного объекта, который используется в MATLAB только, смотрите Предельные Значения свойств к Конечному Списку и Перечислениям.
Для Системного объекта, который используется в блоке MATLAB System в Simulink, смотрите Использование Перечислимые Данные в Моделях Simulink (Simulink).
Чтобы создать перечислимое свойство, вам нужно:
Набор свойств Системного объекта к классу перечисления.
Связанное определение класса перечисления, которое задает все возможные значения для свойства.
Перечисления могут также вывести от Simulink.IntEnumType
. Вы используете этот тип перечисления, чтобы добавить атрибуты, такие как пользовательские заголовки, к вводу или выводу блока MATLAB System. Смотрите Использование Перечислимые Данные в Моделях Simulink (Simulink).
Этот пример задает цветное свойство перечисления для Системного объекта.
Определение класса перечисления ColorValues
:
classdef ColorValues < int32 enumeration blue (0) red (1) green (2) end end
ColorValues
наследовался int32
для совместимости генерации кода. Перечислимые величины должны быть допустимыми идентификаторами MATLAB.Свойство Системного объекта под названием Color
и наборы значение по умолчанию к blue
. (1,1)
задает размер свойства Color
:
properties
Color (1, 1) ColorValues = ColorValues.blue
end
Этот пример показывает определение класса Системного объекта Whiteboard
и как использовать объект. Каждый раз, когда вы запускаете объект электронной доски, он чертит линию на электронной доске.
type('Whiteboard.m');
classdef Whiteboard < matlab.System % Whiteboard Draw lines on a figure window % properties(Nontunable) Color (1, 1) ColorValues = ColorValues.blue end methods (Access = protected) function stepImpl(obj) h = Whiteboard.getWhiteboard(); plot(h, ... randn([2,1]), randn([2,1]), ... 'Color',char(obj.Color)); end function releaseImpl(obj) 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';
Проведите несколько линий.
for i=1:3 greenInk(); blueInk(); end
Очистите электронную доску
release(greenInk); release(blueInk);