Main Content

パターン ウィザードを使用したフロー チャートの作成

パターン ウィザードは、グラフィカル関数やチャートで使用される一般的なフロー チャート パターンを生成する、ユーティリティです。パターン ウィザードには、フロー チャートを手作業で作成する場合よりも優れた点がいくつかあります。パターン ウィザードでは次のことが可能です。

  • 一般的なロジックや反復ループのパターンの生成

  • パターン間における形状とレイアウトの一貫性の促進

  • 主要な場所へのパターンの保存と再利用の促進

  • 既存のフロー チャートへのパターンの挿入

パターン ウィザードでは、MathWorks Advisory Board (MAB) のガイドラインに準拠する形状とレイアウトをもつフロー チャートが生成されます。条件やアクションを変更したり、追加のロジック パターンを挿入したりすることでフロー チャートをカスタマイズできます。また、後から再利用できるように、フロー チャートをカスタム パターンとしてパターン ウィザードに保存することもできます。

たとえば、パターン ウィザードを使用して 2 次元行列の上三角部分を反復するためのグラフィカル関数を作成するとします。関数は 2 つの入れ子にされた for ループで構成されており、その中で、行インデックス i は常に列インデックス j 以下です。パターン ウィザードを使用すると、以下のことが可能です。

  1. 行インデックス i を反復する外部ループのフロー チャートを作成再利用可能なフロー チャートの作成を参照してください。

  2. 列インデックス j を反復する内部ループを挿入することによってフロー チャートを拡張既存のフロー チャートへのロジック パターンの挿入を参照してください。

  3. フロー チャートをカスタム パターンとしてパターン ウィザードに保存フロー チャートのカスタム パターンの保存を参照してください。

  4. グラフィカル関数でカスタム パターンを再利用フロー チャートのカスタム パターンの再利用を参照してください。

再利用可能なフロー チャートの作成

フロー チャートを作成するには、[モデル化] タブの [パターン] ギャラリーからパターンを選択します。パターンの選択肢は次のとおりです。

  • [If][If-Else][If-Elseif] およびその他の入れ子形式の判定パターン。

  • [For][While] および [DoWhile] の各ループ パターン。

  • 最大 4 つの case をもつスイッチ パターン。

  • 後で再利用するために保存したカスタム パターン。

  • MATLAB® .m ファイルで定義されるパターン。

[パターン] ダイアログ ボックスに、選択したパターンに固有の条件およびアクションを指定する画面が表示されます。フロー チャートのパターンの詳細については、パターン ウィザードから生成される MAB 準拠のパターンを参照してください。

たとえば、上三角部分の反復子パターンで外部 for ループを作成するには、次を行います。

  1. [モデル化] タブで [パターン][For ループ] を選択します。

  2. [パターン] ダイアログ ボックスで、行列の 1 次元目を反復するための初期化子、ループ テストおよびカウント式を指定します。

    Pattern dialog box.

  3. [OK] をクリックします。パターン ウィザードで次のフロー チャートが生成されます。

    Flow chart that models a for loop.

上三角部分の反復子パターンを完成させるには、2 つ目の for ループを、このフロー チャートの垂直方向の遷移に沿って挿入します。

既存のフロー チャートへのロジック パターンの挿入

パターン ウィザードを使用して、既存のフロー チャートにループまたは判定ロジックの拡張を追加します。使用可能な垂直方向の遷移を選択して、[パターン] ギャラリーからパターンを選択します。オプションには判定、ループおよびスイッチのパターンがあります。[パターン] ダイアログ ボックスに、選択したパターンに固有の条件およびアクションを指定する画面が表示されます。

たとえば、上三角部分の反復子パターンに 2 つ目のループを追加するには、次を行います。

  1. Stateflow® エディターで、外部の for ループ パターンから、{action1} というラベルの付いた垂直方向の遷移を選択します。

  2. [モデル化] タブで [パターン][For ループ] を選択します。

  3. [パターン] ダイアログ ボックスで、行列の 2 次元目を反復するための初期化子、ループ テストおよびカウント式を指定します。初期化式により、i が j を超えないことが確実になります。さらに、行列の上三角部分の各要素を取得するアクションも入力します。

    Pattern dialog box.

  4. [OK] をクリックします。パターン ウィザードにより、フロー チャートに 2 つ目のループが追加されます。

    Flow chart that models two nested for loops.

  5. パターンを含むモデルを保存します。

ロジック パターン挿入のガイドライン

ロジック拡張を作成する際は、次に従ってください。

  • 拡張する遷移は一度に 1 つだけ選択できます。選択する遷移は、厳密に垂直方向で、遷移先のジャンクションをもっていなければなりません。

  • 拡張できるのはパターン ウィザードで作成したフロー チャートのみです。

  • フロー チャートを含む Stateflow チャートには、ジャンクションと遷移のみを含めることができます。このチャートには、ステート、関数、真理値表など、その他のオブジェクトを含めることはできません。

  • カスタムに作成または変更されたパターンは拡張できません。

  • カスタム パターンは拡張として選択できません。

選択したものが挿入に適さない場合、[パターン] ギャラリーからパターンを選択したときに、パターン オプションではなくメッセージが表示されます。

メッセージ問題点
垂直方向の遷移を選択してください垂直方向の遷移が選択されていません。
選択した遷移は厳密に垂直方向でなければなりません遷移を選択しましたが、垂直方向ではありません。
垂直方向の遷移を 1 つだけ選択してください複数の遷移を選択しました。
エディターには遷移とジャンクションのみが含まれなければなりませんステート、関数、または真理値表など、他のオブジェクトがチャート内にあります。

フロー チャートのカスタム パターンの保存

パターン ウィザードを使用してフロー チャートのパターンを主要な場所に保存すると、その後簡単に取得してグラフィカル関数やチャートで再利用できます。保存するパターンをもつフロー チャートを選択して、[パターン][パターンとして保存] を選択します。

たとえば、後から再利用するために上三角部分の反復子パターンを保存するとします。

  1. カスタム パターンを保存するフォルダーを作成します。カスタム パターン フォルダー作成のガイドラインを参照してください。

  2. Stateflow エディターで、上三角部分の反復子のフロー チャートを選択します。

  3. [モデル化] タブで [パターン][パターンとして保存] を選択します。

  4. カスタム パターン フォルダーをまだ指定していない場合は、フォルダーの選択を求める画面がパターン ウィザードに表示されます。作成したフォルダーを選択して [フォルダーの選択] をクリックします。

  5. プロンプトで、パターンの名前 UpperTriangleIterator を指定し、[保存] をクリックします。パターン ウィザードにより、パターンがモデル ファイル UpperTriangleIterator.slx としてカスタム パターン フォルダーに保存されます。

メモ

パターン ウィザードを使用して再利用できるのはフロー チャートのみです。ステートやサブチャートを再利用するには、Atomic サブチャートを作成します。詳細については、Atomic サブチャート使用した再利用可能なサブコンポーネントの作成を参照してください。

カスタム パターン フォルダー作成のガイドライン

パターン ウィザードでは、フロー チャート パターンの保存と取得に、単一のフラット フォルダーが使用されます。

  • フロー チャートはすべてカスタム パターン フォルダーの最上位に保存します。サブフォルダーは作成しないでください。

  • すべてのフロー チャート ファイルに .mdl または .slx の拡張子が付くことを確認します。

カスタム パターン フォルダーの変更

パターン ウィザードでは、選択したカスタム パターン フォルダーが今後のセッションのために記憶されます。別のフォルダーを選択するには、関数 sfpref を使用します。たとえば、カスタム パターン フォルダーを C:\patterns に設定するには次のように入力します。

sfpref(PatternWizardCustomDir=fullfile("C:","patterns"));

あるいは、既存のカスタム パターン フォルダーの名前を変更して、次のいずれかを行います。

  • 新しいカスタム パターンをパターン ウィザードに保存

  • パターン ウィザードの既存のカスタム パターンを再利用

新しいフォルダーの選択を求める画面がパターン ウィザードに表示されます。

フロー チャートのカスタム パターンの再利用

パターン ウィザードでは、フロー チャートはモデル ファイルとしてカスタム パターン フォルダーに保存されます。このフォルダーに保存したパターンは、[パターン][カスタム] を選択するとドロップダウン リストに表示されます。カスタム パターンは、チャートに直接追加するか、チャート内のサブチャート化したグラフィカル関数に追加できます。

たとえば、上三角部分の反復子のカスタム パターンをグラフィカル関数に追加するには、次を行います。

  1. オブジェクト パレットから、グラフィカル関数の定義の説明に従ってグラフィカル関数をチャートに追加します。

  2. 次の関数シグネチャを入力します。

    function y = ut_iterator(u, numrow, numcol)
    この関数は以下の 3 つの入力をとります。

    入力説明
    u2 次元行列
    numrow行列の行数
    numcol行列の列数

  3. 関数を右クリックし、[グループとサブチャート][サブチャート] を選択します。関数は不透明なボックスとして表示されます。

    A subcharted graphical function.

  4. サブチャート化した関数をダブルクリックして開きます。

  5. グラフィカル関数から既定のフロー チャートを削除します。

  6. [モデル化] タブで [パターン][カスタム] を選択します。ダイアログ ボックスが開き、カスタム パターン フォルダーに保存されているすべてのパターンの一覧が表示されます。

    Dialog box that lists saved custom patterns.

  7. 上三角部分の反復子パターンを選択し、[OK] をクリックします。カスタム パターンがグラフィカル関数に追加されます。

  8. グラフィカル関数で、action1 を、適切なアクションに置き換えます。このアクションは、行列の行ごとに 1 回ずつ繰り返されます。

パターン ウィザードから生成される MAB 準拠のパターン

パターン ウィザードでは、MathWorks Advisory Board (MAB) のガイドラインに準拠する形状とレイアウトをもつフロー チャートが生成されます。

判定パターン

 If

 If-Else

 If-Elseif

 If-Elseif-Else

 If-Elseif-Elseif-Else

 入れ子形式の If

ループ パターン

 For ループ

 While ループ

 DoWhile ループ

Switch パターン

 2 つの case

 3 つの case

 4 つの case

参考

関連するトピック