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