model
.rtw
ファイルでのデータ参照
model
.rtwデータ参照の概要
パラメーターや Constant ブロック I/O に対応するレコードなど、
ファイル内の一部のレコードでは、極めて大きいデータ値ベクトルが組み込まれることがあります。そのようなベクトルが原因で、コード生成時に大きなメモリのオーバーヘッドが生じることがあります。これは、このプロセスの間にメモリにテキストとして値を保持する必要があるからです。 model
.rtw
そのようなオーバーヘッドを回避するために、既定では Simulink® ソフトウェアはデータ値ベクトル全体を
に書き出すことはしません。代わりに、"データ参照" と呼ばれるキーを書き込みます。このキーをコード生成時に使用して Simulink からデータに直接アクセスできます。データがコード生成時に変更されていない場合、データ値を含む実際のコードが書き出されると、そのデータはディスクに効率的にストリームされます。model
.rtw
データ参照の形式は SLData(
です。ここで、index
)
は、参照されているデータを Simulink に指示する数値です。index
GENERATE_FORMATTED_VALUE
などの TLC 命令は、メモリ内に未展開の形式でデータ参照を格納します。生成コードがディスクに書き出されるときに、データ値は実際の値に展開されます。model.rtw
の ModelParameters
レコードに記述されているモデル パラメーターのデータ ベクトルにアクセスするには、関数 LibGetParameterValue
を使用します。
データ参照しきい値の制御
既定では、モデル コンフィギュレーション パラメーター RTWDataReferencesMinSize
に値を指定しなかった場合、コード ジェネレーターは値 -1
をパラメーターに代入します。ここでは、コード ジェネレーターはデータ ベクトルの代わりにモデル パラメーターのデータ参照を model.rtw
ファイルに書き込みます。この最適化により、ファイルの読み取り/書き込み操作が削減され、コード生成時間が短縮されます。RTWDataReferencesMinSize
パラメーターに正の値を指定すると、コード ジェネレーターは、データ ベクトルの代わりにデータ参照を model.rtw
ファイルに書き込む際に基準とするしきい値サイズとしてその値を使用します。
ファイルにそのまま配置できるベクトルの最大長を変更するには、以下を使用します。
set_param(0, 'RTWDataReferencesMinSize', maxlen)
Simulink では、
の作成時に model
.rtwmaxlen
以上の長さのベクトルがデータ参照に置き換えられます。maxlen
は整数または inf
として指定します。inf
を指定すると、データ参照は無効になります。その場合、各ベクトルの完全な値セットは、どれだけ長くても、
にそのまま配置され、コード生成中にテキスト メモリを占有することになります。model
.rtw
明示的な
の設定は、現在の MATLAB® セッションでのみ有効です。セッションをまたいで値を設定するには、maxlen
startup.m
ファイルに set_param
コマンドを含めるか、MATLAB の起動時におけるコマンドの実行を自動化します。
データ参照の展開
オプションの 3 番目の expand
引数を指定した組み込み関数 GENERATE_FORMATTED_VALUE
を使用して、データ参照を明示的に展開できます。FEVAL
などのコマンドにより、データ参照が完全な形式に展開されることがあります。
データ参照の展開の回避
データ参照を完全にオフにするか、TLC で選択したパラメーターを展開すると、コード生成プロセス時に大きなテキスト メモリ オーバーヘッドが生じることがあります。ほとんどの一般的なコード生成タスクでは、展開されたデータ ベクトルをメモリに保持してオーバーヘッド コストを増加させる必要はありません。代替手段が利用できない場合を除いて、データ ベクトルの展開は回避してください。
コード生成の再開
データ参照を含む
ファイルを分離して使用してカスタム コード生成プロセスを再開することはできません。含まれているデータ参照は、コード生成プロセスが完了すると古くなります。このファイルのみを使用してコード生成プロセスを開始しようとすると、予測不能な動作やメモリ セグメンテーション違反が生じることがあります。model
.rtw