Можно настроить диалоговое окно для блока MATLAB System путем добавления свойств и методов в соответствующий системный объект. Можно добавить вкладки, организованные свойства в группы и разделы, добавить описания блоков, управление типами симуляции и добавить пользовательские кнопки.
Этот пример настраивает диалоговое окно блока для MultipleGroupsWithTabs
Системный блок MATLAB путем определения имен отображения свойств и изменения getPropertyGroupImpl
способ.
Изменение метки свойства
Чтобы изменить метку свойства, которая появляется в диалоговом окне, добавьте комментарии перед каждым свойством в этом формате %PropertyName Block Dialog Label
без пространств между комментарием и именем свойства. Например, чтобы отобразить StartValue
свойство как Начальное значение, задайте:
%StartValue Start Value
StartValue = 0
The MultipleGroupsWithTabs
Системный объект в этом примере перезакрепляет каждое свойство для отображения в диалоговом окне MATLAB System block.
Организуйте диалоговое окно
The MutlitpleGroupsWithTabs
Класс системного объекта задает getPropertyGroupsImpl
способ. Внутри getPropertyGroupsImpl
метод, этот пример задает две вкладки (группы разделов) и три группы параметров (разделы).
classdef MultipleGroupsWithTabs < matlab.System % MultipleGroupsWithTabs Customize block dialog with multiple tabs and parameter groups. % Public, tunable properties properties %StartValue Start Value StartValue = 0 %EndValue End Value EndValue = 10 Threshold = 1 %BlockLimit Limit BlockLimit = 55 end % Public Nontunable properties(Nontunable) %IC1 First initial condition IC1 = 0 %IC2 Second initial condition IC2 = 10 %IC3 Third initial condition IC3 = 100 %UseThreshold Use threshold UseThreshold (1,1) logical = true end methods (Static, Access = protected) function groups = getPropertyGroupsImpl % Section to always display above any tabs. alwaysSection = matlab.system.display.Section(... 'Title','','PropertyList',{'BlockLimit'}); % Group with no sections initTab = matlab.system.display.SectionGroup(... 'Title','Initial conditions', ... 'PropertyList',{'IC1','IC2','IC3'}); % Section for the value parameters valueSection = matlab.system.display.Section(... 'Title','Value parameters',... 'PropertyList',{'StartValue','EndValue'}); % Section for the threshold parameters thresholdSection = matlab.system.display.Section(... 'Title','Threshold parameters',... 'PropertyList',{'Threshold','UseThreshold'}); % Group with two sections: the valueSection and thresholdSection sections mainTab = matlab.system.display.SectionGroup(... 'Title','Main', ... 'Sections',[valueSection,thresholdSection]); % Return an array with the group-less section, the group with % two sections, and the group with no sections. groups = [alwaysSection,mainTab,initTab]; end end end
Получившееся диалоговое окно
load_system('ShowSystemBlockDialog') open_system('ShowSystemBlockDialog/MATLAB System')
Этот пример настраивает диалоговое окно блока для блока MATLAB System путем определения имен отображения свойств и изменения getPropertyGroupImpl
способ. Эта индивидуальная настройка демонстрируется с помощью системного объекта AddPropertySections
.
Изменение меток свойств
Чтобы изменить метку свойства, которая появляется в диалоговом окне, добавьте комментарии перед каждым свойством в этом формате %PropertyName Block Dialog Label
без пространств между знаком процента и именем свойства. Например, чтобы отобразить UseAlpha
свойство как Use alpha, задайте:
%UseAlpha Use alpha
UseAlpha = 0
The AddPropertySections
Системный объект, включенный в этот пример, перезакрепляет свойства для отображения в диалоговом окне MATLAB System block.
Организуйте диалоговое окно
Чтобы организовать свойства в диалоговом окне, AddPropertySections
Класс системного объекта задает getPropertyGroupsImpl
способ. Внутри getPropertyGroupsImpl
метод, этот пример задает два раздела, каждый с двумя свойствами.
classdef AddPropertySections < matlab.System % AddPropertySections Customized dialog with two parameter sections % Public, tunable properties properties %NumberOfShapes Number of shapes NumberOfShapes = 10 Alpha = 0.75 end % Public, nontunable properties properties(Nontunable) Coloring (1, 1) {mustBeMember(Coloring,["red","blue","green"])} = "red" %UseAlpha Use alpha UseAlpha (1,1) logical = false end methods (Static, Access = protected) function groups = getPropertyGroupsImpl % Section for the value parameters valueSection = matlab.system.display.Section(... 'Title','Shape parameters',... 'PropertyList',{'NumberOfShapes','Coloring'}); % Section for the threshold parameters shadingSection = matlab.system.display.Section(... 'Title','Shading parameters',... 'PropertyList',{'UseAlpha','Alpha'}); % Return an array with the two sections. groups = [valueSection, shadingSection]; end end end
Получившееся диалоговое окно
load_system('CustomSystemBlockDialog') open_system('CustomSystemBlockDialog/MATLAB System')
Добавьте панель заголовка к блоку MATLAB System путем добавления getHeaderImpl
метод вашему Системному объекту.
Использование getHeaderImpl
чтобы задать заголовок панели и текст для MyCounter
Системные object™. Если вы не задаете getHeaderImpl
блок не отображает заголовок или текст для панели.
Что касается всех Impl
методы, установите getHeaderImpl
доступ к методу protected
поскольку метод вызывается только внутренне.
methods (Static, Access = protected) function header = getHeaderImpl header = matlab.system.display.Header('MyCounter',... 'Title','My Enhanced Counter'); 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
Получившееся диалоговое окно с параметром Simulate using:
Добавьте кнопку в диалоговое окно 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
Полный файл определения класса для кнопки диалога
Получившееся диалоговое окно с кнопкой Visualize:
getHeaderImpl
| getPropertyGroupsImpl
| getSimulateUsingImpl
| matlab.system.display.Header
| matlab.system.display.Section
| matlab.system.display.SectionGroup
| showSimulateUsingImpl