MATLAB System ブロック ダイアログのカスタマイズ
この例では、MATLAB System ブロックのブロック ダイアログをカスタマイズする方法を示します。
System object
System object を使用すると、MATLAB でのアルゴリズムの実装が可能になります。System object は入力が時間経過とともに変化する動的システムを実装およびシミュレーションするために特別に設計された、特殊な種類の MATLAB オブジェクトです。
System object を定義すれば、MATLAB System ブロックを使用してそれを Simulink モデルに含めることができます。
モデルの説明
この例には、System object CustomDialog
を実装する MATLAB System ブロックが含まれています。MATLAB System ブロックのダイアログ ボックスを使用して、System object のプロパティを変更します。この例では、プロパティ用にプロンプトをカスタマイズする方法、ダイアログ ボックスのチェック ボックス、リスト、グループ、タブ、ボタンを作成する方法を示します。
System object クラスの定義
ブロック ダイアログで "Source code" ハイパーリンクをクリックすることで、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 % Logical properties need to be Nontunable for use in Simulink 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