Настройте системное блочное диалоговое окно

Добавьте заголовок к MATLAB System Block

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

Добавьте вкладку типов данных к MATLAB System Block

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

Диалоговое окно с вкладкой типов данных

Добавьте Property Groups к системному объекту и MATLAB System Block

Разделы свойства 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

Define Group разделов

Используйте 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

Полный файл определения класса с Property Group и отдельной вкладкой

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

Индивидуально настраиваемое диалоговое окно

Управляйте типом моделирования в MATLAB System Block

Задайте тип моделирования и появляется ли Моделировать параметр использования на блочном диалоговом окне Simulink® MATLAB System. Опциями моделирования является 'Code generation' и 'Interpreted mode'.

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

Необходимо установить 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 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

Полный файл определения класса для диалоговой кнопки

Задайте группу свойства и вторую вкладку в файле определения класса.

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

Диалоговое окно с визуализирует кнопку

Смотрите также

| | | | | |

Похожие темы

Была ли эта тема полезной?