フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
【Python】最小構成のMBD事例 第2章 その297【AsamMdf⑰】
MDF validatorで作成したMDFの構造を確認。 DataGroup、ChannelGroupは想定通りの構成。 物理変換式もMDFに埋まっているので、同じく確認。 linear、algebraicを確認。 パラメータや式文字列が埋まっていることも確認。
【Python】最小構成のMBD事例 第2章 その296【AsamMdf⑯】
MDFの全体構造を作るにはMDFクラスのインスタンス(MDFモジュール)が必要。 MDFモジュールにDataGroupを登録することでMDFとしてのデータ構造が完成する。 データ構造が完成しているMDFモジュールのsaveメソッドを呼び出すことで保存可能。 上書きオプションがあるのでお好みで利用。
【Python】最小構成のMBD事例 第2章 その295【AsamMdf⑮】
前回までだとシグナルが存在しているだけでMDFのデータ構造にはなっていない。 今回はDataGroupに各種シグナルを登録することでMDFのデータ構造と同等の形となる。 DataGroupの下位にChannelGroupがあるが、AsamMdfとしてはSorted想定のため複数登録はできなそう。
【Python】最小構成のMBD事例 第2章 その294【AsamMdf⑭】
シグナル生成の10msサンプリングと100msサンプリングの部分のコード作成。 10msサンプリングの方に複雑さが寄ってる状態。 各種物理値変換式のパターンを入れ込んでいるため。 100msサンプリングはDataGroupを複数にするために入れている。
【Python】最小構成のMBD事例 第2章 その293【AsamMdf⑬】
MDFの各種物理変換仕様をやったので、折角なのでそれらもMDF生成実験に組み込む。 具体的には以下の変換パターンを構成に追加。 tabular。 tabular with interpolation。 value to text。 tabular with range。 value range to text。
【Python】最小構成のMBD事例 第2章 その292【AsamMdf⑫】
MDF conversion仕様 value range to textを説明。 value to textの入力側が範囲指定できる。 value to textとtabular with rangeを合わせたような仕様。 tabular with rangeの出力側のphys_がtext_になった感じ。
【Python】最小構成のMBD事例 第2章 その291【AsamMdf⑪】
MDF conversion仕様 tabular with rangeについて説明。tabular仕様とにているが、入力側をレンジ指定できる。tabular with range仕様ではdefault caseの値設定が必須。レンジ外の場合はこの値が採用される。この部分がtabular仕様の振る舞いとの大きな差。
【Python】最小構成のMBD事例 第2章 その290【AsamMdf⑩】
MDF conversion仕様 value to textについて説明。 利用シーンとしては状態名の表示。 シフトなどが代表的。 AsamMdfでのvalue to textの設定方法について説明。 辞書型に対してval_、text_のテーブルを設定。 指定外の数値だとdefault caseになる。
【Python】最小構成のMBD事例 第2章 その289【AsamMdf⑨】
MDF conversion仕様のtabularについて説明。 一言で言うとテーブル変換。 tabularには線形補間に関連する仕様がある。 with interpolation仕様。 指定した点の間を線形補間。 without interpolation仕様。 線形補間はしないが中点を境に変換範囲を推定。
【Python】最小構成のMBD事例 第2章 その288【AsamMdf⑧】
MDFのrationalの変換式は制限付き有理関数。 有理関数はxの多項式が分母分子に来るもの。 MDFの場合は分母分子が2次までの有理関数を想定している。 rationalには有理関数の6個の係数を指定するだけでOK。 P1~P6をKeyとして、それぞれの係数をValueと置く。
【Python】最小構成のMBD事例 第2章 その287【AsamMdf⑦】
asammdfのSignalのオプション引数conversionは物理変換式。 大きく8種類存在。 no conversion。 無変換。 linear。 線形変換。 algebraic。 代数変換。 文字列で式を表現。 sin、cos、log、exp等の算術関数が使用可能。
【Python】最小構成のMBD事例 第2章 その286【AsamMdf⑥】
今回からPythonによるMDF生成を開始。 まずはimport asammdfモジュールのMDFとSignal。 疑似データ生成用にnumpyも。 numpyでタイムスタンプ生成。 シグナルを生成。 信号、タイムスタンプを引数にして生成。 これ以外のオプションもあるがconversionが魔境。
【Python】最小構成のMBD事例 第2章 その285【AsamMdf⑤】
生成するMDFの方針としては複数のDG、特殊な物理値変換を入れる。 上記を元にMDF構成を決めた。 DG2つ、CN3つ&それぞれに物理値変換式を含む。 AsamMdfによるMDF生成手順を確認。 最初にシグナルを作っておいてその後にMDFのデータ構造を作って行って最後にファイル保存。
【Python】最小構成のMBD事例 第2章 その284【AsamMdf④】
AsamMdf付属Viewerで読み込ませてみるのはASAM MDF仕様と同梱されてるサンプルMDF。 仕様を取得できない場合は、ASAM公式サイトから入手することも可能。 実際にMDFを読み込ませてみた。 波形表示だけでなく、詳細データ表示も可能。 サンプルMDFはCANape、INCAが出力したもの。
【Python】最小構成のMBD事例 第2章 その283【AsamMdf③】
AsamMdfのインストール方法は簡単なパターンだとpipとcondaの2種類。 pipの場合、付属Viewerが必要な場合はasammdf[gui]を指定する必要がある。 AsamMdf付属のViewerはPython環境直下のscriptフォルダにインストールされる。 OS管理側は特に汚さない。
【Python】最小構成のMBD事例 第2章 その282【AsamMdf②】
AsamMdfの基本機能を確認。 公式サイトで説明はされている。 基本機能と未対応機能を列挙。 今回使用する範囲の機能は問題無し。 念のためMDF生成実験の時に使用する機能をもうらできるようなデータ構造を考えておく必要はある。 複数のDG/CG。 CGに複数のCN。 比較的特殊な物理値変換式。
【Python】最小構成のMBD事例 第2章 その281【AsamMdf①】
PythonパッケージにAsamMdfというものがあり、これを使えば簡単にMDFを作成できそう。 Viewerも付属している。 今後の方針を打ち出した。 基本機能確認 インストール。 View実験。 MDF生成。 他のツール(CANape)で作成したMDFを読めるか実験。 仮想HILS組み込み。
【ASAM】最小構成のMBD事例 第2章 その280【MDF⑨】
ODSとMDFの計測データの格納状態の違いに起因する問題。 MDFのレコードを走査する仕様はODS側にある。 unsorted MDFの場合、ODSのレコード走査仕様は使えない。 よって、自動車業界としてはsorted MDF推奨の流れ。 さらにMDF仕様がversion UPしてODS都合の仕様になる可能性もある。
【ASAM】最小構成のMBD事例 第2章 その279【MDF⑧】
ODSとMDFの具体的な問題に突入。 計測結果の再現性ポリシーが違う。 MDFはECUに生値を入れたい動機がある。 計測データのレートの取り方が違う。 ODSは一定サンプリング、MDFは可変サンプリング。 計測データの格納状態が違う。 ODSはチャンネル別、MDFはCG単位のレコード。
【ASAM】最小構成のMBD事例 第2章 その278【MDF⑦】
ASAM OSDが育ってきた文化について説明。 車両のNVH(Noise、Vibration、Harshness)評価を想定したもの。 ベンダー的にはあまりMDFは使用しない。 ASAM MDFが育ってきた文化について説明。 ベンダーが積極的にMDF利用。 標準化の認識が日本人的には強烈なギャップあり。
【ASAM】最小構成のMBD事例 第2章 その277【MDF⑥】
MDF仕様単体以外の有用性としてASAM ODSとの連携がある。 ASAM OSDはテスト自動化にあたり、表現の曖昧性に課題とした仕様。 ざっくり言うと「テスト管理のパラメータの標準化」。 ASAM OSDの中のMEASURMENTS領域とDIMENSION&UNIT領域がMDFと関係する。
【ASAM】最小構成のMBD事例 第2章 その276【MDF⑤】
MDFの有用性についての話に突入。 計測生値以外の情報も格納されている。 物理値変換式。 単位。 異なるファイルとの同期を取り易い構造になっている。 複数のDGを読み取る機能があれば、異なるMDF間でも同様の処理になるため、結果的に同期が取れるビューワになることが多い。 動画への参照も可能。
【ASAM】最小構成のMBD事例 第2章 その275【MDF④】
MDFのDGに含まれるCGの数によってunsorted MDFとsorted MDFに分けられる。 unsorted MDFが複数CG、sorted MDFが単一のCG。 Version3は無条件でunsorted MDF相当になる。 Vector MDF ValidatorでMDFの内部構造を参照できる。
【ASAM】最小構成のMBD事例 第2章 その274【MDF③】
今回はMDFを利用することを目的としているのでMDFの細かい仕様は把握する必要はない。 ただ、ポリシーや存在するデータなどは把握しておいた方が良い。 MDF DT内のレコードについて説明。 レコードという単位で格納されている。 このレコードがCGと紐づいた情報。 よって、CGの数だけレコードが混在することになる。
【ASAM】最小構成のMBD事例 第2章 その273【MDF②】
MDFの説明はVersion4のみとする。 ASAM仕様として公開されてるので妥当な判断。 MDFのデータ構造について説明。 基本はASAM公式サイトのMDFで説明されている。 それだけだととっかかりが無さ過ぎるので、簡単に説明する。 MDF内部はHD,DG,CG,CN,DTがツリー構造を取っている。
【ASAM】最小構成のMBD事例 第2章 その272【MDF①】
Python環境下の仮想HILSで収録データが無いことが問題に。さらに収録データフォーマットはMDFが望ましいらしい。MDFはASAMで規定されてる標準仕様。ただしVersion4がASAM仕様で、それより以前のVersionは非ASAM。Version3,Version4のどちらかについて解説していく方向にしたい。
【CANoe】最小構成のMBD事例 第2章 その271【仮想ECU連携⑧】
CANoe仮想HILS、AUTOSAR-XCP仮想ECUの実験構成を再確認 上記の動作確認実施。 かなりキレイな波形が取れている。 CANoe環境であれば1msオーダーの応答性が確保可能。 Python環境、CANoe環境を検証プロセスに含めると確保難な設備利用の回数を減らす効果が期待できる。
【CANoe】最小構成のMBD事例 第2章 その270【仮想ECU連携⑦】
バックナンバーはこちら。はじめに前回、AUTOSAR-XCP側こと仮想ECUもちょっとだけ修正が必要なことが判明。修正しなくても動作はするが、CANoe側が1ms駆動になっているので仮想ECU側も1ms駆動に変更したい。というのがおおよその
【CANoe】最小構成のMBD事例 第2章 その269【仮想ECU連携⑥】
AUTOSAR-XCP側こと仮想ECUもちょっとだけ修正が必要。 修正しなくても動くがCANoe側が1ms駆動なので仮想ECU側も1ms駆動にしたい。 修正は以下。 PID制御器の処理周期を1ms化。 PID制御器の演算用の想定処理周期パラメータを1ms化。
【CANoe】最小構成のMBD事例 第2章 その268【仮想ECU連携⑤】
ネットワークノード(Controller)に追加するXCP DAQ/STIM関連のCAPLコード開示。 CAPLのCAN送信/受信の機能を使って、無理やりXCPを実現。 on message 2でDAQ受信を実現、stimでSTIM送信を実現。 同時にシグナル単位の単位変換も行っている。
【CANoe】最小構成のMBD事例 第2章 その267【仮想ECU連携④】
CANoeテストノードに記載するXCPセットアップ関連のCAPLコード開示。 ネットワークノードはイベントドリブン型、テストノードはシーケンシャル型とやや性格が違う。 といっても、テストノードでもCAN送信/受信イベントは受け取れるので気にするほどの差ではない。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
動画作成関連のバックナンバー用ページ。立ち絵を作ったり、動画作ったり、アイキャッチ画像作ったりなどを掲載していく。
MATLAB,Python,Scilab,Julia比較するシリーズの第4章。第4章では分類問題で最終的にはニューラルネットワークや最適化アルゴリズムの話だった。第5章はフーリエ解析学から高速フーリエの話がメインとなる。
立ち絵の配置: PSDファイルをAviUtlに配置し、画面サイズやフレームレートを設定。のっぺらぼう化: 目と口を消して、アニメーション効果を追加。アニメーション効果: 目パチと口パクの設定を行い、リップシンクを調整。
フーリエ変換を定義。フーリエの積分公式の一部を抜き出す。逆フーリエ変換を定義。フーリエの積分公式にフーリエ変換を代入するだけ。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。区分求積法とリーマン積分について。フーリエの積分公式を導出した。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。さらにそこに加えて、AivisSpeechのアイコン画像を...
PSDToolKitプラグインの導入の仕方を説明。PSDファイルを探してGIMPで内容を確認。GIMPで瞬き用、口パク用のレイヤー編集。
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
区分求積法とリーマン積分について。離散と連続の分け目。フーリエの積分公式を導出した。演算したはずなのに変化しない。つまり変換、逆変換が成立することを示している。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。よって、一般的な表現に書き換える必要がある。
角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。ω=nπ/Lを使用して変換するだけ。これにより少し数式がシンプルになった。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。ほぼ独自に作成したが、Anneliの画像自体はAivisS...
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。変換を想定した式に変換。複素指数関数との積と積分、総和を経由すると元に関数に戻るというイメージが重要。
AviUtlのセットアップと拡張編集Pluginの導入を行った。mp4ファイルの入力と出力の方法を説明。アニメーションgifの対応方法を説明。
分数は割り算の別表現として理解しやすく、逆数を掛けることで計算が簡単になる。これにより、小数の掛け算や割り算の理解が深まる。一次関数の数式をグラフにすることや、グラフから数式を導くことは、データのトレンド分析や物理現象の理解に役立つ。微分は関数の変化率を求める手法であり、数値微分を使って近似的に求めることができる。これにより、物理学や経済学など多くの分野で応用可能。
Youtube動画やブログ記事のアイキャッチ用に作成した、VOCEIVX(四国めたん、ずんだもん、春日部つむぎ)、AivisSpeech(Anneli)の画像たち。Stable Diffusionで生成&少しペン入れ&GIMPによる補正したものになります。
各種フーリエについてまとめてみた。いままでは級数→係数の順番でやっていたため、逆フーリエ変換→フーリエ変換の順番が自然。実際には「フーリエの積分公式を求める」ことになるが、これは逆フーリエ変換そのものである。
各種フーリエについてまとめてみた。いままでは級数→係数の順番でやっていたため、逆フーリエ変換→フーリエ変換の順番が自然。実際には「フーリエの積分公式を求める」ことになるが、これは逆フーリエ変換そのものである。
最適化アルゴリズム モーメンタムを用いて分類の学習をPythonで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をMATLABで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
モーメンタムを確認するプログラムの方針を確認。 以前の勾配降下法のプログラムをベースにする。 隠れ層のユニット数は4。 プログラムのフローを確認。 モーメンタム項とパラメータ更新が基本的な差分となる。
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 モーメンタムの動作イメージについて確認。 最初は大きく更新して、最適解が近いと小さく更新。 勾配降下法で言うところの学習率が可変と同義な動きになる。
勾配降下法の更新式を確認。 勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。
最適化アルゴリズムを取り扱う。 今回のネットワークだとさほど恩恵はないが知っていて損はない。 まずはモーメンタムから解説&実験をしていく。 最初は復習を兼ねて勾配降下法についても確認する。
モーメンタムを確認するプログラムの方針を確認。 以前の勾配降下法のプログラムをベースにする。 隠れ層のユニット数は4。 プログラムのフローを確認。 モーメンタム項とパラメータ更新が基本的な差分となる。
モーメンタムの動作イメージについて確認。 動作イメージの表現は難しい。 最初は大きく更新して、最適解が近いと小さく更新。 勾配降下法で言うところの学習率が可変と同義な動きになる。
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 実際の指数移動平均とは異なっているので、その点は注意。
勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。
今回改めてまじめに更新式を確認。 勾配降下法の更新式が一番シンプルなので今後の最適化アルゴリズムの更新式を見る際は比較対象になりやすい。
最適化アルゴリズムを取り扱う。 今回のネットワークだとさほど恩恵はないが知っていて損はない。 まずはモーメンタムから解説&実験をしてい 最初は復習を兼ねて勾配降下法についても確認する。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたJuliaコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたScilabコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたPythonコードで分類を実施。 大きく2パターンの分類パタ やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたMATLABコードで分類を実施。 大きく2パターンの分類パターン やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたJuliaコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたScilabコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたPythonコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたMATLABコードで分類を実施。 大きく2パターンの分類パターンがある やや複雑な分類パターンが4ユニットにすることで出てきたもの。