FFT_func プログラム仕様
FFT_func.py - 関数データの高速フーリエ変換(FFT)および逆高速フーリエ変換(IFFT)を実行するスクリプト。
概要: このスクリプトは、ユーザー定義の関数 func_str に基づいてデータを生成し、 そのデータに対してFFTまたはIFFTを実行し、結果をExcelファイルとして保存し、matplotlibで可視化します。 コマンドライン引数でモード、関数文字列、x範囲、データ点数を指定できます。
詳細説明: - cparams オブジェクトを通じて、計算パラメータ(モード、関数文字列、xの最小値、最大値、データ点数など)を管理します。 - common_func 関数で、指定された関数文字列とx範囲・点数に基づいて入力データ (x, y) を生成します。 - FFT 関数または IFFT 関数が選択されたモードに応じて実行され、それぞれ numpy.fft.fft または numpy.fft.ifft を使用して変換を行います。 - 変換結果はExcelファイルに保存され、元のデータと変換後のデータの両方がグラフとして表示されます。 - tklib ライブラリのユーティリティ関数 (tkApplication, tkParams, getarg など) を利用しています。
関連リンク: FFT_func.py 技術ドキュメント
- spectrum_.FFT_func.FFT()
指定された関数データの高速フーリエ変換 (FFT) を実行し、結果を保存・プロットします。
概要: common_func で生成された入力データ y に対して numpy.fft.fft を適用し、 フーリエ変換された結果を計算します。変換されたデータと元のデータをExcelファイルに保存し、 matplotlibを使用して両者をグラフで可視化します。
詳細説明: 1. common_func を呼び出し、元の x, y データを取得します。 2. numpy.fft.fft を使用して、y のFFTを計算します。 3. FFT後の周波数軸 (xf) を計算します。 4. 変換結果の実部 (Fr) と虚部 (Fi) を抽出し、pd.DataFrame にまとめます。 5. データフレームを fft_func-fft.xlsx というファイル名でExcelに保存します。 6. matplotlib.pyplot を使用して、元のデータ (x vs y) とFFT結果 (xf vs Fr, Fi, Fr) を2つのサブプロットに描画します。 7. グラフのタイトル、ラベル、凡例を設定し、表示後にアプリケーションを終了します。
- spectrum_.FFT_func.IFFT()
指定された関数データの逆高速フーリエ変換 (IFFT) を実行し、結果を保存・プロットします。
概要: common_func で生成された入力データ y に対して numpy.fft.ifft を適用し、 逆フーリエ変換された結果を計算します。変換されたデータと元のデータをExcelファイルに保存し、 matplotlibを使用して両者をグラフで可視化します。
詳細説明: 1. common_func を呼び出し、元の x, y データを取得します。 2. numpy.fft.ifft を使用して、y のIFFTを計算します。 3. IFFT後の周波数軸 (xf) を計算します。 4. 変換結果の実部 (Fr) と虚部 (Fi) を抽出し、pd.DataFrame にまとめます。 5. データフレームを fft_func-ifft.xlsx というファイル名でExcelに保存します。 6. matplotlib.pyplot を使用して、元のデータ (x vs y) とIFFT結果 (xf vs Fr, Fi, Fr) を2つのサブプロットに描画します。 7. グラフのタイトル、ラベル、凡例を設定し、表示後にアプリケーションを終了します。
- spectrum_.FFT_func.common_func()
FFT/IFFT処理の共通前処理として、入力データ (x, y) を生成します。
概要: cparams に設定された範囲 (xmin, xmax) と点数 (nx) に基づいて、 等間隔の x データポイントと、それに対応する func_str から計算された y データポイントを生成します。
- spectrum_.FFT_func.func(x)
グローバルパラメータ cparams.func_str に定義された関数を評価します。
概要: 与えられた x 値に対して、cparams.func_str に文字列として定義された数学関数を計算します。 eval 関数を用いて動的に関数を評価します。
- spectrum_.FFT_func.main()
スクリプトのメイン処理を実行します。
概要: スクリプトの開始点であり、初期設定、コマンドライン引数によるパラメータ更新、 および選択されたモード(FFTまたはIFFT)に応じた処理の呼び出しを行います。
詳細説明: 1. 起動メッセージを表示します。 2. update_vars を呼び出してコマンドライン引数からパラメータを更新します。 3. cparams.print_parameters() を実行して現在のパラメータ設定を表示します。 4. cparams.mode の値に応じて FFT() または IFFT() 関数を呼び出します。 5. 未実装のモードが指定された場合はエラーメッセージを表示し、スクリプトを終了します。
- spectrum_.FFT_func.rand()
random() -> x in the interval [0, 1).
- spectrum_.FFT_func.update_vars(app)
コマンドライン引数からグローバルパラメータ cparams を更新します。
概要: スクリプト実行時に指定されたコマンドライン引数を解析し、 計算に利用する各種パラメータ (mode, func_str, xmin, xmax, nx) を更新します。 引数が指定されていない場合は、cparams のデフォルト値が使用されます。
- パラメータ:
app (tklib.tkapplication.tkApplication) -- tkApplicationのインスタンス。現在この関数では直接使用されていませんが、引数として渡されます。
- spectrum_.FFT_func.usage(app)
スクリプトの利用方法を標準出力に表示します。
概要: スクリプトのコマンドライン引数の正しい使い方を示します。
- パラメータ:
app (tklib.tkapplication.tkApplication) -- tkApplicationのインスタンス。メッセージ表示に使用されます。