ファイル形式—シミュレーション結果ファイル
System Modelerは,さまざまなファイル形式を使う.完全なリストは,System Modelerのファイル形式のページを参照されたい.
シミュレーション結果ファイル
シミュレーション結果ファイル(.mat)は,シミュレーション中に生成される.このファイルはSimulation Centerで読み取られるが,Wolfram言語内からアクセスして,特定の値またはデータ集合を抽出することもできる.
それぞれのシミュレーションの最後に,この指定に従って,シミュレーションの結果がレベル4のMATファイルに保存される.このバイナリファイルは,Aclass, name, description, dataInfo, data_1, ..., data_nという一連の行列として解釈できる構造を持つ.
最初の行列Aclassは,System Modelerによって常にbinNormal形式で保存される.残りの行列の形式は,Aclass行列で与えられる.Aclassドキュメントを参照されたい.
4つの情報行列があり,その後にそれぞれのシミュレーション変数の値を含む1つ以上のデータ行列が続く.それぞれの行列はすべて,この章で詳しく説明する特定の構造のヘッダを持つ.
ヘッダ
それぞれの行列の前には,6つの項目を持つヘッダが来る.最初の5項目には,どのデータがどのように保存されでいるかについての情報が含まれるが,6つ目の項目は,行列の名前である.
タイプ
保存情報を含む整数である.整数がM0PT(Mは千の桁,0は百の桁,Pは十の桁,Tは一の桁)として表される場合:
0 | IEEE Little Endian (PC, 386, 486, DEC Risc) | |
1 | IEEE Big Endian(Macintosh SPARC,Apollo,SGI,HP 9000/300,その他のMotorolaシステム) | |
2 | VAX D-float | |
3 | VAX G-float | |
4 | Cray |
0 | 倍精度(64ビット)の浮動小数点の数 | |
1 | 単精度(32ビット)の浮動小数点の数 | |
2 | 32ビットの符号付き整数 | |
3 | 16ビットの符号付き整数 | |
4 | 16ビットの符号なし整数 | |
5 | 8ビットの符号なし整数 |
保存コマンドによって使われる精度は,各行列のサイズとタイプに依存する.任意の非整数項目を持つ行列と,10,000以下の要素を持つ行列は,実数要素ごとに8バイトを必要とする浮動小数点形式で保存される. すべてが整数の項目で10,000より多い要素を持つ行列は,要素ごとに少ないバイトを必要とする次の形式(以下の表を参照)で保存される.
[0:255] | 1 | |
[0:65535] | 2 | |
[-32767:32767] | 2 | |
[-2^31+1:2^32-1] | 4 | |
other | 8 |
0 | 数値(完全)行列 | |
1 | テキスト行列 | |
2 | 疎行列 |
mrows
ncols
imagf
行列に虚部が含まれるかどうかを指定する整数.0に設定されると,実部データのみが含まれる.1に設定されると,行列には虚部が含まれる.
namlen
行列名の長さ(単位:バイト)に1を足したもの(ヌル終端される)を指定する整数.
name
情報行列
Aclass,name,descriptionの行列は,タイプcharの行列であるが,dataInfoの行列は,タイプint32_tの行列である.それぞれの行列には,シミュレーションと変数についての情報が含まれる.
Aclass
Aclassは,(4,*)のサイズの行列である.列の数は,それらを含む文字列の長さに依存する.この行列から得られる情報は,ファイルの形式(ファイル形式のバージョンと保存形式)およびモデル名である.
--------------------------------------
Atrajectory
1.1
GettingStarted.MultiDomain.DCMotor
binTrans
--------------------------------------
最初の行は常に,必ず含めなければならない文字列Atrajectoryである.2行目は,ファイル形式のバージョンである.第3行は,シミュレーションを行ったモデルの完全名である.4番目で最後の行は,それに続く行列の形式を決定する.
バージョンは,1.1でも1.2でもよい.バージョンが1.2の場合は,5行目に時間ベクトルをデータ行列にどのように保存するうるかを説明する行が加えられる.5行目がtimeDiffの場合は,最初の時間点にはシミュレーションの開始時間を含み,その後の各項目はその前の点からの増加分を含む.5行目がtimeの場合は,各時間項目は,正常に保存された時間の値である.
name
name行列には,状態,変数,パラメータ,定数等を含むファイルの変数名が含まれる. 番目の行には, 番目の変数の名前が含まれる.行の大域的な長さは,すべての文字列の最大の長さに依存する.
--------------------------------------
Time
inductor1.i
inertial.phi
...
...
--------------------------------------
description
この3つ目の行列には,すべての変数についての記述のテキストが含まれる.これは,Modelicaで変数を定義するときに加えることがある文字列に対応する.nVarsが変数の総数である場合には,行列の記述は(nVars,*)のサイズの行列である.
--------------------------------------
Time
Current flowing from pin p to n [A]
Absolute rotation angle of component
...
...
--------------------------------------
dataInfo
4つ目の行列dataInfoは,タイプint32_tで,(nVars,4)のサイズの行列である.ここでnVarsは変数の総数である.行列には,それぞれの変数がデータ行列のどこにどのように保存されているかについての情報が含まれる. 番目の行は, 番目の変数についての記述である.
dataInfo(1,1) = 0は,列の数dataInfo(1,2)がすべてのデータ行列の横座標データ名name(1,*)であることを意味することに注意する.これは通常Timeである.この特別な規則は,この規則がなければ,横座標名が行列nameで繰り返されなければならず,その中の名前は一意的でなくなってしまうため,必要である.
データ行列
シミュレーションには複数の行列を含むことができ,そのそれぞれが特定の名前data_<index>を持つ.ここで<index>は,行列の指標である.データ行列は常にタイプdoubleの行列である.これらの行列についての情報は,関心地の位置と同様,その前の行列dataInfoから抽出することができる.