Main Content

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

Simulink.ModelDataLogs

モデルの信号データ ログのコンテナー

説明

メモ

ModelDataLogs クラスは、下位互換のためにサポートされています。R2016a 以降は、データを [ModelDataLogs] 形式で記録することはできません。信号ログでは、[データセット] 形式が使用されます。R2016a 以降では、ModelDataLogs 形式を使用していた前のリリースのモデルのシミュレーションを行うと、そのモデルは Dataset 形式を使用してデータをログ記録します。

ModelDataLogs の信号ログ データは Dataset 形式に変換できます。[Dataset] 形式に変換すると、同様に [Dataset] 形式を使用できる他のログ記録されたデータ (ログ記録された状態など) との事後処理が容易になります。詳細については、Dataset 形式へのログ データの変換を参照してください。

ModelDataLogs を使用するレガシ コードがある場合、コードまたはモデルに対する更新が必要な状況が生じる可能性があります。スクリプトの更新の詳細については、レガシ ModelDataLogs API を使用するスクリプトの移行を参照してください。

R2016a より前のリリースでは、[コンフィギュレーション パラメーター][データのインポート/エクスポート][信号のログ形式][ModelDataLogs] に設定すると、データのログ記録により、ログ記録されたデータを含む 1 つ以上の Simulink.ModelDataLogs オブジェクトが生成されます。ログ記録によって、最上位モデルと、ログ記録される信号を含む最上位モデルによって参照される各モデルに対して、このクラスのインスタンスが作成されます。最上位モデルの ModelDataLogs オブジェクトがベース ワークスペース内の変数に割り当てられます。変数の名前は、[コンフィギュレーション パラメーター][データのインポート/エクスポート][信号のログ名] パラメーターで指定されます。既定値は logsout です。

ModelDataLogs オブジェクトは、可変数個のプロパティをもちます。Name という最初のプロパティは、オブジェクトが含む信号データをもつモデルの名前を指定します。あるいは、そのモデルが参照モデルの場合、モデルを参照する Model ブロックの名前を指定します。その他のプロパティは、モデルのシミュレーション中にログが作成される信号データを含むオブジェクトを参照します。オブジェクトは、以下のオブジェクトのタイプのインスタンスである可能性があります。

プロパティの名前は、ログが作成されているデータを以下のように識別します。

  • 信号データ ログの場合は信号名

  • サブシステムまたはモデルのコンテナーの場合はそれぞれサブシステムまたはモデルの名前

たとえば、以下のモデルについて考察します。

テストポイント アイコンによって示されるように、このモデルは、Simulink® がルート システムの stepscope という名前の信号、Delayed Out という名前のサブシステムの clk という名前の信号のログを作成することを指定します。R2016a より前のリリースでこのモデルをシミュレートした後は、MATLAB® ワークスペースには次の変数が含まれています。

Simulink.ModelDataLogs (siglgex):
  Name                   elements  Simulink Class

  scope                     2      TsArray
  step                      1      Timeseries
  ('Delayed Out')           2      SubsysDataLogs

完全修飾オブジェクト名または Simulink unpack コマンドを使用して信号データにアクセスできます。たとえば、logsout オブジェクトの Delayed Out サブシステムにある clk 信号の振幅にアクセスするには、以下を入力します。

data = logsout.('Delayed Out').clk.Data;

または

>> logsout.unpack('all');
>> data = clk.Data;

ModelDataLogs 形式で保存した信号データのログにアクセス

Simulink.ModelDataLogs オブジェクトには、特定のモデル要素の信号ログ情報を取得する信号データ オブジェクトが含まれます。

モデル要素信号データ オブジェクト
最上位モデルまたは参照モデルSimulink.ModelDataLogs
モデル内のサブシステムSimulink.SubsysDataLogs
バス信号または Mux 信号以外の信号Simulink.Timeseries
バス信号または Mux 信号Simulink.TsArray

ログ名のスペースと改行の処理

次の場合、データ ログの信号名にはスペースや改行が含まれる場合があります。

  • 信号に名前が付けられていて、その名前にスペースまたは改行文字が含まれている。

  • 信号に名前は付けられていないが、名前にスペースまたは改行文字を含むブロックから信号が発生している。

  • 信号がサブシステムまたは参照モデル内に存在し、サブシステム、Model ブロックまたは上位ブロックの名前にスペースまたは改行文字が含まれている。

次のモデルは、名前にスペースを含んでいる信号、名前に改行を含んでいる信号および名前に改行を含んでいるブロックから発生する名前のない信号を示したものです。

次の例は、モデルで信号ログ形式として ModelDataLogs を使用する場合にログ名のスペースや改行を取り扱う方法を示しています。

logsout
logsout =
 
Simulink.ModelDataLogs (model_name):
  Name                   Elements  Simulink Class

  ('x y')                   1      Timeseries
  ('a
b')                   1      Timeseries
  ('SL_Sine
Wave1')         1      Timeseries

TAB の名前補完機能を使用したり、MATLAB に名前を入力して、このログの Simulink.Timeseries オブジェクトにアクセスすることはできません。MATLAB パーサーが、各名前のスペースまたは改行を識別子間の区切り文字として認識するため、この構文は認識されません。次に例を示します。

logsout.x y
??? logsout.x y
              |
Error: Unexpected MATLAB expression.

名前にスペースが含まれる Simulink.Timeseries オブジェクトを参照するには、スペースを含む要素を一重引用符で囲みます。

logsout.('x y')
       Name: 'x y'
     BlockPath: 'model_name/Sine'
     PortIndex: 1
    SignalName: 'x y'
    ParentName: 'x y'
      TimeInfo: [1x1 Simulink.TimeInfo]
          Time: [51x1 double]
          Data: [51x1 double]

名前に改行が含まれる Simulink.Timeseries オブジェクトを参照するには、連結して改行を含む要素を構成します。

cr=sprintf('\n')
logsout.(['a' cr 'b'])

データ ログ内のスペースまたは改行が次の項目の名前に由来している場合も同じ手法を使用できます。

  • 名前のないログ信号の発生元ブロック

  • ログ信号を含むサブシステムまたは Model ブロック

  • モデルの階層構造内でそのブロックより上位にあるブロック

このコードは、信号のログ データを参照できます。

logsout.(['SL_Sine' cr 'Wave1'])

複数のスペースまたは改行、あるいはその両方を含む名前の場合は、必要に応じて 2 つの手法を繰り返し組み合わせて使用して、目的の名前を MATLAB に指定します。

バス信号

ModelDataLogs 形式では、各バス信号データのログが別々の Simulink.TsArray オブジェクトに格納されます。

バス信号の階層は、信号データのログに保持されます。バーチャル バス内の信号のログ名には、ソース信号の名前が使用されます。非バーチャル バス内の信号のログ名には、該当するバス オブジェクトの名前が使用されるので、ソース信号の名前とは異なることがあります。これらの機能の詳細は、合成信号を参照してください。

R2006a より前に導入