このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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 ブロックの名前を指定します。その他のプロパティは、モデルのシミュレーション中にログが作成される信号データを含むオブジェクトを参照します。オブジェクトは、以下のオブジェクトのタイプのインスタンスである可能性があります。
モデルのデータ ログのコンテナー
サブシステムのデータ ログのコンテナー
mux またはバス信号以外の信号のデータ ログ
mux またはバス信号のデータ ログ
プロパティの名前は、ログが作成されているデータを以下のように識別します。
信号データ ログの場合は信号名
サブシステムまたはモデルのコンテナーの場合はそれぞれサブシステムまたはモデルの名前
たとえば、以下のモデルについて考察します。
テストポイント アイコンによって示されるように、このモデルは、Simulink® がルート システムの step
と scope
という名前の信号、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
オブジェクトに格納されます。
バス信号の階層は、信号データのログに保持されます。バーチャル バス内の信号のログ名には、ソース信号の名前が使用されます。非バーチャル バス内の信号のログ名には、該当するバス オブジェクトの名前が使用されるので、ソース信号の名前とは異なることがあります。これらの機能の詳細は、合成インターフェイスを参照してください。
参考
Dataset 形式へのログ データの変換, レガシ ModelDataLogs API を使用するスクリプトの移行, Simulink.SubsysDataLogs
, Simulink.Timeseries
, Simulink.TsArray
, who
, whos
, unpack
バージョン履歴
R2006a より前に導入