関数fift_sequence マニュアル

(The documentation of function fift_sequence)

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)のアルゴリズムを用いて計算する。 結果(時系列データ)を指定した長さの実数値系列として返す。
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 real number series of a specified length.


◆形式(Format)

#include <sequence/fft.h>
inline struct sequence fift_sequence
(struct imsequence spectrum,const int size,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.
size 作成する時系列データのサンプル数。 seq.size以下の自然数を指定する。 フーリエ逆変換後に先頭のsizeサンプルを抽出した時系列データが 返されることになる。 時系列データをフーリエ変換する際に 長さを2の巾乗にするために末尾にダミーの0.0を挿入しているので、 フーリエスペクトルを単に逆変換して時系列データに戻すと ダミーの0.0の文だけ元の時系列データよりも長くなる。 そこで、元の時系列データの長さに戻すためにこの引数が用いられる。
The number of data samples of the time series data to create, which must be a natural number less than or equal to seq.size. After the Fourier inverse transformation, the first size samples are extracted for the return value. This accounts for the dammy zeroes that were appended at the end of the original time series data to make the length a power of 2. Due to the dammy zeroes, simply inverting the Fourier spectrum results in a time series data that may be longer than the original one. To reconstruct the original length, this argument is used.
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)\)をフーリエ逆変換し、先頭のsizeサンプルを取り出した時系列データ。 戻り値のメンバの値は以下のようになる。
A time series data obtained by the Fourier inverse transformation of \(F(f)\) and extracting the first size samples. The values of members of the return value are as below.

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

Value
size 引数sizeの値
The value of argument 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 sequence f_reconstructed=fift_sequence (F,f_original.size,f_original.t0);


◆計算式(Formula)

関数fft_sequenceとの整合が取れるように \[\begin{equation} f_k \equiv f(t_0+k\Delta t) \hspace{1em} (k=0,1,2,\cdots,K-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_sequence, 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.

実際の処理として、この関数内では\(F(f)\)を関数fiftを用いてフーリエ逆変換した上で 先頭のsizeサンプルを取り出して実数値系列に変換している。 フーリエ逆変換本体のアルゴリズムについては関数fift2のマニュアル参照のこと。
The processings of this function are composed of first computing the Fourier inverse transformation of \(F(f)\) using function fift, followed by extracting the first size samples and converting to a real number series. The algorithm of Fourier inverse transformation is described in the documentation of function fift2.