sequence/wavelet.h マニュアル

(The documentation of sequence/wavelet.h)

Last Update: 2022/1/26


sequence/wavelet.hでは 時系列データのwavelet変換を行う関数が定義されている。 このヘッダファイル内で定義されている関数を以下に示す。 各関数の詳細は関数名をクリックしてリンク先を参照のこと。
Functions to perform the wavelet transformation of a time series data are defeind in sequence/wavelet.h. Functions defined in this header file are listed below. For details of individual functions, click the links.

このヘッダファイルで用いている数式については 表の下に載せているので参照のこと。
Mathematical formulas used in this header file are available below the table.

関数名
Function name
機能・用途
Purpose
morlet_spectrum
【マニュアル改訂中につき非公開】
[Documentation is not open as it is under revision]
Morlet wavelet (以下の(\ref{eq.Morlet})式)の フーリエ変換を計算する。
Compute the Fourier transformation of a Morlet wavelet (eq. \ref{eq.Morlet} below).
wavelet_transform_morlet
【マニュアル改訂中につき非公開】
[Documentation is not open as it is under revision]
Morlet waveletをテンプレート関数として用いて 時系列データのwavelet変換を行う。
Perform the wavelet transformation of a time series data using the Morlet wavelet as a template function.


◆wavelet変換について (The wavelet transformation)

波形\(x(t)\)のwavelet変換は基準時刻\(t_{ref}\)および時間幅\(\tau\)の関数として 以下の式で定義される(e.g., Lapins et al., 2020)。 \[\begin{equation} T(t_{ref},\tau)\equiv \int_{-\infty}^{\infty}x(t)\psi^{*}\left(\frac{t-t_{ref}}{\tau}\right)dt \label{eq.transform.definition} \end{equation}\] ここで\(\psi(t)\)は解析者が指定する関数であり、テンプレート関数と呼ばれる。 また\(^{*}\)は複素共役を表す。
The wavelet transformation of a waveform \(x(t)\), as a function of a reference time \(t_{ref}\) and a width of time \(\tau\), is defined by eq. (\ref{eq.transform.definition}). Here, \(\psi(t)\) is a function specified by the analyzer and is called a template function, and \(^{*}\) denotes a complex conjugate.

\(\psi(t)\)は2条件 \[\begin{equation} \int_{-\infty}^{\infty}\left|\psi(t)\right|^2dt<\infty \label{eq.psi.finite} \end{equation}\] \[\begin{equation} \int_{-\infty}^{\infty}\psi(t)dt=0 \label{eq.psi.zero_average} \end{equation}\] を満たさなければならない。 (\ref{eq.psi.finite})式は\(t\rightarrow\pm\infty\)で \(\psi(t)\rightarrow 0\)となることを、 (\ref{eq.psi.zero_average})式は\(\psi(t)\)の平均が0であることを表している。 \(\psi(t)\)の具体的な関数形の代表的なものにMorlet wavelet \[\begin{equation} \psi(t) =\pi^{-1/4}\left[\exp\left(-2\pi if_{ref} t\right) -\exp\left(-2\pi^2 f_{ref}^2\right)\right] \exp\left(-\frac{t^2}{2}\right) \label{eq.Morlet} \end{equation}\] がある(Lapins et al., 2020)。 ここで\(f_{ref}\)は解析者が与える定数である。
The function \(\psi(t)\) must satisfy eqs (\ref{eq.psi.finite}) and (\ref{eq.psi.zero_average}), which mean that \(\psi(t)\) approaches to zero for \(t\rightarrow\pm\infty\) and the average of \(\psi(t)\) is zero, respectively. One of the common choices for \(\psi(t)\) is a a Morlet wavelet (eq. \ref{eq.Morlet}) (Lapins et al., 2020), where \(f_{ref}\) is a constant given by the analyzer.


◆wavelet変換の計算 (Computation of the wavelet transformation)

wavelet変換の計算は周波数領域で行うのが効率が良い(Lapins et al., 2020)。 \(x(t)\), \(\psi(t)\)のフーリエ変換をそれぞれ \[\begin{equation} X(f)\equiv\int_{-\infty}^{\infty}x(t)e^{2\pi ift}dt \label{eq.x.fourier} \end{equation}\] \[\begin{equation} \Psi(f)\equiv\int_{-\infty}^{\infty}\psi(t)e^{2\pi ift}dt \label{eq.psi.fourier} \end{equation}\] とおく。ここではfft.hに合わせて\(e^{+2\pi ift}\)を用いた。 フーリエ逆変換は \[\begin{equation} x(t)=\int_{-\infty}^{\infty}X(f)e^{-2\pi ift}df \label{eq.X.inv_fourier} \end{equation}\] \[\begin{equation} \psi(t)=\int_{-\infty}^{\infty}\Psi(f)e^{-2\pi ift}df \label{eq.Psi.inv_fourier} \end{equation}\] である。また(\ref{eq.psi.fourier})の両辺の複素共役を取ると \[\begin{equation} \Psi^{*}(f)=\int_{-\infty}^{\infty}\psi^{*}(t)e^{-2\pi ift}dt \label{eq.psi.fourier.conjugate} \end{equation}\] である。これらを用いると(\ref{eq.transform.definition})式は \[\begin{eqnarray} T(t_{ref},\tau) &=& \int_{-\infty}^{\infty}dt x(t) \psi^{*}\left(\frac{t-t_{ref}}{\tau}\right) \nonumber \\ &=& \int_{-\infty}^{\infty}dt \int_{-\infty}^{\infty}df X(f)e^{-2\pi ift} \psi^{*}\left(\frac{t-t_{ref}}{\tau}\right) \nonumber \\ &=& \int_{-\infty}^{\infty}df X(f) \int_{-\infty}^{\infty}dt \psi^{*}\left(\frac{t-t_{ref}}{\tau}\right)e^{-2\pi ift} \nonumber \\ &=& \int_{-\infty}^{\infty}df X(f) \int_{-\infty}^{\infty}\tau dt’ \psi^{*}(t’)e^{-2\pi if(t_{ref}+\tau t’)} \nonumber \\ &=& \tau \int_{-\infty}^{\infty}df X(f) e^{-2\pi ift_{ref}} \int_{-\infty}^{\infty}dt’ \psi^{*}(t’)e^{-2\pi if\tau t’} \nonumber \\ &=& \tau \int_{-\infty}^{\infty}df X(f) e^{-2\pi ift_{ref}} \Psi^{*}(f\tau) \nonumber \\ &=& \tau \int_{-\infty}^{\infty} X(f) \Psi^{*}(f\tau) e^{-2\pi ift_{ref}} df \label{eq.transform.freq_domain} \end{eqnarray}\] と書き直せる。ここで3行目から4行目への変形では \[\begin{equation} t’\equiv \frac{t-t_{ref}}{\tau}, \hspace{1em} t=t_{ref}+\tau t’, \hspace{1em} dt=\tau dt’ \label{eq.t_dash} \end{equation}\] の変数変換を用いた。
The wavelet transformation can be computed more efficiently in the frequency domain than the time domain (Lapins et al., 2020). Let the Fourier transformations of \(x(t)\) and \(\psi(t)\) be \(X(f)\) (eq. \ref{eq.x.fourier}) and \(\Psi(f)\) (eq. \ref{eq.psi.fourier}), respectively. Here, \(e^{+2\pi ift}\) is used following fft.h. The corresponding Fourier inverse transformations are given by eqs (\ref{eq.X.inv_fourier}) and (\ref{eq.Psi.inv_fourier}). Taking the complex conjugates of the both hand sides of eq. (\ref{eq.psi.fourier}) results in (\ref{eq.psi.fourier.conjugate}). Using these equations, eq. (\ref{eq.transform.definition}) can be rewritten as (\ref{eq.transform.freq_domain}), where the 4-th line is based on a conversion of variable given by eq. (\ref{eq.t_dash}).

(\ref{eq.transform.freq_domain})式を用いると wavelet変換は以下の手順で計算できる。
Using eq. (\ref{eq.transform.freq_domain}), the wavelet transformation can be computed by the following procedure:
  1. 波形\(x(t)\)をフーリエ変換して\(X(f)\)を求める。 これは\(t_{ref}\), \(\tau\)によらず1度だけ行えば良い。
    perform a Fourier transformation of the waveform \(x(t)\) to get \(X(f)\), which must be done only once as the transformation is independent of \(t_{ref}\) and \(\tau\);
  2. 各\(\tau\)について\(\Psi^{*}(f\tau)\)を求める。 \(\psi(t)\)は解析者が指定する(既知の)関数であるので、 多くの場合\(\Psi^{*}(f\tau)\)も解析的に書き下すことができ、 その関数形に\(f\tau\)の具体的な値を代入するだけで良い。
    calculate \(\Psi^{*}(f\tau)\) for each \(\tau\), which can in many cases be done by simply inserting \(f\tau\) values into an analytical formula of \(\Psi^{*}(f\tau)\), since \(\psi(t)\) is a function given by the analyzer (i.e., a known function); and
  3. \(\Psi^{*}(f\tau)\)に\(X(f)\)を掛けてフーリエ逆変換し、 その結果を\(\tau\)倍する。 これによって得られる時系列は現在の\(\tau\)における \(T(t_{ref},\tau)\)そのもの(\(t_{ref}\)を引数とする時系列) であることが(\ref{eq.transform.freq_domain})式から分かる。
    multiply \(\Psi^{*}(f\tau)\) with \(X(f)\), perform the Fourier inverse transformation to it, and multiply the result with \(\tau\), the result of which is just the wavelet transformation \(T(t_{ref},\tau)\) for the current value of \(\tau\) (represented as a time series with respect to \(t_{ref}\)) according to eq. (\ref{eq.transform.freq_domain}).


◆参考文献 (References)

Lapins, S., et al. (2020), An examination of the continuous wavelet transform for volcano-seismic spectral analysis, JVGR, 389, 106728