Добавьте, что панель заголовка к Системе object™–based блок реализовала использование блока MATLAB System.
Задайте заголовок заголовка и текст
Используйте getHeaderImpl, чтобы задать заголовок панели и текст для Системного объекта MyCounter.
Если вы не задаете getHeaderImpl, блок не отображает заголовка или текста для панели.
Вы всегда устанавливаете доступ к методу getHeaderImpl к protected, потому что это - внутренний метод, который конечные пользователи непосредственно не вызывают или запускают.
methods (Static, Access = protected) function header = getHeaderImpl header = matlab.system.display.Header('MyCounter',... 'Title','My Enhanced Counter'); end end
Полный файл определения класса с заданным заголовком
classdef MyCounter < matlab.System % MyCounter Count values properties Threshold = 1 end properties (DiscreteState) Count end methods (Static, Access = protected) function header = getHeaderImpl header = matlab.system.display.Header('MyCounter',... 'Title','My Enhanced Counter',... 'Text', 'This counter is an enhanced version.'); end end methods (Access = protected) function setupImpl(obj,u) obj.Count = 0; end function y = stepImpl(obj,u) if (u > obj.Threshold) obj.Count = obj.Count + 1; end y = obj.Count; end function resetImpl(obj) obj.Count = 0; end end end
Добавьте вкладку Data Types в диалоговое окно блока MATLAB System. Эта вкладка включает настройки типа данных с фиксированной точкой.
Отобразите вкладку типов данных
Используйте matlab.system.showFiSettingsImpl, чтобы отобразить вкладку Data Types в диалоговом окне блока MATLAB System.
methods (Static, Access = protected) function showTab = showFiSettingsImpl showTab = true; end end
Полный файл определения класса с вкладкой типов данных
Используйте showFiSettingsImpl, чтобы отобразить вкладку Data Types для Системного объекта, который добавляет смещение во вход фиксированной точки.
classdef FiTabAddOffset < matlab.System % FiTabAddOffset Add an offset to input properties Offset = 1; end methods function obj = FiTabAddOffset(varargin) setProperties(obj,nargin,varargin{:}); end end methods (Access = protected) function y = stepImpl(~,u) y = u + obj.Offset; end end methods(Static, Access=protected) function header = getHeaderImpl header = matlab.system.display.Header('Title',... 'Add Offset','Text','Add an offset to the input'); end function isVisible = showFiSettingsImpl isVisible = true; end end end
Диалоговое окно с вкладкой типов данных

Разделы свойства Define и группы раздела для отображения Системного объекта. Разделы и группы раздела отображаются как панели и вкладки, соответственно, в диалоговом окне блока MATLAB System.
Раздел Define свойств
Используйте matlab.system.display.Section и getPropertyGroupsImpl, чтобы задать два раздела группы свойства путем определения их заголовков и списков свойств.
Если вы не задаете свойство в getPropertyGroupsImpl, блок не отображает то свойство.
methods (Static, Access = protected)
function groups = getPropertyGroupsImpl
valueGroup = matlab.system.display.Section(...
'Title','Value parameters',...
'PropertyList',{'StartValue','EndValue'});
thresholdGroup = matlab.system.display.Section(...
'Title','Threshold parameters',...
'PropertyList',{'Threshold','UseThreshold'});
groups = [valueGroup,thresholdGroup];
end
end
Задайте группу разделов
Используйте matlab.system.display.SectionGroup, matlab.system.display.Section и getPropertyGroupsImpl, чтобы задать две вкладки, каждый содержащий определенные свойства.
methods (Static, Access = protected) function groups = getPropertyGroupsImpl upperGroup = matlab.system.display.Section(... 'Title', 'Upper threshold', ... 'PropertyList',{'UpperThreshold'}); lowerGroup = matlab.system.display.Section(... 'Title','Lower threshold', ... 'PropertyList',{'UseLowerThreshold','LowerThreshold'}); thresholdGroup = matlab.system.display.SectionGroup(... 'Title', 'Parameters', ... 'Sections', [upperGroup,lowerGroup]); valuesGroup = matlab.system.display.SectionGroup(... 'Title', 'Initial conditions', ... 'PropertyList', {'StartValue'}); groups = [thresholdGroup, valuesGroup]; end end
Полный файл определения класса с группой свойства и отдельной вкладкой
classdef EnhancedCounter < matlab.System % EnhancedCounter Count values considering thresholds properties UpperThreshold = 1; LowerThreshold = 0; end properties (Nontunable) StartValue = 0; end properties(Logical,Nontunable) % Count values less than lower threshold UseLowerThreshold = true; end properties (DiscreteState) Count; end methods (Static, Access = protected) function groups = getPropertyGroupsImpl upperGroup = matlab.system.display.Section(... 'Title', 'Upper threshold', ... 'PropertyList',{'UpperThreshold'}); lowerGroup = matlab.system.display.Section(... 'Title','Lower threshold', ... 'PropertyList',{'UseLowerThreshold','LowerThreshold'}); thresholdGroup = matlab.system.display.SectionGroup(... 'Title', 'Parameters', ... 'Sections', [upperGroup,lowerGroup]); valuesGroup = matlab.system.display.SectionGroup(... 'Title', 'Initial conditions', ... 'PropertyList', {'StartValue'}); groups = [thresholdGroup, valuesGroup]; end end methods (Access = protected) function setupImpl(obj) obj.Count = obj.StartValue; end function y = stepImpl(obj,u) if obj.UseLowerThreshold if (u > obj.UpperThreshold) || ... (u < obj.LowerThreshold) obj.Count = obj.Count + 1; end else if (u > obj.UpperThreshold) obj.Count = obj.Count + 1; end end y = obj.Count; end function resetImpl(obj) obj.Count = obj.StartValue; end function flag = isInactivePropertyImpl(obj, prop) flag = false; switch prop case 'LowerThreshold' flag = ~obj.UseLowerThreshold; end end end end
Индивидуально настраиваемое диалоговое окно


Задайте тип симуляции и появляется ли параметр Simulate using на диалоговом окне блока Simulink® MATLAB System. Опциями симуляции является 'Code generation' и 'Interpreted mode'.
Если вы не включаете метод getSimulateUsingImpl в свой файл определения класса, Системный объект позволяет и режимы симуляции и значения по умолчанию к 'Code generation'. Если вы не включаете метод showSimulateUsingImpl, параметр Simulate using появляется на диалоговом окне блока.
Необходимо установить getSimulateUsingImpl и методы showSimulateUsingImpl к static и доступу для этих методов к protected.
Используйте getSimulateUsingImpl, чтобы указать, что только интерпретированное выполнение позволено для Системного объекта.
methods(Static,Access = protected) function simMode = getSimulateUsingImpl simMode = 'Interpreted execution'; end end
Просмотрите метод в полном файле определения класса.
classdef PlotRamp < matlab.System % Display a button to launch a plot figure. properties (Nontunable) RampLimit = 10; end methods(Static, Access=protected) function group = getPropertyGroupsImpl group = matlab.system.display.Section(mfilename('class')); group.Actions = matlab.system.display.Action(@(~,obj)... visualize(obj),'Label','Visualize'); end function simMode = getSimulateUsingImpl simMode = 'Interpreted execution'; end end methods function obj = ActionDemo(varargin) setProperties(obj,nargin,varargin{:}); end function visualize(obj) figure; d = 1:obj.RampLimit; plot(d); end methods(Static,Access = protected) end end end
Диалоговое окно с параметром типа симуляции

Добавьте кнопку в диалоговое окно блока MATLAB System. Эта кнопка открывает фигуру, которая строит функцию пандуса.
Задайте действие для диалоговой кнопки
Используйте matlab.system.display.Action, чтобы задать функцию MATLAB® или код, сопоставленный с кнопкой в диалоговом окне блока MATLAB System. Пример также показывает, как установить параметры кнопки и использовать вход объекта actionData, чтобы сохранить указатель фигуры. Эта часть примера кода использует ту же фигуру, когда кнопка нажата многократно, вместо того, чтобы открыть новую фигуру для каждого нажатия кнопки.
methods(Static,Access = protected) function group = getPropertyGroupsImpl group = matlab.system.display.Section(mfilename('class')); group.Actions = matlab.system.display.Action(@(actionData,obj)... visualize(obj,actionData),'Label','Visualize'); end end methods function obj = ActionDemo(varargin) setProperties(obj,nargin,varargin{:}); end function visualize(obj,actionData) f = actionData.UserData; if isempty(f) || ~ishandle(f) f = figure; actionData.UserData = f; else figure(f); % Make figure current end d = 1:obj.RampLimit; plot(d); end end
Полный файл определения класса для диалоговой кнопки
Задайте группу свойства и вторую вкладку в файле определения класса.
classdef PlotRamp < matlab.System % Display a button to launch a plot figure. properties (Nontunable) RampLimit = 10; end methods(Static,Access = protected) function group = getPropertyGroupsImpl group = matlab.system.display.Section(mfilename('class')); group.Actions = matlab.system.display.Action(@(actionData,obj)... visualize(obj,actionData),'Label','Visualize'); end end methods function obj = ActionDemo(varargin) setProperties(obj,nargin,varargin{:}); end function visualize(obj,actionData) f = actionData.UserData; if isempty(f) || ~ishandle(f) f = figure; actionData.UserData = f; else figure(f); % Make figure current end d = 1:obj.RampLimit; plot(d); end end end
Диалоговое окно с визуализирует кнопку

getHeaderImpl | getPropertyGroupsImpl | getSimulateUsingImpl | matlab.system.display.Header | matlab.system.display.Section | matlab.system.display.SectionGroup | showSimulateUsingImpl