FFT_smoothing プログラム仕様

FFT_smoothing.py: 高速フーリエ変換 (FFT) およびFFT平滑化ツール。

概要: 入力データに対して高速フーリエ変換 (FFT)、逆高速フーリエ変換 (IFFT)、またはFFTを利用した平滑化処理を実行するスクリプト。

詳細説明: このスクリプトは、指定された入力ファイルから時系列データを読み込み、 ユーザーが選択したモード(FFT、IFFT、またはFFT平滑化)に基づいて処理を行います。 処理されたデータは、元のデータと比較可能な形でExcelファイルに保存され、 さらにmatplotlibを用いてグラフとして可視化されます。 FFT平滑化モードでは、指定された周波数範囲(kcut0からkcut1)外の成分を除去することで、 データのノイズを除去し、より滑らかな曲線を得ることができます。

関連リンク: FFT_smoothing.py 技術ドキュメント

spectrum_.FFT_smoothing.FFT()

入力データに対して高速フーリエ変換 (FFT) を実行し、結果をプロット・保存します。

概要: common_func で準備された時系列データに対して高速フーリエ変換 (FFT) を適用し、その結果を可視化・保存します。

詳細説明: NumPyの np.fft.fft を用いて、入力データ y のFFTを計算します。 FFT後のX軸(周波数軸)データも計算されます。 FFT結果の実部と虚部を抽出し、元のデータ、FFT結果と共にPandas DataFrameにまとめます。 このDataFrameは指定されたテンプレート形式でExcelファイルに出力されます。 最後に、元のデータとFFT結果の実部・虚部をmatplotlibでグラフ表示し、ユーザーが結果を確認できるようにします。

戻り値:

None

spectrum_.FFT_smoothing.FFT_smoothing()

入力データに対してFFT平滑化を適用し、結果をプロット・保存します。

概要: common_func で準備された時系列データに対してFFT平滑化処理を適用し、その結果を可視化・保存します。

詳細説明: まず、入力データ y に対して高速フーリエ変換 (FFT) を実行します。 次に、cparams.kcut0 から cparams.kcut1 で指定された周波数範囲外のFFT成分をゼロに設定することで、 フィルタリングされたスペクトルを生成します。 このフィルタリングされたスペクトルに対して逆高速フーリエ変換 (IFFT) を実行することで、 ノイズが除去された平滑化データ fs が得られます。 元のデータ、FFT結果、フィルタリングされたFFT結果、平滑化されたデータの実部・虚部・絶対値が Pandas DataFrameにまとめられ、指定されたテンプレート形式でExcelファイルに出力されます。 最終的に、元のデータと平滑化されたデータ、FFT結果とフィルタリング後のFFT結果を 複数のサブプロットにわたってグラフ表示し、処理前後の変化を視覚的に確認できるようにします。

戻り値:

None

spectrum_.FFT_smoothing.IFFT()

入力データに対して逆高速フーリエ変換 (IFFT) を実行し、結果をプロット・保存します。

概要: common_func で準備された時系列データに対して逆高速フーリエ変換 (IFFT) を適用し、その結果を可視化・保存します。

詳細説明: NumPyの np.fft.ifft を用いて、入力データ y の逆FFTを計算します。 IFFT後のX軸(逆周波数軸)データも計算されます。 IFFT結果の実部と虚部を抽出し、元のデータ、IFFT結果と共にPandas DataFrameにまとめます。 このDataFrameは指定されたテンプレート形式でExcelファイルに出力されます。 最後に、元のデータとIFFT結果の実部・虚部をmatplotlibでグラフ表示し、ユーザーが結果を確認できるようにします。

戻り値:

None

spectrum_.FFT_smoothing.common_func()

データの読み込み、範囲指定、初期設定を行う共通関数。

概要: 指定された入力ファイルからデータを読み込み、X軸とY軸のデータを抽出し、計算対象範囲でフィルタリングします。

詳細説明: この関数は、cparams.infile からデータを読み込み、cparams.xlabelcparams.ylabel に基づいて X軸とY軸のデータを特定します。cparams.xmincparams.xmax の設定に従い、 計算対象となるデータのX軸範囲をフィルタリングします。 フィルタリングされたデータの数、開始値、ステップ幅など、後続のFFT処理に必要な情報を準備して返します。 X軸またはY軸の指定が不適切な場合は、スクリプトを終了します。

戻り値:

tuple: 以下の要素を含むタプル。 - label_x (str): X軸のラベル。 - _x (list[float]): フィルタリング前の全てのX軸データ。 - label_y (str): Y軸のラベル。 - _y (list[float]): フィルタリング前の全てのY軸データ。 - n (int): フィルタリング後のデータ点の数。 - x0 (float): フィルタリング後のX軸データの開始値(通常は x[0])。 - xstep (float): フィルタリング後のX軸データのステップ幅。

戻り値の型:

tuple[str, list[float], str, list[float], int, float, float]

spectrum_.FFT_smoothing.main()

スクリプトのエントリーポイント。

概要: スクリプトの実行開始時に呼び出され、コマンドライン引数を解析し、適切なFFT関連関数を呼び出します。

詳細説明: update_vars 関数を呼び出して、コマンドライン引数からグローバルパラメータ cparams を更新します。 その後、cparams.mode の値に基づいて、FFT_smoothingFFTIFFT のいずれかの関数を実行します。 もし cparams.mode に未実装のモードが指定された場合は、エラーメッセージを表示してスクリプトを終了します。

戻り値:

None

spectrum_.FFT_smoothing.update_vars(app)

コマンドライン引数からパラメータを更新します。

概要: sys.argv を解析し、cparams グローバルオブジェクトの各フィールドを更新します。

詳細説明: 引数が不足している場合は app.terminate を呼び出してスクリプトを終了します。 ファイルパス、X/Y軸の指定、X軸の計算範囲、FFTカットオフ周波数などが更新されます。 また、Excel出力用のテンプレートファイル名も設定されます。

パラメータ:

app (tkApplication) -- tkApplicationオブジェクト。アプリケーションの終了処理に使用されます。

戻り値:

None

spectrum_.FFT_smoothing.usage(app)

スクリプトの利用方法を表示します。

概要: この関数は、スクリプトが正しく実行されなかった場合や、 必要な引数が不足している場合に、標準出力に利用方法のメッセージを表示します。

パラメータ:

app (tkApplication) -- tkApplicationオブジェクト。アプリケーションの終了処理に使用されます。

戻り値:

None