Настройка системных Диалоговых окон блока

Можно настроить диалоговое окно для блока 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

 Полное определение класса

Управляйте типом симуляции в MATLAB System Block

Задайте тип симуляции и появится ли параметр 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 dialog box showing the Simulate using drop down set to Interpreted execution and greyed out so users cannot change the option.

Добавьте пользовательскую кнопку в MATLAB System Block

Добавьте кнопку в диалоговое окно 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:

Resulting MATLAB System block dialog box with the custom button labeled "Visualize".

См. также

| | | | | |

Похожие темы