interpolate_fft プログラム仕様

FFTを用いた周期関数の補間を実行するスクリプト。

概要:

このスクリプトは、入力ファイルから読み込んだ、または内部で生成したデータに対して、 高速フーリエ変換(FFT)を使用して周期関数の補間を行います。 補間されたデータと元のデータ、必要であれば厳密な関数をプロットして比較します。

詳細説明:

スクリプトは以下のいずれかの方法で入力データを取得します。 1. コマンドライン引数またはデフォルトで指定されたExcelファイルからデータを読み込みます。

do_mirror フラグがTrueの場合、読み込んだデータはミラーリングされて拡張されます。

  1. Excelファイルが指定されていない、または "generate" が指定された場合、 periodic_function で定義されたサンプルデータが生成されます。

取得したデータはFFTによって周波数領域に変換され、 指定された補間係数に基づいてパディングされた後、逆FFTによって時間領域に戻されます。 これにより、元のデータ点よりも密な補間データが生成されます。 最終的に、元のデータ、補間されたデータ、および生成された場合は厳密な関数のプロットが表示されます。

関連リンク:

interpolate_fft_usage

Quantum.interpolate_fft.main()
概要:

FFTを用いた周期関数の補間処理全体を制御し、結果を可視化します。

詳細説明:

この関数は、まずコマンドライン引数またはデフォルト設定から補間パラメータを初期化します。 次に、指定されたExcelファイルからデータを読み込むか、 periodic_function を使用してサンプルデータを生成します。 取得したデータに対して高速フーリエ変換 (FFT) を適用し、周波数領域でゼロパディングを行います。 その後、逆FFTを実行して補間された時間領域のデータを生成します。 最後に、元のデータ、補間されたデータ、および厳密な関数(存在する場合)をmatplotlibを用いてプロットし、 結果を可視化します。

Quantum.interpolate_fft.periodic_function(k)
概要:

特定の周期関数を計算します。

詳細説明:

入力値 k に基づいて、数式 -cos(2πk) * (1 + 5k^2) を評価し、その結果を返します。 この関数は、周期的なデータ生成のためのサンプルとして使用されます。

引数:
param k:

関数を評価する入力値。numpy.ndarray または float で指定します。

type k:

numpy.ndarray or float

戻り値:
returns:

関数の計算結果。入力 k と同じ型(numpy.ndarray または float)で返されます。

rtype:

numpy.ndarray or float

Quantum.interpolate_fft.read_data(infile, do_mirror=False)
概要:

指定されたExcelファイルからx-yデータを読み込みます。

詳細説明:

与えられた Excel ファイル (infile) から、最初の2列のデータをxとyとして読み込みます。 読み込まれたデータは NaN 値を除去されます。 do_mirror が True の場合、読み込んだデータはy軸に対してミラーリングされ、元のデータの前に結合されます。 これにより、データセットが周期性を維持したまま拡張されます。

引数:
param infile:

読み込むExcelファイルのパス。

type infile:

str

param do_mirror:

データをミラーリングして拡張するかどうかを示すフラグ。Trueの場合、データがミラーリングされます。

type do_mirror:

bool

戻り値:
returns:

xデータとyデータのリストのタプル。エラーが発生した場合は空のリストのタプル。

rtype:

tuple of list

例外:
raises Exception:

Excelファイルの読み込み中にエラーが発生した場合にコンソールにエラーメッセージを出力します。