Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

シミュレーション データ インスペクターへの string データのログ記録

この例では、数値入力データに基づいて string データを自然言語出力テキストに連結する Stateflow® チャートの作成方法を説明します。出力テキストは、シミュレーション データ インスペクターおよび MATLAB® ワークスペースで表示できます。string データの詳細については、string を使用したテキスト情報の管理を参照してください。

チャートの動作

シミュレーション中、Sine Wave ブロックは、閉じたパスに沿って移動する点の位置を緯度と経度の座標で提供します。チャートでは、これらの座標を調べて、次の表の情報に従って string q1 および q2 を割り当てます。

緯度経度q1q2
"North""east"
"North""west"
"South""east"
"South""west"

次に、以下のステートメントを使用して、

sout = strcat("Location in ",q1,q2," Quadrant");
これらの string を連結して出力 string を生成します。

モデルの作成

ジャンクションと遷移の追加

  1. C アクション言語を使用する空のチャートをもつ Simulink® モデルを作成するには、MATLAB コマンド プロンプトで以下を入力します。

    sfnew -C

  2. 空のチャートに、デフォルト遷移を配置します。ジャンクションが表示されます。ジャンクションのエッジからポイントしてドラッグし、他の遷移およびジャンクションを追加します。

  3. それぞれの遷移をダブルクリックします。テキスト プロンプトで、適切な条件またはアクション ステートメントを入力します。

チャート データの定義

  1. 未定義のデータを解決するには、[シンボル] ペインで [未定義のシンボルを解決] アイコン をクリックします。Stateflow エディターによってチャート内の各シンボルに適切なスコープが割り当てられます。

    シンボルスコープ
    latitude入力データ
    longitude入力データ
    q1ローカル データ
    q2ローカル データ
    sout出力データ

  2. q1 を string データとして指定するには、プロパティ インスペクターの [型] フィールドで、string を選択します。この指定を q2 および sout で繰り返します。

    また、最大限の文字数の string データを作成するには、内容の切り捨てを回避するために適切なバッファー サイズ n を使用して、各 string を stringtype(n) として指定します。例として、次の表に、チャート内の string データに適したバッファー サイズを示します。

    シンボル文字数string データ型
    q15stringtype(5)
    q25stringtype(5)
    sout30stringtype(30)

モデルへの Sources および Sinks の追加

  1. Simulink モデルで、2 つの Sine Wave ブロックと 1 つの Display ブロックを追加します。これらのブロックを、チャートの入力端子と出力端子に接続します。

  2. 次の表に示すように、Sine Wave ブロックのパラメーターを設定します。

    ブロック振幅バイアス周波数フェーズ
    緯度50010
    経度5001pi/2

  3. モデル内の信号に、latitudelongitudesout としてラベルを付けます。各信号を右クリックして [選択した信号のログ] を選択します。

シミュレーション結果の表示

  1. モデルをシミュレートすると、[シミュレーション データ インスペクター] アイコン が強調表示されて、新しいシミュレーション データがあることが示されます。シミュレーション データ インスペクターを開くには、このアイコンをクリックします。

  2. シミュレーション データ インスペクターで latitude 信号、longitude 信号、sout 信号のチェック ボックスをオンにして、それらが同じ座標軸のセットに表示されるようにします。latitude 信号と longitude 信号は正弦曲線として表示されます。sout 信号は遷移プロットとして表示されます。string の値は帯内に表示され、交差する線は値の変更をマークします。

  3. MATLAB ワークスペース内でログ データにアクセスするには、信号のログ オブジェクト logsout を呼び出します。Stateflow は、string データ sout を MATLAB string スカラーとしてエクスポートします。たとえば、コマンド プロンプトで次のように入力します。

    losgout = out.logsout;
    Tbl = table(logsout.get('latitude').Values.Data, ...
       logsout.get('longitude').Values.Data, ...
       logsout.get('sout').Values.Data);
    Tbl.Properties.VariableNames = ...
       {'Latitude','Longitude','QuadrantInfo'};
    Tbl([4:8:30],:)
    ans =
    
      4×3 table
    
        Latitude    Longitude              QuadrantInfo          
        ________    _________    ________________________________
    
         28.232       41.267     "Location in Northeast Quadrant"
         40.425      -29.425     "Location in Northwest Quadrant"
        -30.593      -39.548     "Location in Southwest Quadrant"
        -38.638       31.735     "Location in Southeast Quadrant"
    

参考

| (Simulink) |

関連するトピック