MATLAB コードの Stateflow フロー チャートへの変換
MATLAB® コードを Stateflow® フロー チャートとグラフィカル関数に変換するには、パターン ウィザードを使用します。変換でサポートされるパターンには次が含まれます。
if、if-elseおよびその他の入れ子形式の判定ステートメント。forループとwhileループ。switchステートメント。
パターン ウィザードでは MATLAB 関数とスクリプトを変換できます。
MATLAB 関数は Stateflow グラフィカル関数に変換されます。
MATLAB スクリプトは Stateflow フロー チャートに変換されます。
スタンドアロンの Stateflow チャートでのみ、MATLAB コードの変換がサポートされます。詳細については、MATLAB オブジェクトとして実行する Stateflow チャートの作成を参照してください。
MATLAB スクリプトからのフロー チャートの作成
次の MATLAB スクリプトはコラッツ予想の 1 インスタンスを経験的に検証します。数値入力 u が指定されると、スクリプトは次の規則を反復してヘイルストーン数列 n0 = u, n1, n2, n3, ⋯ を計算します。
ni が偶数の場合は、ni+1 = ni/2
ni が奇数の場合は、ni+1 = 3ni + 1
コラッツ予想では、すべての正の整数は、最終的に 1 に到達するヘイルストーン数列をもつことが主張されています。
% Hailstone sequence u, c(u), c(c(u)),... y = u; while y(end) ~= 1 y(end+1) = c(y(end)); end disp(y); function n = c(n) % Compute next number in hailstone sequence. % If n is even, then c(n) = n/2. % If n is odd, then c(n) = 3*n+1. if rem(n,2) == 0 n = n/2; else n = 3*n+1; end end
c を繰り返し呼び出す while ループを実行します。関数 c は、出力が入力のパリティに依存する、条件付きの if-else ステートメントで構成されます。このスクリプトをフロー チャートとグラフィカル関数に変換するには、次を行います。
新しいスタンドアロン チャートを開きます。
edit hailstone.sfx[ステート チャート] タブで [パターン]、[ファイルの選択] を選択します。
ダイアログ ボックスで、MATLAB スクリプトを選択して [開く] をクリックします。パターン ウィザードによって Stateflow チャートにフロー チャートとグラフィカル関数が追加されます。グラフィカル関数をダブルクリックして、その内容を表示します。

[シンボル] ペインで [未定義のシンボルを解決]
をクリックします。Stateflow エディターによって uとyがローカル データとして解決されます。チャートを保存します。
チャートを Stateflow エディターから実行するには、[シンボル] ペインに
u= 9 の値を入力して [実行]
をクリックします。フロー チャートの実行中、Stateflow エディターではチャート アニメーションによってアクティブな遷移が強調表示されます。実行が停止すると、MATLAB コマンド ウィンドウに 9 の値から始まるヘイルストーン数列が表示されます。9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
[停止]
をクリックします。
生成されたフロー チャートとグラフィカル関数をコピーして、Simulink® モデル内の Stateflow チャートを含む他のチャートに貼り付けることができます。MATLAB コードで Simulink のコード生成が制限される機能が使用されている場合、チャートのシミュレーションを行う前にフロー チャートのアクションを変更しなければなりません。詳細については、Stateflow チャートでの外部 MATLAB 関数の呼び出しを参照してください。
メモ
チャート内のグラフィカル関数に変換する MATLAB 関数で nargin が使用されているとします。nargin はチャート オブジェクトをグラフィカル関数の入力引数の 1 つとしてカウントするため、グラフィカル関数の nargin の値は、元の MATLAB 関数での nargin の値に 1 を加えたものと等しくなります。詳細については、スタンドアロンのチャートの実行を参照してください。