4

さまざまな主要なナビゲーションおよびローカリゼーション機能に音響を使用する水中ロボットビークルのパフォーマンスをシミュレートするために使用しているMatlab/Simulinkモデルを構築しました。

海の特性は季節や地理的位置によって変化するため、このデータをASCIIデータファイル(行と列で編成されたスペースで区切られたデータ)からモデルに動的にロードしたいと思います。

Simulinkには多数のルックアップテーブルブロックセットがありますが、それらのいずれも「ファイルから読み取る」オプションを直接提供していないようです。テーブルエディタを使用する必要があると、モデルが間違った方向に進むことになります。

おそらくMatlabを使用して、ファイルからブロックセットにデータをロードする別の方法はありますか?

1次元テーブルの場合、Matlabコマンドに似たものを探しています

A = load(filename)
A(:,1)  % for the index
A(:,2)  % for the table values

AKE

4

2 に答える 2

1

私が正しく理解していれば、シミュレーションの過程で動的に更新できるインデックスとテーブル値を持つルックアップテーブルブロックが必要なようです。これは、 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*N2つの出力に分割できます。次に、これら2つの配列をLookup Table Dynamicブロックへの入力に使用できるため、シミュレーションの実行時にファイルからインデックスとテーブルの値を更新できるルックアップテーブルを作成できます。Nxdatydat

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要素のベクトルを取得します。

于 2010-09-29T03:28:56.777 に答える
0

テーブルデータはMATLABワークスペースの変数にすることができ、シミュレーションを実行する前に必要なファイルをロードすることでワークスペースにデータを入力できます。したがって、この例では、変数Aをテーブルデータとして使用できます。

シミュレーションを実行する前に、ワークスペースにデータを入力するためのスタートアップスクリプトを作成します。このスクリプトでは、任意のマットファイルからデータをロードできます。

于 2010-09-29T02:16:33.417 に答える