バージョン8で,Wavelet Explorerアドオンの機能はWolframシステムに統合された.
ウェーブレットフィルタ
次はWavelet Explorerで利用できるフィルタ,およびバージョン8における同等の形式のリストである.
| HaarFilter[] | WaveletFilterCoefficients[HaarWavelet[]] |
| DaubechiesFilter[n] | WaveletFilterCoefficients[DaubechiesWavelet[n]] |
| LeastAsymmetricFilter[n] | WaveletFilterCoefficients[SymletWavelet[n]] |
| CoifletFilter[n] | WaveletFilterCoefficients[CoifletWavelet[n]] |
| ShannonFilter[lim] | WaveletFilterCoefficients[ShannonWavelet[lim]] |
| MeyerFilter[n,lim] | WaveletFilterCoefficients[MeyerWavelet[n,lim]] |
| SplineFilter[n,lim] | WaveletFilterCoefficients[BattleLemarieWavelet[n,lim]] |
| BiorthogonalSplineFilter[n,m] | WaveletFilterCoefficients[BiorthogonalSplineWavelet[n,m]] |
| HighpassFilter[h] | WaveletFilterCoefficients[wave,"PrimalHighpass"] |
ウェーブレット係数を計算するためには,組込み関数WaveletFilterCoefficientsを使う.
WaveletFilterCoefficients[DaubechiesWavelet[2]]すべてのウェーブレット係数は,Wavelet Explorerからの結果と相対的に
でスケールされる.したがって,同等の値を得るためには,結果を
倍しなければならない.
{#[[1]], Sqrt[2]#[[2]]}& /@ WaveletFilterCoefficients[DaubechiesWavelet[2]]ハイパスフィルタ係数を計算するためには,WaveletFilterCoefficientsに引数"PrimalHighpass"を使う.
WaveletFilterCoefficients[DaubechiesWavelet[2], "PrimalHighpass"]スケーリング関数とウェーブレット関数
次はWavelet Explorerで利用できる関数と,バージョン8における同等の形式のリストである.
| ScalingFunction[filt,j] | WaveletPhi[wave] |
| Wavelet[wave,j] | WaveletPsi[wave] |
| ShannonPhi[t] | WaveletPhi[ShannonWavelet[lim],t] |
| ShannonPsi[t] | WaveletPsi[ShannonWavelet[lim],t] |
| MeyerPhi[n,t,lim] | WaveletPhi[MeyerWavelet[n,lim],t] |
| MeyerPsi[n,t,lim] | WaveletPsi[MeyerWavelet[n,lim],t] |
| SplinePhi[n,t,lim] | WaveletPhi[BattleLemarieWavelet[n,lim],t] |
| SplinePsi[n,t,lim] | WaveletPsi[BattleLemarieWavelet[n,lim],t] |
| BSpline[n,t] | BSplineBasis[{n,{u1,u2,…}},0,t] |
| DScalingFunction[filt,jmax,m] | Dt[WaveletPhi[wave,t],{t,m}] |
| DWavelet[filt,jmax,m] | Dt[WaveletPsi[wave,t],{t,m}] |
ScalingFunctionの機能は,WaveletPhiを使って利用することができる.
Plot[WaveletPhi[DaubechiesWavelet[2], x], {x, 0, 3}]スケール関数の導関数を見付けるためには,DtとWaveletPhiを使う.
Plot[Evaluate[Dt[WaveletPhi[DaubechiesWavelet[6], x], {x, 1}]], {x, 0, 11}, PlotRange -> All]DWaveletの機能はDtとWaveletPsiを使って利用できる.
Plot[Evaluate[Dt[WaveletPsi[SymletWavelet[10], x], {x, 1}]], {x, -9, 10}, PlotRange -> {{-5, 5}, All}]wave = SymletWavelet[10];WaveletPhiおよびWaveletPsiから出力されたInterpolatingFunctionでは,InterpolationOrderが1に設定されている.したがって,第2導関数は0となる.
func = WaveletPsi[wave, x]Plot[Evaluate[Dt[func, {x, 2}]], {x, -9, 10}, PlotRange -> {{-5, 5}, All}]高次のInterpolationOrderで再サンプルし補間することで問題は解決する.
ifunc = ListInterpolation[Table[WaveletPsi[wave, x], {x, -9, 10, 0.01}], {-9, 10}]Plot[Evaluate[Dt[ifunc[x], {x, 2}]], {x, -9, 10}, PlotRange -> {{-5, 5}, All}]BSplineの機能は,組込み関数のBSplineBasisで利用できるようになった.
bspline[n_, t_] := BSplineBasis[{n, Range[-Floor[(n + 1/2)], Ceiling[(n + 1/2)]]}, 0, t]Plot[bspline[6, t], {t, -3, 4},
PlotRange -> All]ウェーブレット変換
次はWavelet Explorerで利用できるウェーブレット変換と,バージョン8における同等の形式のリストである.
| WaveletTransform[data,filt,j] | DiscreteWaveletTransform[data,wave,j] |
| InverseWaveletTransform[wd,filt] | InverseWaveletTransform[dwd] |
| WaveletPacketCoefficients[data,filt,j] | DiscreteWaveletPacketTransform[data,filt,j] |
| WaveletPacketTransform[data,filt,l] | WaveletBestBasis[DiscreteWaveletPacketTransform[…]] |
| InverseWaveletPacketTransform[wpdata,filt] | InverseWaveletTransform[dwd] |
WaveletTransformの機能はDiscreteWaveletTransformで利用できるようになった.
Simplify@DiscreteWaveletTransform[Range[4], WorkingPrecision -> ∞][Automatic]パケット変換を計算するためにはDiscreteWaveletPacketTransformを使う.
dwpt = DiscreteWaveletPacketTransform[Range[8], DaubechiesWavelet[2], 2]逆変換にはInverseWaveletTransformを使う.
InverseWaveletTransform[dwpt]MRDecompositionの機能は,次のようにして復元できる.
dwd = DiscreteWaveletTransform[Range[8]];InverseWaveletTransform[wd, Automatic, #]& /@ wd["BasisIndex"]Total[%]正弦変換と余弦変換
次はWavelet Explorerで利用できる関数と,バージョン8における同等の形式のリストである.
| CosTransform[data,n, BasisType->m] | FourierDCT[data,m] |
| SinTransform[data,n,BasisType->m] | FourierDST[data,m] |
| InverseCosTransform[cdata] | FourierDCT[cdata,m] |
| InverseSinTransform[sdata] | FourierDST[sdata,m] |
SinTransformを計算するためには,組込み関数のFourierDSTを使う.
FourierDST[{Range[8]}, 4]Map[FourierDST[#, 4]&, Partition[Range[8], 2]]一次元のSinPacketCoefficientsの機能は,次のようにして復元できる.
sinPacketCoefficients[data_ ? VectorQ, j_Integer, ftype_Integer ? (1 ≤ # ≤ 4&)] :=
Module[{sdata, l},
(* Split data into octave lengths *)
l = 2^Range[j, 0, -1];
sdata = Rest@FoldList[{id, oct} Flatten[Map[Partition[#, oct]&, id], 1], {data}, l];
(* Map FourierDST over the data *)
Map[FourierDST[#, ftype]&, sdata, {2}]
]sinPacketCoefficients[Range[8], 3, 4]同様にFourierDCT使ってCosPacketCoefficientsを書くことができる.
cosPacketCoefficients[data_ ? VectorQ, j_Integer, ftype_Integer ? (1 ≤ # ≤ 4&)] := Module[{sdata, l},
(* Split data into octave lengths *)
l = 2^Range[j, 0, -1];sdata = Rest[FoldList[Function[{id, oct}, Flatten[(Partition[#1, oct]&) /@ id, 1]], {data}, l]];
(* Split data into octave lengths *)
Map[FourierDCT[#1, ftype]&, sdata, {2}]]cosPacketCoefficients[Range[8], 3, 4]その他のユーティリティ
次はWavelet Explorerで利用できる関数と,バージョン8における同等の形式のリストである.
| PlotCoefficients[wd] | WaveletListPlot[dwd] |
| PhaseSpacePlot[wd] | WaveletScalogram[dwd] |
| ShowBasisPosition[wd] | DiscreteWaveletData[…]["BestBasisBlockView"] |
| PlotCoefficients2D[wd] | WaveletMatrixPlot[dwd] |
| ShowBasisPosition2D[wd] | DiscreteWaveletData[…]["BestBasisBlockView"] |
| WaveletCompress[wd,…] | WaveletThreshold[dwd,tspec] |
ウェーブレット係数をプロットするためにはWaveletScalogramを使う.
dwd = DiscreteWaveletPacketTransform[Table[Sin[x^3], {x, -6, 6, 12 / 1023}], HaarWavelet[], 2]WaveletScalogram[dwd, Frame -> True, FrameTicks -> None, AspectRatio -> 1 / 2]データの圧縮にはWaveletThresholdを使う.
SeedRandom[11];
data = RandomReal[1, {16}];dwd = DiscreteWaveletTransform[Range[8], HaarWavelet[], 3]WaveletThreshold[dwd, {"LargestCoefficients", 4}, Automatic][Automatic, "Values"]関数CumulativeEnergyは次のように書くことができる.
dwd = DiscreteWaveletTransform[Range[8], HaarWavelet[]];cumulativeEnergy[data_] := Accumulate[Reverse[Sort[Abs[Flatten[data]]]]^2]
cumulativeEnergy[data_, n_Integer] := Accumulate[Reverse[Take[Sort[Abs[Flatten[data]]], -n]]^2]cumulativeEnergy[dwd[Automatic, "Values"]]cumulativeEnergy[dwd[Automatic, "Values"], 4]