【Python】最小構成のMBD事例 第2章 その287【AsamMdf⑦】

【Python】最小構成のMBD事例 第2章 その287【AsamMdf⑦】 事例
【Python】最小構成のMBD事例 第2章 その287【AsamMdf⑦】

バックナンバーはこちら。
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等の算術関数が使用可能。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました