ContinuousWaveletTransform[{x1,x2,…}]
値 xiのリストの連続ウェーブレット変換を与える.
ContinuousWaveletTransform[data,wave]
ウェーブレット wave を使った連続ウェーブレット変換を与える.
ContinuousWaveletTransform[data,wave,{noct,nvoc}]
1オクターブにつき nvoc 音のオクターブを noct 個を使った連続ウェーブレット変換を与える.
ContinuousWaveletTransform[sound,…]
サンプルサウンドの連続ウェーブレット変換を与える.
ContinuousWaveletTransform
ContinuousWaveletTransform[{x1,x2,…}]
値 xiのリストの連続ウェーブレット変換を与える.
ContinuousWaveletTransform[data,wave]
ウェーブレット wave を使った連続ウェーブレット変換を与える.
ContinuousWaveletTransform[data,wave,{noct,nvoc}]
1オクターブにつき nvoc 音のオクターブを noct 個を使った連続ウェーブレット変換を与える.
ContinuousWaveletTransform[sound,…]
サンプルサウンドの連続ウェーブレット変換を与える.
詳細とオプション
- ContinuousWaveletTransformはContinuousWaveletDataオブジェクトを与える.
- ContinuousWaveletData cwd の特性は cwd["prop"]で得ることができる.使用可能な特性のリストは cwd["Properties"]で得られる.
- 結果のウェーブレット係数は入力データと同じ次元の配列である.
- 使用可能なウェーブレット wave
-
MorletWavelet[…] Morletコサイン x ガウスウェーブレット GaborWavelet[…] 複素Morletウェーブレット DGaussianWavelet[…] ガウスウェーブレットの導関数 MexicanHatWavelet[…] ガウスウェーブレットの二次導関数 PaulWavelet[…] Paulウェーブレット - デフォルトの wave はMexicanHatWavelet[]である.
- noct のデフォルト値は
で与えられる.ただし,
は入力の長さである. » - nvoc のデフォルト値は4である.
- 関数
の連続ウェーブレット変換は
で与えられる. - 一様にサンプルされた数列
の連続ウェーブレット変換は
で与えられる. - スケーリングパラメータ
は均等に調律されたスケール
で与えられる.ただし,
はオクターブの数,
は音の数,
は最小ウェーブレットスケールである. - 各スケール
につき,ContinuousWaveletTransformはウェーブレット係数
を計算する. - 使用可能なオプション
-
Padding None データを境界範囲外にどのように延長するか SampleRate Automatic 単位あたりのサンプル WaveletScale Automatic 分割可能な最小スケール 
WorkingPrecision MachinePrecision 内部計算で使用する精度 - Paddingは入力 data を次に大きい2のベキ乗まで充填して境界効果を減少させる.Paddingの設定値はArrayPadで使われる充填引数のそれに等しい.
- InverseContinuousWaveletTransformは逆変換を行う.
例題
すべて開く すべて閉じる例 (2)
MexicanHatWaveletを使って連続ウェーブレット変換を計算する:
cwd = ContinuousWaveletTransform[{56, 40, 8, 24, 48, 48, 40, 16}]ListLinePlot[cwd[All, "Values"]]InverseContinuousWaveletTransform[cwd]サンプルのSoundオブジェクトを変換する:
Play[Underoverscript[∑, n, 5]Sin[2000 2^t n t], {t, 2, 3}]cwd = ContinuousWaveletTransform[%]WaveletScalogram[cwd]スコープ (18)
基本的な用法 (6)
data = Table[HeavisideLambda[x], {x, -2, 2, (4/1023)}];cwt = ContinuousWaveletTransform[data]ListLinePlot[Abs[cwt[{8, _}][[All, 2]]], PlotRange -> All]Normalを使ってすべてのウェーブレット係数を明示的に得る:
cwt = ContinuousWaveletTransform[{0, 0, 1, 0, 0}, MexicanHatWavelet[1]]Normal[cwt]Allを引数として使ってすべての係数を得る:
cwt[All]"IndexMap"を使ってどのウェーブレット係数が使えるかを見る:
cwt = ContinuousWaveletTransform[{0, 0, 1, 0, 0}, MexicanHatWavelet[1]];cwt["IndexMap"]cwt[{1, 1}]cwt[{1, 4}]ウェーブレット指標指定のリストに対応するいくつかの係数配列を抽出する:
cwt[{{1, 1}, {1, 3}}]ウェーブレット指標がパターンにマッチするすべての係数を抽出する:
cwt[{1, _}]cwt[{{_, 1}, {_, 4}}]cwt[{_, 1 | 4}]WaveletScalogramはウェーブレット係数のタイムスケール表現を与える:
data = Table[Sign[Cos[x^2]], {x, -6, 6, (12./1023)}];ListLinePlot[data]cwt = ContinuousWaveletTransform[data];WaveletScalogram[cwt, AxesLabel -> {"time", "scale"}]data = Table[Sin[x^2], {x, 0, 10, 0.02}];{cwt1, cwt2} = Table[ContinuousWaveletTransform[data, DGaussianWavelet[5], {Automatic, voc}], {voc, {4, 16}}];{WaveletScalogram[cwt1, PlotLabel -> "4 voices/octave"], WaveletScalogram[cwt2, PlotLabel -> "16 voices/octave"]}オクターブの数が大きくなるとスケール範囲のスペクトルが広くなる:
data = Function[x, x Sin[Exp[x] x]][Range[2, 5, 0.001]];{cwt1, cwt2} = Table[ContinuousWaveletTransform[data, Automatic, {oct, Automatic}], {oct, {5, 8}}];{WaveletScalogram[cwt1, PlotLabel -> "5 octaves"], WaveletScalogram[cwt2, PlotLabel -> "8 octaves"]}タイムとスケールの特徴 (4)
data1 = Table[Cos[20 π x], {x, 0, 1, (1/1023)}];ListLinePlot[data1]cwt1 = ContinuousWaveletTransform[data1, GaborWavelet[6]];WaveletScalogram[cwt1, ColorFunction -> "SolarColors"]data2 = Table[Cos[20 π x] + Cos[Sqrt[2] 50 π x], {x, 0, 1, (1/1023)}];ListLinePlot[data2]cwt2 = ContinuousWaveletTransform[data2, GaborWavelet[6]];WaveletScalogram[cwt2, ColorFunction -> "SolarColors"]data3 = Block[{fr = 0}, Table[Sin[(fr += 0.5)x], {x, 0, 1, (1/1023)}]];ListLinePlot[data3]cwt2 = ContinuousWaveletTransform[data3, GaborWavelet[6]];WaveletScalogram[cwt2, ColorFunction -> "SolarColors"]data = Table[Sin[4 π t] + 2 Exp[-10^5 ((1/3) - t)^2], {t, 0, 1, (1/511)}];ListLinePlot[data]cwt = ContinuousWaveletTransform[data, PaulWavelet[5], {7, 12}, SampleRate -> 511];WaveletScalogram[cwt, ColorFunction -> "AvocadoColors"]高い周波数は低いオクターブで分解され,低い周波数は高いオクターブで分解される:
data = Table[Piecewise[{{Sin[2 π 10 t], 0 ≤ t < (1/4)}, {Sin[2 π 25 t], (1/4) ≤ t < (1/2)}, {Sin[2 π 50 t], (1/2) ≤ t < (3/4)}, {Sin[2 π 100 t], (3/4) ≤ t ≤ 1}}], {t, 0, 1, (1/1023)}];ListLinePlot[data, AspectRatio -> 0.2]cwd = ContinuousWaveletTransform[data, DGaussianWavelet[5], {Automatic, 12}];WaveletScalogram[cwd, ColorFunction -> "RustTones"]data = Table[Cos[40 π x] Exp[-100 π (x - 0.7)^2] + Cos[140 π x] Exp[-50 π (x - 0.2)^2], {x, 0, 1, (1/1023)}];ListLinePlot[data, PlotRange -> All]GaborWaveletを使って連続ウェーブレット変換を行う:
cwd = ContinuousWaveletTransform[data, GaborWavelet[8], SampleRate -> 1023];freq = (#1[[1]] -> (1023/#1[[2]])&) /@ cwd["Scales"]周波数を20Hzと70Hzに分解する{oct,voc}ペアを求める:
Cases[freq, u_ /; 19 ≤ Last[u] ≤ 21]Cases[freq, u_ /; 69 ≤ Last[u] ≤ 71]WaveletScalogramを使って確認する:
WaveletScalogram[cwd, ColorFunction -> "BrassTones"]ウェーブレット族 (6)
さまざまなウェーブレット族を使ってウェーブレット変換を計算する:
data = Table[Sin[x^2] + Cos[x^3], {x, 0, 3 π, 0.01}];ListLinePlot[data]狭いウェーブレット関数を使うと時間とスケールの分解がうまくいく:
cwt1 = ContinuousWaveletTransform[data, MexicanHatWavelet[1]];WaveletScalogram[cwt1]広いウェーブレット関数では時間とスケールの分解がうまくいかない:
cwt2 = ContinuousWaveletTransform[data, GaborWavelet[3]]WaveletScalogram[cwt2]data = Table[Sign[Cos[x^2]], {x, -6, 6, (12./1023)}];ListLinePlot[data]MexicanHatWavelet(デフォルト):
cwt = ContinuousWaveletTransform[data, MexicanHatWavelet[]];ListPlot3D[Re@cwt[All, "Values"], ColorFunction -> "DarkRainbow", AxesLabel -> {"time", "scale"}, Mesh -> None, PlotRange -> All]data = Table[Sign[Cos[x^2]], {x, -6, 6, (12./1023)}];cwt = ContinuousWaveletTransform[data, DGaussianWavelet[]];ListPlot3D[Re@cwt[All, "Values"], ColorFunction -> "DarkRainbow", AxesLabel -> {"time", "scale"}, Mesh -> None, PlotRange -> All]data = Table[Sign[Cos[x^2]], {x, -6, 6, (12./1023)}];cwt = ContinuousWaveletTransform[data, GaborWavelet[3]];ListPlot3D[Abs@cwt[All, "Values"], ColorFunction -> "DarkRainbow", AxesLabel -> {"time", "scale"}, Mesh -> None, PlotRange -> All]data = Table[Sign[Cos[x^2]], {x, -6, 6, (12./1023)}];cwt = ContinuousWaveletTransform[data, MorletWavelet[]];ListPlot3D[Abs@cwt[All, "Values"], ColorFunction -> "DarkRainbow", AxesLabel -> {"time", "scale"}, Mesh -> None, PlotRange -> All]data = Table[Sign[Cos[x^2]], {x, -6, 6, (12./1023)}];cwt = ContinuousWaveletTransform[data, PaulWavelet[]];ListPlot3D[Abs@cwt[All, "Values"], ColorFunction -> "DarkRainbow", AxesLabel -> {"time", "scale"}, Mesh -> None, PlotRange -> All]サウンド (2)
ContinuousWaveletTransformは入力としてのSoundに使うことができる:
sdata = Play[Sin[5000 t] + Sin[1000 t] + Cos[500 t] + Cos[200 t], {t, 0, 1}]cwt = ContinuousWaveletTransform[sdata, DGaussianWavelet[5]];WaveletScalogram[cwt, ColorFunction -> "StarryNightColors"]ContinuousWaveletTransformを使った音声分析:
snd = ExampleData[{"Sound", "Apollo11ReturnSafely"}]cwd = ContinuousWaveletTransform[snd, GaborWavelet[6], {Automatic, 12}];オレンジ色の部分は「You will return safely to Earth」の単語に対応する:
WaveletScalogram[cwd, {4 | 5 | 6 | 7, _}]cwd2 = WaveletMapIndexed[#1 0.0&, cwd, Except[{5 | 6, _}]]Sound[InverseContinuousWaveletTransform[cwd2], SoundVolume -> 2]オプション (9)
Padding (3)
Paddingの設定値はArrayPadのメソッドのものと同じで"Periodic"を含む:
ArrayPad[{a, b, c}, 4, "Periodic"]ArrayPad[{a, b, c}, 4, "Reversed"]ArrayPad[{a, b, c}, 4, "ReversedNegation"]ArrayPad[{a, b, c}, 4, "Reflected"]ArrayPad[{a, b, c}, 3, "ReflectedDifferences"]ArrayPad[{a, b, c}, 4, "ReversedDifferences"]ArrayPad[{a, b, c}, 3, "Extrapolated"]Paddingはウェーブレット係数の長さには影響しない:
cwd = ContinuousWaveletTransform[Range[16]];(Length[#1]&) /@ cwd[All][[All, 2]]Paddingは入力データを次に大きい2のベキ乗まで充填して境界効果を弱める:
data = Table[Sin[20 x], {x, 0, 1, (1/1023)}];cwt1 = ContinuousWaveletTransform[data, MexicanHatWavelet[4], Padding -> None, WaveletScale -> Automatic];
rdata1 = InverseContinuousWaveletTransform[cwt1];cwt2 = ContinuousWaveletTransform[data, MexicanHatWavelet[4], Padding -> "Reflected", WaveletScale -> Automatic];
rdata2 = InverseContinuousWaveletTransform[cwt2];cwt3 = ContinuousWaveletTransform[data, MexicanHatWavelet[4], Padding -> "Extrapolated", WaveletScale -> Automatic];
rdata3 = InverseContinuousWaveletTransform[cwt3];ListLinePlot[{data[[1 ;; 50]], rdata1[[1 ;; 50]], rdata2[[1 ;; 50]], rdata3[[1 ;; 50]]}, PlotStyle -> {Red, Green, Blue, Orange}, BaseStyle -> Thick]ListLinePlot[{data[[-50 ;; -1]], rdata1[[-50 ;; -1]], rdata2[[-50 ;; -1]], rdata3[[-50 ;; -1]]}, PlotStyle -> {Red, Green, Blue, Orange}, BaseStyle -> Thick]SampleRate (3)
リストの場合,SampleRateのAutomaticの値は1に設定されている:
cwt1 = ContinuousWaveletTransform[Table[Sin[x^2], {x, 0, 1, 0.001}]];cwt1["SampleRate"]cwt2 = ContinuousWaveletTransform[Table[Sin[x^2], {x, 0, 1, 0.001}], SampleRate -> 1000];cwt2["SampleRate"]Soundデータの場合は,SampleRateのAutomaticの値はSoundデータオブジェクトから抽出される:
sdata = Sound[{Play[Sin[1000 t (1 + t^2)], {t, 0, .2}], Play[Sin[500 t (1 + t^3)], {t, 0, .5}]}]cwt = ContinuousWaveletTransform[sdata];cwt["SampleRate"]SampleRateを使ってウェーブレット変換係数が正規化される:
sdata = Sound[{Play[Sin[1000 t (1 + t^2)], {t, 0, .2}], Play[Sin[500 t (1 + t^3)], {t, 0, .5}]}]cwt = ContinuousWaveletTransform[sdata, Automatic, {Automatic, 16}]WaveletScalogram[cwt, ColorFunction -> "BlueGreenYellow"]WaveletScale (1)
WaveletScaleは変換に使われる最小の分解可能スケールを示す:
data = Table[Sin[x^2], {x, 0, 3 π, (3 π/1023)}];ListLinePlot[data]cwt = ContinuousWaveletTransform[data, GaborWavelet[6], WaveletScale -> 1];使われるスケールは
で与えられる.
はウェーブレットスケール,
はオクターブ,
は音である:
{ws, oct, voc} = cwt[{"WaveletScale", "Octaves", "Voices"}];Table[ws 2^j / voc, {j, 1, oct voc}] == cwt["Scales"][[All, 2]]WorkingPrecision (2)
デフォルトでWorkingPrecision->MachinePrecisionが使われる:
data = RandomInteger[1, {10}];cwt1 = ContinuousWaveletTransform[data]cwt2 = ContinuousWaveletTransform[data, WorkingPrecision -> MachinePrecision]cwt1 == cwt2data = RandomInteger[1, {8}];cwt = ContinuousWaveletTransform[data, MexicanHatWavelet[], WorkingPrecision -> 35]cwt[{1, 1}]{Precision[cwt], Accuracy[cwt]}アプリケーション (4)
同一性の特徴 (2)
実際のウェーブレット関数を使って峰や不連続箇所を分離することができる:
data = Table[HeavisideTheta[x], {x, -2, 2, (4/1023)}];ListLinePlot[data]cwt = ContinuousWaveletTransform[data, DGaussianWavelet[4], {Automatic, 12}, Padding -> "Fixed"]WaveletScalogram[cwt]f[t_, ϵ_] := Sqrt[t (1 - t)] Sin[(2 π (1 + ϵ)/t + ϵ)]data = Table[f[t, 0.05], {t, 0, 1, (1/1023)}];ListLinePlot[data]cwt = ContinuousWaveletTransform[data, GaborWavelet[6], {Automatic, 16}]WaveletScalogram[cwt, ColorFunction -> "BlueGreenYellow"]WaveletScalogram[cwt, Automatic, Arg, ColorFunction -> "BlueGreenYellow"]周波数のフィルタ (2)
ContinuousWaveletTransformを使って周波数をフィルタすることができる:
f[x_] := Sin[50 π x] Exp[-100 π (x - 0.5)^2] + (Sin[50 π x] + 2 Cos[140 π x]) Exp[-50 π (x - 0.2)^2] + 2 Sin[150 π x] Exp[-80 π (x - 0.8)^2]data = Table[f[x], {x, 0., 1, (1/2047)}];ListLinePlot[data, PlotRange -> All]cwt = ContinuousWaveletTransform[data, GaborWavelet[6], {10, 16}, Padding -> 0.0, SampleRate -> 2047, WaveletScale -> Automatic];WaveletScalogram[cwt, ColorFunction -> "SolarColors"]vec = ConstantArray[1, Length[data]];
vec[[1 ;; 1000]] := 0.0cwtThresh = WaveletMapIndexed[#1 vec&, cwt, {{4 | 5, _}, {6, u_ /; u < 8}}];WaveletScalogram[cwtThresh, ColorFunction -> "SolarColors"]InverseContinuousWaveletTransformを閾値データオブジェクトに対して実行する:
rdata = InverseContinuousWaveletTransform[cwtThresh];ListLinePlot[{data[[1 ;; 800]], rdata[[1 ;; 800]]}, PlotRange -> All, PlotStyle -> {Blue, {Red, Thick}}]ListLinePlot[rdata, PlotRange -> All]Needs["Music`"]300Hzに相当する平均律に調律された一連のピッチ生成する:
m300 = MusicScale[TemperedChromatic, 300, 1]cwd = ContinuousWaveletTransform[m300, GaborWavelet[6], {7, 8}, SampleRate -> 8192];freq = (#1[[1]] -> (8192/#1[[2]])&) /@ cwd["Scales"];周波数を300Hzに分解する{oct,voc}ペアを求める:
Cases[freq, u_ /; 280 ≤ Last[u] ≤ 320]WaveletScalogram[cwd, {3 | 4 | 5 | 6 | 7, _}]特性と関係 (1)
data = RandomReal[1, {100}];oct = Floor[Log2[(Length[data]/2)]]ContinuousWaveletTransform[data] == ContinuousWaveletTransform[data, Automatic, {oct, Automatic}]ContinuousWaveletTransform[data] == ContinuousWaveletTransform[data, Automatic, {Automatic, 4}]考えられる問題 (1)
data = Cos[(Range[1000]/1000)];入力データの長さに基づき,オクターブのAutomatic設定は8オクターブで分解する:
cwd1 = ContinuousWaveletTransform[data, MorletWavelet[], Automatic]ListLinePlot[{InverseContinuousWaveletTransform[cwd1], data}]cwd2 = ContinuousWaveletTransform[data, MorletWavelet[], {12, Automatic}]ListLinePlot[{InverseContinuousWaveletTransform[cwd2], data}]おもしろい例題 (1)
Zeta関数のスカログラム:
d = Re[Zeta[(1/2) + I Range[0, 100, 0.01]]];ListLinePlot[d]cwd = ContinuousWaveletTransform[d, GaborWavelet[6], {4, 12}, WaveletScale -> 100];{WaveletScalogram[cwd, All, Re, ColorFunction -> "CherryTones"], WaveletScalogram[cwd, All, Abs, ColorFunction -> "CherryTones"]}関連するガイド
-
▪
- ウェーブレット ▪
- 信号変換 ▪
- フーリエ(Fourier)解析 ▪
- 積分変換
テキスト
Wolfram Research (2010), ContinuousWaveletTransform, Wolfram言語関数, https://reference.wolfram.com/language/ref/ContinuousWaveletTransform.html.
CMS
Wolfram Language. 2010. "ContinuousWaveletTransform." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ContinuousWaveletTransform.html.
APA
Wolfram Language. (2010). ContinuousWaveletTransform. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ContinuousWaveletTransform.html
BibTeX
@misc{reference.wolfram_2026_continuouswavelettransform, author="Wolfram Research", title="{ContinuousWaveletTransform}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/ContinuousWaveletTransform.html}", note=[Accessed: 11-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_continuouswavelettransform, organization={Wolfram Research}, title={ContinuousWaveletTransform}, year={2010}, url={https://reference.wolfram.com/language/ref/ContinuousWaveletTransform.html}, note=[Accessed: 11-September-2026]}