Добавьте, что панель заголовка к Системе 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