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 モデルを開きます。

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

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

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

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

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

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

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

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

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

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

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

    logsout = out.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 を使用して、ログ データを表形式でまとめます。

    Tbl = table(diningLog.Values.Time,diningLog.Values.Data);
    Tbl.Properties.VariableNames = {'Time','Data'}
    Tbl =
    
      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 で導入