関数fift マニュアル

(The documentation of function fift)

Last Update: 2021/12/7


◆機能・用途(Purpose)

フーリエスペクトル\(F(f)\)の逆変換 \[\begin{equation} f(t) \equiv \int_{-\infty}^{\infty} F(f) e^{-2\pi ift}df \label{eq.continuous.definition} \end{equation}\] を高速フーリエ変換(FFT)のアルゴリズムを用いて計算する。 結果(時系列データ)を長さが2の巾乗の複素数値系列として返す。
Compute the Fourier inverse transformation (\ref{eq.continuous.definition}) of a spectrum \(F(f)\) using the fast Fourier transformation (FFT) algorithm, and return the result (a time series data) as a complex number series of a length which is a power of 2.


◆形式(Format)

#include <sequence/fft.h>
inline struct imsequence fift(struct imsequence seq,const double t0)


◆引数(Arguments)

seq フーリエスペクトル\(F(f)\)を表す構造体。 高周波側の半分は低周波側の折り返しの複素共役でなければならない。 またメンバsizeは2の巾乗、メンバt0は0.0でなければならない。
A structure which represents the Fourier spectrum \(F(t)\). The upper half frequency components must be the complex conjugates of the lower half with the reversed order. Members size and t0 must be a power of 2 and 0.0, respectively.
t0 逆変換して得られる時系列データの先頭時刻。 時系列データをフーリエ変換する際に先頭時刻\(t_0\)の情報が失われるので、 逆変換によって完全に元の時系列データに戻すには \(t_0\)の値をスペクトルとは別に与える必要がある。
The beginning time of the transformed time series data. As the beginning time \(t_0\) of a time series data is lost by Fourier transformation, the value of \(t_0\) must be given in addition to the spectrum to completely reconstruct the original time series data by the inverse transformation.


◆戻り値(Return value)

\(F(f)\)をフーリエ逆変換して得られる時系列データ。 戻り値のメンバの値は以下のようになる。
A time series data obtained by the Fourier inverse transformation of \(F(f)\). The values of members of the return value are as below.

戻り値のメンバ
Member of the return value

Value
size seq.size
t0 引数t0の値
The value of argument t0
dt (\ref{eq.dt.definition})式の\(\Delta t\)
\(\Delta t\) of eq. (\ref{eq.dt.definition})
各\(k\)に対するvalue[k]
value[k] for each \(k\)
(\ref{eq.discrete.definition})式の\(f_k\)
\(f_k\) of eq. (\ref{eq.discrete.definition})

ここで、(\ref{eq.discrete.definition})式の記号と 引数の対応関係は以下のようになる。
Here, relations between symbols in eq. (\ref{eq.discrete.definition}) and arguments are given as below.



◆使用例(Example)

struct sequence f_original;
struct imsequence F=fft_sequence(f);
struct imsequence f_reconstructed=fift(F,f_original.t0);


◆補足(Additional notes)

この関数の戻り値の時系列データは複素数値系列(struct imsequence型構造体)であり、 長さも2の巾乗のままである。 戻り値の時系列データを実数値系列(struct sequence型構造体)に直して 末尾の不要な部分をカットして必要な長さにする処理まで一括で行う関数として fift_sequenceを別途用意している。 したがってユーザとして逆変換を行うには通常は関数fift_sequenceを用いれば良い。 この関数(fift)は関数fift_sequenceの内部で用いられており、 ユーザが直接用いるための関数というよりは 関数fift_sequence内部で間接的に用いるための関数という位置づけである。
The return value (time series data) of this function is a complex number series (struct imsequence-type structure), with the length of a power of 2. There is another, more convenient function fift_sequence, which converts the time series data to a real number series (struct sequence-type structure) and cut unnecesary parts at the end to make the time series a desired length. Therefore users can usually use the function fift_sequence. This function (fift) is used internally within the function fift_sequence. The main assumed role of this function (fift) is this internal call, rather than being directly used by the users.


◆計算式(Formula)

関数fftとの整合が取れるように \[\begin{equation} f_k \equiv f(t_0+k\Delta t) \hspace{1em} (k=0,1,2,\cdots,2^N-1) \label{eq.discretize.t} \end{equation}\] \[\begin{equation} F_n \equiv F(n\Delta f) \label{eq.discretize.f} \end{equation}\] \[\begin{equation} \Delta t \equiv \frac{1}{2^N \Delta f} \label{eq.dt.definition} \end{equation}\] と離散化して積分(\ref{eq.continuous.definition})を和で近似すれば \[\begin{eqnarray} f_k &=& \sum_{n=0}^{2^N-1} F_n e^{-2\pi i n\Delta f (t_0+k\Delta t)} \Delta f \nonumber \\ &=& \Delta f \sum_{n=0}^{2^N-1} F_n e^{-2\pi i n \Delta f t_0} e^{-2\pi ink\Delta f \Delta t} \nonumber \\ &=& \Delta f \sum_{n=0}^{2^N-1} F_n e^{-2\pi i n \Delta f t_0} e^{-\frac{2\pi ink}{2^N}} \label{eq.discrete.definition} \end{eqnarray}\] を得る。 この関数ではこの(\ref{eq.discrete.definition})式で与えられる変換を実行する。
To be consistent with function fft, the time series data and the Fourier spectrum are discretized as eqs. (\ref{eq.discretize.t})-(\ref{eq.dt.definition}). Approximating the integral in eq. (\ref{eq.continuous.definition}) by a summation results in eq. (\ref{eq.discrete.definition}). A conversion given by this equation is computed by this function.

計算方法の詳細については関数fift2のマニュアル参照。
For more detail of the computation method, see documentation of function fift2.


◆補足(Additional remarks)

フーリエ逆変換の定義式において積分の前に\(\frac{1}{2\pi}\)が付くのは 積分変数が角周波数\(\omega\)の場合である。 この関数では積分変数に周波数\(f\)を用いているので \(\frac{1}{2\pi}\)は現れない。
The factor \(\frac{1}{2\pi}\) before the integration in the definition of the Fourier inverse transformation appears when the integral is performed for the angular frequency \(\omega\). As this function uses the frequency \(f\) for the integral, \(\frac{1}{2\pi}\) does not appear.