CSV Sweep Bode Plotter

CSVスイープデータ ボード線図プロッター

ここに `monitor.html` からダウンロードしたCSVファイルをドラッグ&ドロップ
【解析の前提条件】
・CSVの1行目はヘッダー(列名)であること
・時刻データは「TIME_MS」列を自動検索して使用します
・データ例をこちらからDLできます → 20260630155820.csv

ゲイン特性 (Gain [dB])

位相特性 (Phase [deg])

📝 本プロッターの解析アルゴリズム解説

このボード線図プロッターは、ノイズの多い実機データから高精度にゲイン・位相特性を抽出するため、単純なピーク比較や時間差測定ではなく、「動的周波数適合型の離散フーリエ変換 (DFT)」を使った数理的アプローチを採用しています。

1. 周波数決定(ゼロクロス周期)

1秒間の時間窓(ウィンドウ)内において、入力信号がマイナスからプラスへ切り替わる「ゼロクロス点」の間隔から、その瞬間の基本周波数 f (freq) を高精度に割り出します。

2. 振幅(ゲイン)と位相の算出(直交基底との内積とノルム)

割り出した周波数 f に合わせて、瞬時値の sin, cos 計算値からなる単位ベクトル(複素平面上の直交基底)を動的に生成します。波形データ全体とこの単位ベクトル列との内積(ドット積)を計算することで、目的の周波数成分のみをピンポイントで射影・抽出します(順方向DFTの特定1次成分の算出に相当)。

  • 振幅 (ノルム): 内積によって得られた cos 成分と sin 成分の平方根(L2ノルム)から、各信号の本質的な振幅エネルギー(U_amp, Y_amp)を算出します。最大値・最小値の単純比較ではないため、局所的なスパイクノイズに極めて頑健です。
  • 位相角: 直交成分の比率から Math.atan2 を用いて複素平面上の位相角(u_phase, y_phase)を決定し、その差分を位相差として評価します。

3. 不連続面(±180degジャンプ)の縦線カット

位相が -180° と +180° の境界を跨いで折り返す(ラップする)際の急激な変化(しきい値 180° 超のジャンプ)をループ処理で検知し、該当ポイントのデータを null に置き換えることで、Chart.jsの描画特性を利用して不要な縦線をきれいに切り離しています。


関連する分野:線形代数 複素関数論 フーリエ解析 制御工学 計算数学/数値解析

Programmed with Gemini