私が正しく理解していれば、シミュレーションの過程で動的に更新できるインデックスとテーブル値を持つルックアップテーブルブロックが必要なようです。これは、 From Fileブロック、Demuxブロック、およびLookupTableDynamicブロックを使用して実行できると思います。次の形式の配列を含む.matファイルがあるとします。
[ time_1 time_2 time_3 ...; %# Time stamps
index1_1 index1_2 index1_3 ...; %# Index 1 for all time stamps
index2_1 index2_2 index2_3 ...; %# Index 2 for all time stamps
...
indexN_1 indexN_2 indexN_3 ...; %# Index N for all time stamps
value1_1 value1_2 value1_3 ...; %# Table value 1 for all time stamps
value2_1 value2_2 value2_3 ...; %# Table value 2 for all time stamps
...
valueN_1 valueN_2 valueN_3 ...] %# Table value N for all time stamps
各列には、タイムスタンプ、N
ルックアップテーブルインデックスのN
要素、およびテーブル値の要素があります。From Fileブロックを使用してロードされると、長さの出力は、 Demuxブロックを使用してそれぞれの長さ(つまり、インデックスとテーブル値)の2*N
2つの出力に分割できます。次に、これら2つの配列をLookup Table Dynamicブロックへの入力に使用できるため、シミュレーションの実行時にファイルからインデックスとテーブルの値を更新できるルックアップテーブルを作成できます。N
xdat
ydat
AKEからのコメントへの回答...
シミュレーション時間の関数としてルックアップテーブルデータを変更したいという印象を受けたため、タイムスタンプは上記の配列に存在します(たとえば、1セットのインデックスとテーブル値を0〜10秒間使用してから、別のセットを使用します) 10〜20秒間)。これを行う場合は、データが変更される時刻を指定する必要があります。
ただし、シミュレーションの開始時にファイルから1セットのテーブルデータのみをロードする場合、.matファイルにはタイムスタンプが0の1つの列のみが必要です。のサンプルデータは、それに応じて簡単に変更できます。A
A = load(yourDataFile); %# Load your data
A = [0; A(:)]; %# Convert it to a column vector and add a time stamp
save(yourMatFile,'A'); %# Save A to a .mat file for the From File block
Demuxブロックに関する懸念事項に関しては、実際にはを指定する必要はありませんN
。2つの出力があることを指定するだけで、入力が半分に分割されます。たとえば、入力が10要素のベクトルで、ブロックに2つの出力が指定されている場合、出力として2つの5要素のベクトルを取得します。