MATLAB System ブロック ダイアログ ボックスのカスタマイズ
この例では、MATLAB System ブロック ダイアログ ボックスをカスタマイズする方法を示します。モデルには、System object™ CustomDialog を実装する MATLAB System ブロックが含まれています。MATLAB System ブロック ダイアログのチェック ボックス、リスト、グループ、タブ、ボタンを作成するために、ブロック ダイアログ ボックスを使用して System object のプロパティを変更します。

System object
System object を使用すると、MATLAB® でのアルゴリズムの実装が可能になります。System object は入力が時間経過とともに変化する動的システムを実装およびシミュレーションするために特別に設計された、特殊な種類の MATLAB オブジェクトです。
System object を定義すれば、MATLAB System ブロックを使用してそれを Simulink® モデルに含めることができます。
System object クラスの定義
ブロック ダイアログ ボックスで [ソース コード] ハイパーリンクをクリックすることで、MATLAB System ブロックによって使用される MATLAB ソース コードにアクセスできます。System object CustomDialog は、ブロック ダイアログ ボックスの外観をカスタマイズし、System object のプロパティを整理するために使用される getPropertyGroupsImpl メソッドと getHeaderImpl メソッドを実装します。
PropertyDefault- カスタマイズが行われないプロパティPropertyCustomPrompt- カスタム プロンプトを伴うプロパティPropertyEnum- オプションの有限リストをもつ列挙プロパティPropertyLogical- チェック ボックスを作成するlogicalによるプロパティ検証PropertyInDifferentTab- ダイアログ ボックスの異なるタブに表示されるプロパティ
getPropertyGroupsImpl メソッドでは、matlab.system.display.Section クラスと matlab.system.display.SectionGroup クラスを使用して、ダイアログ ボックスのプロパティ セクションとタブが作成されます。getPropertyGroupsImpl では、System object の visualize メソッドを呼び出すボタンも "グループ 2" セクションに作成されます。
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
% PropertyInDifferentTab Use getPropertyGroupsImpl to create tabs
PropertyInDifferentTab = 30
end
properties(Nontunable)
% PropertyLogical Use logical property validation to create a checkbox
PropertyLogical (1,1) logical = true
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