exponenta event banner

Диалоговое окно «Адаптация системного блока»

Диалоговое окно для блока MATLAB System можно настроить путем добавления свойств и методов в соответствующий объект System. Можно добавлять вкладки, упорядоченные свойства в группы и разделы, добавлять описания блоков, управление типами моделирования и добавлять пользовательские кнопки.

Определение диалоговых вкладок, сечений и порядка свойств блоков

В этом примере настраивается диалоговое окно блока для MultipleGroupsWithTabs Системный блок MATLAB путем указания отображаемых имен свойств и изменения getPropertyGroupImpl способ.

Изменить метку свойства

Чтобы изменить метку свойства, отображаемую в диалоговом окне, добавьте комментарии перед каждым свойством в этом формате %PropertyName Block Dialog Label без пробелов между комментарием и именем свойства. Например, для отображения StartValue в качестве начального значения укажите:

%StartValue Start Value
StartValue = 0

MultipleGroupsWithTabs Системный объект в этом примере повторно маркирует каждое свойство для отображения в диалоговом окне «Системный блок MATLAB».

Диалоговое окно «Организация»

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 путем указания отображаемых имен свойств и изменения getPropertyGroupImpl способ. Эта настройка демонстрируется с помощью объекта System AddPropertySections.

Изменение меток свойств

Чтобы изменить метку свойства, отображаемую в диалоговом окне, добавьте комментарии перед каждым свойством в этом формате %PropertyName Block Dialog Label без пробела между знаком процента и именем свойства. Например, для отображения UseAlpha в качестве свойства «Использовать альфа» укажите:

%UseAlpha Use alpha
UseAlpha = 0

AddPropertySections Системный объект, включенный в этот пример, повторно маркирует свойства для отображения в диалоговом окне «Системный блок MATLAB».

Диалоговое окно «Организация»

Чтобы упорядочить свойства в диалоговом окне, 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 путем добавления getHeaderImpl к объекту System.

Использовать 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

Укажите тип моделирования и укажите, отображается ли параметр «Моделирование с помощью» в диалоговом окне Блок системы Simulink ® MATLAB (Simulate ® MATLAB System block). Параметры моделирования: 'Code generation' и 'Interpreted mode'.

Если вы не включаете getSimulateUsingImpl метод в файле определения класса, объект System допускает как режимы моделирования, так и значения по умолчанию 'Code generation'. Если вы не включаете showSimulateUsingImpl в диалоговом окне блока появится параметр «Моделирование с использованием».

Необходимо установить getSimulateUsingImpl и showSimulateUsingImpl методы для static и доступ для этих методов к protected.

Использовать getSimulateUsingImpl чтобы указать, что для объекта System разрешено только интерпретированное выполнение.

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

Добавьте кнопку в диалоговое окно Блок системы MATLAB (MATLAB System block). Эта кнопка открывает рисунок, отображающий функцию пандуса.

Использовать matlab.system.display.Action для определения функции или кода MATLAB ®, связанных с кнопкой в диалоговом окне Блок системы MATLAB. В примере также показано, как задать опции кнопки и использовать 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".

См. также

| | | | | |

Связанные темы