Добавьте, что панель заголовка к Системе 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; % Count values less than lower threshold UseLowerThreshold (1,1) logical = 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