このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
信号ログ データの表示およびアクセス
記録された信号データは、シミュレーション中はシミュレーション データ インスペクターを使用して、シミュレーションが一時停止または停止している場合は、その他の可視化インターフェイスを使用して表示できます。シミュレーション データの可視化方法の決定を参照してください。
または、MATLAB® コマンドを使用して、プログラムで信号ログ データにアクセスすることもできます。
ヒント
信号ログ記録用のモデルでマークした信号のログ データが表示されない場合、ログ コンフィギュレーションを確認します。信号ログ セレクターを使用して、ログ生成がオーバーライドされている信号のログ生成を有効にします。詳細については、信号ログ コンフィギュレーションの表示と信号ログ設定のオーバーライドを参照してください。
信号のログ オブジェクト
信号ログ データは、MATLAB ワークスペース変数である Simulink.SimulationData.Dataset
オブジェクトに保存されます。信号ログ変数の既定名は、logsout
です。変数名は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [信号のログ] パラメーターの横にあるテキスト ボックスを使用して変更できます。
データセット内の個々の信号のデータで MATLAB の timeseries
と timetable
のどちらの要素を使用するかは、[データセットの信号形式] コンフィギュレーション パラメーターを設定して指定できます。詳細については、データセットの信号形式を参照してください。
R2016a 以前のリリースでも ModelDataLogs
形式をサポートしています。詳細については、Dataset 形式へのデータの変換を参照してください。
特定の要素を Dataset
オブジェクトで検索するには、関数 find
を使用します。Dataset
オブジェクトの要素の名前を返すには、関数 getElementNames
を使用します。
ヒント
指定した各 MATLAB timeseries
オブジェクトについて関数を呼び出すには、関数 Simulink.SimulationData.forEachTimeseries
を使用できます。たとえば、この関数を使用すると、バス信号のログ記録によって取得された timeseries
オブジェクトの構造体の各要素を簡単にリサンプルできます。
プログラムによるデータへのアクセス
Simulink.SimulationData.Dataset
オブジェクトとその要素にアクセスします。
モデル sldemo_clutch
をシミュレートします。これは、回転クラッチ システムをモデル化したものです。その後、信号ログ データが格納された Dataset
オブジェクト sldemo_clutch_output
にアクセスします。モデルの詳細については、クラッチ ロックアップ モデルの作成を参照してください。
sim("sldemo_clutch");
sldemo_clutch_output
sldemo_clutch_output = Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements Name BlockPath ____________ _________________________________ 1 [1x1 Signal] Fn sldemo_clutch/Clutch Pedal 2 [1x1 Signal] Tin sldemo_clutch/Engine Torque 3 [1x1 Signal] LockedFlag sldemo_clutch/Friction Mode Logic 4 [1x1 Signal] LockupFlag sldemo_clutch/Friction Mode Logic 5 [1x1 Signal] UnlockFlag sldemo_clutch/Friction Mode Logic 6 [1x1 Signal] Tfmaxk sldemo_clutch/Friction Model 7 [1x1 Signal] Tfmaxs sldemo_clutch/Friction Model 8 [1x1 Signal] ShaftSpeed sldemo_clutch/Locked 9 [1x1 Signal] EngineSpeed sldemo_clutch/Unlocked 10 [1x1 Signal] VehicleSpeed sldemo_clutch/Unlocked - Use braces { } to access, modify, or add elements using index.
Dataset
オブジェクトの要素へのアクセスには、中かっこを使ったインデックスを使用できます。たとえば、インデックス 2
を使用して信号ログの Dataset
オブジェクトの Tin
要素にアクセスします。
el2 = sldemo_clutch_output{2}
el2 = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'Tin' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 timeseries] Methods, Superclasses
信号データは、Simulink.SimulationData.Signal
オブジェクトの Values
プロパティに timeseries
オブジェクトとして格納されています。時間値は timeseries
オブジェクトの Time
プロパティにあります。信号値は Data
プロパティにあります。
el2.Values
timeseries Common Properties: Name: 'Tin' Time: [387x1 double] TimeInfo: tsdata.timemetadata Data: [387x1 double] DataInfo: tsdata.datametadata
ログ名のスペースと改行の処理
この例では、信号が名前をログ記録する方法を説明する 3 つの信号を示します。
名前にスペースを含む信号
名前に改行を含む信号
名前に改行を含むブロックから発生している名前のない信号
モデルのシミュレーションを行い、変数 logsout
で信号のログ記録の結果を確認します。Dataset
オブジェクト内の名前は、信号名にスペースが含まれている場合はスペースを使用し、名前に改行が含まれている場合は改行を使用していることがわかります。名前のない信号は、名前として空の文字配列をもっています。
logsout
logsout = Simulink.SimulationData.Dataset 'logsout' with 3 elements Name BlockPath ____ ______________________________________ 1 [1x1 Signal] x y ex_signal_names_with_spaces/Sine Wave 2 [1x1 Signal] a b ex_signal_names_with_spaces/Sine Wave1 3 [1x1 Signal] '' ex_signal_names_with_spaces/Sine Wave2 - Use braces { } to access, modify, or add elements using index.
スペースを含む名前をもつ信号には、名前で、またはインデックスでアクセスできます。関数 getElement
に渡す名前にはスペースを含めます。改行を含む名前をもつ信号にアクセスするには、インデックスを使用します。
>> logsout{2}
ans = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'a↵b' PropagatedName: '' BlockPath: [1×1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1×1 timeseries]
ModelDataLogs
形式の信号データのログへのアクセス
R2016a 以前は、ModelDataLogs
形式で信号を記録できました。R2016a 以降は、データを ModelDataLogs
形式で記録することはできません。信号のログ記録では Dataset
形式を使用します。
信号データを [ModelDataLogs]
形式で既にログに記録している場合、関数 convertToDataset
を使用して、信号のログ データを Dataset
形式を使用するように更新できます。詳細については、ModelDataLogs を使用するレガシ コードの移行を参照してください。
参考
get
| find
| getElementNames
| numElements
| setElement
| Simulink.SimulationData.Dataset
| Simulink.SimulationData.Signal
| Simulink.SimulationData.BlockPath
| Simulink.SimulationData.forEachTimeseries