Настройте диалоговое окно MATLAB System Block

Введение

Этот пример показывает вам, как настроить диалоговое окно блока для блока MATLAB System.

Системные объекты

Системные объекты позволяют вам реализовывать использование алгоритмов MATLAB. Системные объекты являются специализированным видом объекта MATLAB, специально разработанного для реализации и симуляции динамических систем с входными параметрами то изменение в зависимости от времени.

После того, как вы зададите Системный объект, можно включать его в модель Simulink с помощью блока MATLAB System.

Образцовое описание

Этот пример содержит блок MATLAB System, который реализует Системный объект CustomDialog. Используйте диалоговое окно блока MATLAB System, чтобы изменить свойства Системного объекта. Этот пример показывает, как настроить подсказку для свойства и как создать флажки, списки, группы, вкладки и кнопки в диалоговом окне.

Определение класса системного объекта

Можно получить доступ к исходному коду MATLAB, используемому блоком MATLAB System путем нажатия на гиперссылку "Source Code" от диалогового окна блока. CustomDialog Системного объекта реализует getPropertyGroupsImpl и методы getHeaderImpl, которые используются, чтобы настроить внешний вид диалогового окна блока и организовать свойства Системного объекта.

  1. PropertyDefault - Свойство без индивидуальной настройки

  2. PropertyCustomPrompt - Свойство с пользовательской подсказкой

  3. Свойство PropertyEnum - Enumeration с конечным списком опций

  4. PropertyLogical - свойство атрибута Logical создать флажок

  5. PropertyInDifferentTab - Свойство, показанное на различной вкладке диалогового окна

Метод getPropertyGroupsImpl использует matlab.system.display. Разделите и matlab.system.display. Классы SectionGroup, чтобы создать разделы свойства и вкладки в диалоговом окне. getPropertyGroupsImpl также создает кнопку в разделе "Group 2", который вызывает метод visualize Системного объекта.

classdef CustomDialog < matlab.System
% CustomDialog Customize System block dialog

    properties
        PropertyDefault = 10
        % For PropertyDefault, with no comment above, property name is used
        % as prompt

        % PropertyCustomPrompt Use comment above property for custom prompt
        PropertyCustomPrompt = 20
        
        % PropertyEnum Use enumeration to limit values to finite list
        PropertyEnum (1,1) ColorValues = ColorValues.blue
    end
    
    properties(Logical, Nontunable)
        % PropertyLogical Use Logical attribute to create checkbox
        % Logical properties need to be Nontunable for use in Simulink
        PropertyLogical = true
    end
    
    properties
        % PropertyInDifferentTab Use getPropertyGroupsImpl to create tabs
        PropertyInDifferentTab = 30
    end
    
    methods(Access = protected)
        function y = stepImpl(~, u)
            y = u;
        end
    end
    
    methods (Static, Access = protected)
        function groups = getPropertyGroupsImpl
        % Use getPropertyGroupsImpl to create property sections in the
        % dialog. Create two sections with titles "Group1" and
        % "Group2". "Group1" contains PropertyDefault and
        % PropertyCustomPrompt. "Group2" contains PropertyEnum, 
        % PropertyLogical, and a Visualize button.
            group1 = matlab.system.display.Section(...
                'Title','Group 1',...
                'PropertyList',{'PropertyDefault','PropertyCustomPrompt'});
 
            group2 = matlab.system.display.Section(...
                'Title','Group 2',...
                'PropertyList',{'PropertyEnum','PropertyLogical'});

            % Add a button that calls back into the visualize method
            group2.Actions = matlab.system.display.Action(@(actionData,obj)...
                    visualize(obj,actionData),'Label','Visualize');

            tab1 = matlab.system.display.SectionGroup(...
                    'Title', 'Tab 1', ...
                    'Sections',  [group1, group2]);
           
            tab2 = matlab.system.display.SectionGroup(...
                    'Title', 'Tab 2', ...
                    'PropertyList',  {'PropertyInDifferentTab'});

            groups = [tab1, tab2];
        end
        
        function header = getHeaderImpl
           header = matlab.system.display.Header(mfilename('class'), ...
                   'Title','AlternativeTitle',...
                   'Text','Customize dialog header using getHeaderImpl method.');
         end
    end

    methods
        function visualize(obj, actionData)
            % Use actionData to store custom data
            f = actionData.UserData;
            if isempty(f) || ~ishandle(f)
                f = figure;
                actionData.UserData = f;
            else
                figure(f); % Make figure current
            end
        
            d = 1:obj.PropertyCustomPrompt;
            plot(d);
        end
    end
end

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

Похожие темы