バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はMDFの物理変換ルールのrationalについて説明。
制限付き有理関数で、
\(\displaystyle f(x)=\frac{ax^2+bx+c}{dx^2+ex+f}\)
を構成を前提としてもので6個の係数を指定すればOKな仕様。
今回も引き続きtabularから説明開始。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
MDF conversion仕様 tabular
次のMDF conversion仕様はtabular。
名前的には表形式ってことのようだけど・・・。
これは本当に名前のまんまだね。
いわゆるテーブル変換だ。
1だったら10。
5だったら30。
8だったら60。
に変換みたな感じ?
そうだね。
あとは線形補間を入れる入れないのオプションもあるけど。
線形補間?
tabularの線形補間仕様
MDF conversionのinterpolation仕様といって、
線形補間をする場合”with interpolation仕様“
線形補間をしない場合”without interpolation仕様“
って言ったりもするね。
で、どういう違いがあるの?
さっきの太郎くんの例を元にまず表形式で表現すると以下になると思う。
input value | output value |
---|---|
1 | 10 |
5 | 30 |
8 | 60 |
で、これらをそれぞれ”with interpolation仕様”と”without interpolation仕様”で表現すると以下になる。
“with interpolation仕様”の方は間を補間されるのか!
“without interpolation仕様”の方も良く見ると
変換元の範囲を見てそうだね。
0~3が0。
3~6.5が30。
6.5以上は60。
そうそう。
同じtabularでも補間仕様を使うかどうかで表現が大きく変わってくる。
tabularの指定の仕方
で、AsamMdfでtabularの変換ルールを使うにはどうしたら良いの?
今回のパターンだと以下の書き方だな。
conversion=dict()
conversion['raw_0']=1
conversion['raw_1']=5
conversion['raw_2']=8
conversion['phys_0']=10
conversion['phys_1']=30
conversion['phys_2']=60
さらに、”with interpolation仕様”にしたい場合は以下も追加。
尚、0を入れてはいるけど、‘interpolation’というKeyがあればOKなので、
Value側は何を入れてもOK。
conversion['interpolation']=0
あ、Keyが存在しているかどうかだけで切り替えてるのね。
この仕様はドキュメントとしては載ってなかったからソースコードから調べてきた感じだ。
まぁこの手のライブラリあるあるだねー。
まぁ比較的マイナーな仕様なんで知らなくてもそうそう困ることはないんだけどね。
まとめ
まとめだよ。
- MDF conversion仕様のtabularについて説明。
- 一言で言うとテーブル変換。
- tabularには線形補間に関連する仕様がある。
- with interpolation仕様。
- 指定した点の間を線形補間。
- without interpolation仕様。
- 線形補間はしないが中点を境に変換範囲を推定。
- with interpolation仕様。
バックナンバーはこちら。
コメント