Main Content

Stateflow.SimulationData.State

シミュレーション中のステート アクティビティ

説明

Stateflow.SimulationData.State を使用して、シミュレーション中のステートのアクティビティのログを作成します。

作成

  1. Stateflow® エディターで、ステートを選択します。

  2. [シミュレーション] タブの [準備] で、[自己アクティビティのログ] を選択します。あるいは、[プロパティ インスペクター][ログ][自己アクティビティのログ] チェック ボックスを選択します。

プロパティ

すべて展開する

ステートのログ名。文字配列として指定します。既定では、ステートのログ名は階層名で、ピリオド (.) を使用してステートの階層の各レベルを区切っています。より短い名前をステートに割り当てるには、[プロパティ インスペクター] で、[ログ名][カスタム] に設定し、カスタム ログ名を入力します。

データ型: char

ソース ブロックのブロック パス。Simulink.SimulationData.BlockPath (Simulink) オブジェクトとして指定します。

データ型: Simulink.SimulationData.BlockPath

ステート アクティビティ。timeseries オブジェクトとして指定します。データ値はステートがアクティブであるか (1)、または非アクティブであるか (0) を表します。時間値はシミュレーション時間に対応します。

データ型: timeseries

オブジェクト関数

plot (Simulink)シミュレーション データ インスペクターでデータをプロットする

すべて折りたたむ

  1. sf_semantics_hotel_checkin モデルを開きます。

    openExample("sf_semantics_hotel_checkin")

    この例の詳細については、実行時の Stateflow オブジェクトの相互作用を参照してください。

  2. Hotel チャートを開きます。

  3. [シンボル] ペインを開きます。[シミュレーション] タブの [準備] で、[[シンボル] ペイン] をクリックします。

  4. ログを作成する Dining_area ステートを設定します。

    • Stateflow エディターで、Dining_area ステートを選択します。

    • [シミュレーション] タブの [準備] で、[自己アクティビティのログ] を選択します。

      [プロパティ インスペクター][ログ] で、[自己アクティビティのログ] チェック ボックスを選択します。

    • 既定では、このステートのログ名は階層信号名 Check_in.Checked_in.Executive_suite.Dining_area です。より短い名前をステートに割り当てるには、[ログ名][カスタム] に設定し、「Dining Room」と入力します。

  5. Simulink® モデルに戻ります。

  6. モデルのシミュレーションを実行します。シミュレーション開始後に、1 つ目のスイッチを 2 回切り替えてホテルにチェックインし、2 つ目のスイッチを複数回切り替えてルーム サービスを注文します。シミュレーション時に、Stateflow により、ログ データは Simulink.SimulationData.Dataset (Simulink) 信号のログ オブジェクトに保存されます。信号のログ オブジェクトの既定の名前は logsout です。詳細については、信号ログを使用した信号データの保存 (Simulink)を参照してください。

  7. シミュレーションを停止します。

  8. 信号のログ オブジェクトにアクセスするには、MATLAB® コマンド プロンプトで、以下のように入力します。

    logsout
    logsout = 
    
    Simulink.SimulationData.Dataset 'logsout' with 1 element
    
                            Name         BlockPath                        
                            ___________  ________________________________ 
        1  [1x1 State]      Dining Room  sf_semantics_hotel_checkin/Hotel

  9. ログが作成された要素にアクセスするには、get (Simulink) メソッドを使用します。

    diningLog = logsout.get("Dining Room")
    diningLog = 
    
      Stateflow.SimulationData.State
      Package: Stateflow.SimulationData
    
      Properties:
             Name: 'Dining Room'
        BlockPath: [1×1 Simulink.SimulationData.BlockPath]
           Values: [1×1 timeseries]
    

  10. ログ データおよびログが作成された各要素の時間にアクセスするには、Values.Data プロパティと Values.Time プロパティを使用します。たとえば、関数 table を使用して、ログ データを表形式でまとめます。

    T = table(diningLog.Values.Time,diningLog.Values.Data);
    T.Properties.VariableNames = ["Time" "Data"]
    T =
    
      6×2 table
    
           Time       Data
        __________    ____
    
                 0     0  
        1.8607e+06     1  
        1.9653e+06     0  
        1.9653e+06     1  
        1.9653e+06     0  
        2.2912e+06     1  
    

バージョン履歴

R2017b で導入