DiscreteTransforms[WaveletCoefficients] - 一般的な直交および双直交ウェーブレットのマスクの計算
|
使い方
|
|
WaveletCoefficients(Wavelet, WaveletParams, options)
|
|
パラメータ
|
|
Wavelet
|
-
|
文字列または名前; サポートされている直交ウェーブレット族の名前
|
WaveletParams
|
-
|
ウェーブレット族 Wavelet のパラメータ
|
options
|
-
|
(オプション) guarddigits = integer の形式の方程式
|
|
|
|
|
説明
|
|
•
|
Wavelet が直交族の場合、WaveletCoefficients(Wavelet, WaveletParams) は 2 つのベクトル (Wavelet 族でパラメータ WaveletParams を持つウェーブレットのハイパスフィルタおよびローパスフィルタ) を返します。
|
•
|
この場合、WaveletParams は通常 1 つの正整数で、大抵はウェーブレットのサイズまたはウェーブレットの積率消滅点の数 (vanishing moments) を表します。
|
•
|
Wavelet が双直交族の場合、WaveletCoefficients(Wavelet, WaveletParams) は 4 つのベクトルを返します。最初の 2 つのベクトルは Wavelet 族でパラメータ WaveletParams を持つウェーブレットのハイパスおよびローパスの分割フィルタで、次の 2 つのベクトルは合成フィルタになります。
|
•
|
この場合、WaveletParams は通常 2 つの数字から成る数列で、大抵はウェーブレットのサイズまたはウェーブレットの積率消滅点の数を表します。
|
•
|
ローパスフィルタは微調整またはスケーリング係数とも呼ばれ、ハイパスフィルタはウェーブレット係数とも呼ばれます。
|
•
|
Digits < evalhf(Digits) の場合の戻り値はすべて datatype=float[8] のベクトルになります。それ以外の場合は Digits 桁数の戻り値が返されます。
|
•
|
WaveletCoefficients はウェーブレット係数および中間結果を格納しているデータベースを可能な限り参照します。ただし、ウェーブレットの計算精度は Digits または guarddigits を変えることで任意に変更できます。
|
•
|
直交族では Daubechies、Symlet、Coiflet および BattleLemarie がサポートされています。
|
•
|
双直交族では BiorthogonalSpline および CDF がサポートされています。ただし、CDFは族ではありません。単独のウェーブレットです。
|
–
|
ウェーブレット族およびパラメータの詳細については、Wavelets を参照してください。
|
•
|
直交ウェーブレットはノルム () が 1 になるように正規化されます。w1 および w2 が直交ウェーブレットのハイパスフィルタおよびローパスフィルタだとすると、
|
add(w1[i]*w1[i+k], i=max(0,-k)..min(rtable_num_elems(w1),rtable_num_elems(w1)-k));
add(w2[i]*w2[i+k], i=max(0,-k)..min(rtable_num_elems(w2),rtable_num_elems(w2)-k));
|
は、k=0 だと (w1 および w2 のノルムが 1 のため) 1 になり、k が偶数だが 0 以外の場合は 0 になります。また、
|
add(w1[i]*w2[i+k], i=max(0,-k)..min(rtable_num_elems(w2),rtable_num_elems(w2)-k));
|
は、k が偶数であればすべての値において 0 になります。w1 および w2 のサイズは常に同じです。
|
•
|
w1 を求めるには w2 を逆にし、1 つおきに要素を否定します。
|
•
|
w1a, w2a, w1s, および w2s がそれぞれ、ハイパスおよびローパスの分割フィルタ、ハイパスおよびローパスの合成フィルタである場合、
|
add(w1a[i]*w1s[i+k], i=max(0,-k)..min(rtable_num_elems(w1),rtable_num_elems(w1)-k));
add(w2a[i]*w2s[i+k], i=max(0,-k)..min(rtable_num_elems(w2),rtable_num_elems(w2)-k));
|
は、k=0 だと 1 になり、k が偶数だが 0 以外の場合は 0 になります。また、
|
add(w1a[i]*w2s[i+k], i=max(0,-k)..min(rtable_num_elems(w1),rtable_num_elems(w1)-k));
add(w2a[i]*w1s[i+k], i=max(0,-k)..min(rtable_num_elems(w2),rtable_num_elems(w2)-k));
|
は、k が偶数であればすべての値において 0 になります。
|
•
|
w1a, w2a, w1s, および w2s の長さを揃える場合には必要に応じて 0 を挿入します。
|
•
|
w1s を求めるには w2a を逆にし、1 つおきに係数を否定します。 w1a から w2s を求める場合も同様です。
|
|
|
オプション
|
|
•
|
guarddigits には任意の正整数を指定できます。guarddigits=d の設定はウェーブレットが Digits+d 桁精度で計算されることを意味します。戻り値は精度 Digits 桁で返されます。
|
•
|
guarddigits のデフォルトは Battle-Lemarie を除くすべてのウェーブレットに対して 20 です。詳細については、Wavelets を参照してください。
|
|
|
例
|
|
>
|
|
| (5.1) |
>
|
|
| (5.2) |
ノルムが1になるように正規化されているため、通常使用される値 ([1,-1] および [1,1]) と異なった出力になっていることにご注意ください。
>
|
|
| (5.3) |
>
|
|
| (5.4) |
>
|
|
| (5.5) |
>
|
|
| (5.6) |
>
|
|
>
|
|
| (5.7) |
>
|
|
| (5.8) |
>
|
|
| (5.9) |
>
|
|
| (5.10) |
|
|