Main Content

Customize MATLAB System Block Dialog

This example shows you how to customize the block dialog for a MATLAB System block.

System objects

System objects allow you to implement algorithms using MATLAB. System objects are a specialized kind of MATLAB object, designed specifically for implementing and simulating dynamic systems with inputs that change over time.

After you define a System object, you can include it in a Simulink model using a MATLAB System block.

Model Description

This example contains a MATLAB System block that implements the System object CustomDialog. Use the MATLAB System block dialog box to modify properties of the System object. This example shows how to customize the prompt for a property and how to create check boxes, lists, groups, tabs, and buttons in the dialog box.

System Object Class Definition

You can access MATLAB source code used by the MATLAB System block by clicking the "Source Code" hyperlink from the block dialog. The System object CustomDialog implements the getPropertyGroupsImpl and getHeaderImpl methods that are used to customize the appearance of the block dialog and organize the System object properties.

  1. PropertyDefault - Property with no customization

  2. PropertyCustomPrompt - Property with custom prompt

  3. PropertyEnum - Enumeration property with a finite list of options

  4. PropertyLogical - Property validation with logical to create check box

  5. PropertyInDifferentTab - Property shown on a different tab of the dialog box

The getPropertyGroupsImpl method uses the matlab.system.display.Section and matlab.system.display.SectionGroup classes to create property sections and tabs in the dialog box. getPropertyGroupsImpl also creates a button in the "Group 2" section which calls the visualize method of the System object.

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

        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 =

        % PropertyInDifferentTab Use getPropertyGroupsImpl to create tabs
        PropertyInDifferentTab = 30
        % PropertyLogical Use logical property validation to create a checkbox
        % Logical properties need to be Nontunable for use in Simulink
        PropertyLogical (1,1) logical = true
    methods(Access = protected)
        function y = stepImpl(~, u)
            y = u;
    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',...
            group2 = matlab.system.display.Section(...
                'Title','Group 2',...

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

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

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

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

See Also

Related Topics