バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回からPythonによるMDF生成を開始。
import、タイムスタンプ生成、シグナル生成のコードを書いた。
シグナル生成時に物理変換式または係数をconversionに設定するのだが、
このconversionの仕様がやや魔境。
というわけで今回はこのconversionの仕様について掘り下げる。
登場人物
博識フクロウのフクさん
イラスト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
asammdfのSignalのオプション引数conversionとは何者か?
じゃ、Signalのオプション引数であるconversionについて掘り下げていくよー。
そんな魔境を掘り返さなくても・・・。
まぁ何があるか列挙して一個ずつ見て行けばそんなに難しくないから。
結局は物理変換式を入れるものなんでしょ?
その通りなのだけど、
渡すパラメータの構造というか文字列次第で使用される変換ルールが大きく変わる。
変換ルールが変わる?
MDFの物理変換ルール
そうそう。
よって、まずはMDFの物理変換ルールの種類を知る必要がある。
それで列挙して一個ずつ見て行くって言っていたのか・・・。
使い方とか設定の仕方は追々説明するとして
まずは種類を書き出そう。
- no conversion
- linear
- algebraic
- rational
- tabular
- value to text
- tabular with range
- value range to text
そして、asammdf於いての指定方法として共通しているのは辞書型(dictionary)であるってところだね。
あー、Keyとvalueをセットで扱うやつか。
Keyを元に簡単にvalueが検索できちゃったり、連想配列として扱えたり。
こんな感じ。
dict = {
'key1':'value1',
'key2':'value2',
'key3':'value3'
}
正解だ。
では一個ずつ説明して行こう。
no conversion
これはそのまんまかな?
無変換ってことだよね?
その通り。
conversionオプションに対してNoneを指定するとこれになる。
conversion=None
linear
これも名前のまんまだとは思うが・・・。
そう。
名前の通り線形の変換式だ。
具体的には
\(y=ax+b\)
の式で、\(a,b\)の係数を指定するとこの変換式になる。
\(y=2x-0.5\)
としたい場合は以下にすればOKだ。
conversion = {
'a': 2,
'b': -0.5,
}
algebraic
algebraicは・・・直訳すると「代数」ってことだけど・・・。
これは比較的特殊で、代数式を文字列でいれるもの。
今回の\(sin\)、\(cos\)を使用しているのはこのalgebraicだ。
記述方法は以下になる。
conversion = {
'formula': 'sin(X)',
}
‘formula’をKeyとして、代数式を文字列としてValueに置くのか。
入力はXを記載したとことになるっぽいね。
まぁここまでは比較的分かりやすい部分だな。
(ここから魔境が始まるってことか・・・。)
まとめ
まとめだよ。
- asammdfのSignalのオプション引数conversionは物理変換式。
- 大きく8種類存在。
- no conversion。
- 無変換。
- linear。
- 線形変換。
- algebraic。
- 代数変換。
- 文字列で式を表現。
- sin、cos、log、exp等の算術関数が使用可能。
バックナンバーはこちら。
コメント