HilbertFilter[data,ωc]
カットオフ周波数 ωcのヒルベルト(Hilbert)フィルタをデータ配列に適用する.
HilbertFilter[data,ωc,n]
長さ n のフィルタカーネルを使う.
HilbertFilter[data,ωc,n,wfun]
平滑化窓 wfun をフィルタカーネルに適用する.
HilbertFilter
HilbertFilter[data,ωc]
カットオフ周波数 ωcのヒルベルト(Hilbert)フィルタをデータ配列に適用する.
HilbertFilter[data,ωc,n]
長さ n のフィルタカーネルを使う.
HilbertFilter[data,ωc,n,wfun]
平滑化窓 wfun をフィルタカーネルに適用する.
詳細とオプション
- HilbertFilterは,一般に,90度の位相シフトを信号に適用するために使われる,有限インパルス応答(finite-impulse response,FIR)離散時間フィルタである.
- data は次のいずれでもよい.
-
list 任意階数の数値配列 tseries TimeSeriesやTemporalDataのような時間データ image 任意のImageオブジェクトまたはImage3Dオブジェクト audio AudioオブジェクトまたはSoundオブジェクト video Videoオブジェクト - カットオフ周波数 ωcでのデータの平滑化は信号ノイズの評価における感受性を減ずる.平滑化量はカットオフ周波数 ωcの値に依存する.
- カットオフ周波数 ωcは0から
まででなければならない.ωcの値が小さいほど滑らかになる. - 画像や多次元配列に適用された場合,フィルタリングはレベル1から始めて各次元に連続的に適用される.HilbertFilter[data,{ωc1,ωc2,…}]は
次元で周波数 ωciを使う. - HilbertFilter[data,ωc]はカットオフ周波数 ωcと入力 data に適したフィルタカーネル長と平滑化窓を使う.
- よく使われる平滑化窓 wfun
-
BlackmanWindow Blackman窓で平滑化する DirichletWindow 平滑化は行わない HammingWindow ハミング窓で平滑化する {v1,v2,…} 値 viの窓を使う f
から
の範囲で f をサンプリングすることで窓を作る - 使用可能なオプション
-
Padding "Fixed" 使用する充填値 SampleRate Automatic 入力に想定されるサンプルレート - デフォルトで,データと同様画像にもSampleRate->1が想定される.サンプルレート r のサンプル sound オブジェクトについては,SampleRate->r が使われる.
- SampleRate->r の場合,カットオフ周波数 ωcは 0から r×
まででなければならない.
例題
すべて開く すべて閉じる例 (2)
スコープ (10)
データ (7)
data = BoxMatrix[5, {41}];
ListLinePlot[{data, HilbertFilter[data, 1]}, PlotRange -> All]data = Table[UnitBox[(n/7), (m/7)], {n, -7, 7}, {m, -7, 7}];
ListPlot3D[data]HilbertFilter[data, Pi, 5]//ListPlot3DTimeSeriesにフィルタをかける:
ts = TemporalData[TimeSeries, {{{0., -0.27267267057145633, -0.6672983789995302, -0.5338541947930846,
-0.6117404489279314, -0.6755527076595494, -0.02125421294486496, -0.10792797291843935,
-0.6138271235477938, -0.3248568606554575, -0.08843449054 ... 2053424, -0.49980440691873723, -0.5388679788215971,
-0.4101602764645551}}, {{0, 1., 0.01}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1];filtered = HilbertFilter[ts, 50]ListLinePlot[{ts, filtered}, PlotLegends -> {"original", "filtered"}, PlotRange -> All]a = AudioGenerator["Square"]HilbertFilter[a, Quantity[15000, "Hertz"]]HilbertFilter[Video["ExampleData/fish.mp4"], 3]HilbertFilter[[image], Pi, 15]HilbertFilter[{0, 0, 0, 0, 1, 1, 1, 1}, Pi, 3]パラメータ (3)
音声信号の場合は,数値カットオフ周波数がラジアン/秒として解釈される:
a = \!\(\*AudioBox[""]\);HilbertFilter[a, 10000 2 Pi] === HilbertFilter[a, Quantity[10000*2*Pi, "Radians"/"Seconds"]] === HilbertFilter[a, Quantity[10000, "Hertz"]]HilbertFilter[{0., 0., 0., 0., 1., 1., 1., 1.}, Pi, 5]HilbertFilter[{0., 0., 0., 0., 1., 1., 1., 1.}, Pi / 2, 5]HilbertFilter[{0., 0., 0., 0., 1., 1., 1., 1.}, Pi, 5, BlackmanWindow]HilbertFilter[{0., 0., 0., 0., 1., 1., 1., 1.}, Pi, 5, {1, 1, 1, 1, 1}]HilbertFilter[[image], {Pi / 5, Pi}, 10]//ImageAdjustオプション (5)
Padding (3)
HilbertFilter[[image], Pi / 4, 10]//ImageAdjustHilbertFilter[[image], Pi / 4, 10, Padding -> None]//ImageAdjustramp = Range[21] / 21. + RandomReal[.1, 21];
GraphicsRow@(ListLinePlot[{ramp, HilbertFilter[ramp, Pi, 10, Padding -> #]}, Axes -> False, PlotLabel -> If[# == 0, "Zero", #], ImageSize -> Small]& /@ {"Fixed", "Periodic", 0})SampleRate (2)
正規化されたサンプルレートの1を仮定して,ハーフバンドヒルベルトフィルタを使う:
HilbertFilter[{0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, π / 2., 5]HilbertFilter[{0, 0, 0, 0, 0, 1, 1, 1, 1, 1}, 3 π / 2., 5, SampleRate -> 3]
のレートでサンプルされた音声にハーフバンドフィルベルトフィルタを適用する:
noise = AudioGenerator["White", 0.2];
sr = QuantityMagnitude@AudioSampleRate[noise]HilbertFilter[noise, sr π / 2., 21]//Periodogramアプリケーション (1)
特性と関係 (7)
HilbertFilter[{0, 0, 0, 0, 1, 1, 1, 1}, 0]LeastSquaresFilterKernelとハミング窓を使ってヒルベルトフィルタを作る:
n = 5;
ω = 1.;
win = Array[HammingWindow, n, {-1 / 2, 1 / 2}];
ker = win LeastSquaresFilterKernel[{"Hilbert", ω}, n]ListConvolve[ker, {0, 0, 0, 1, 1, 1, 1, 0, 0, 0}, Ceiling[n / 2], 0]HilbertFilterの結果と比較する:
HilbertFilter[{0, 0, 0, 1, 1, 1, 1, 0, 0, 0}, ω, n, win, Padding -> 0]h = HilbertFilter[ArrayPad[{1.}, 10], Pi, 21]ListPlot[h, PlotRange -> All, Filling -> 0]Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}, PlotRange -> All]平滑化窓なしでの長さ21のヒルベルトフィルタのインパルス応答:
h = HilbertFilter[ArrayPad[{1.}, 10], Pi, 21, None]ListPlot[h, PlotRange -> All, Filling -> 0]Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}, PlotRange -> All]h = HilbertFilter[ArrayPad[{1.}, 11], Pi, 22]ListPlot[h, PlotRange -> All, Filling -> 0]Plot[Abs[ListFourierSequenceTransform[h, ω]], {ω, 0, π}, PlotRange -> All]ヒルベルトフィルタの振幅応答はフィルタの長さが増すにつれて向上する:
Manipulate[
ListLinePlot[Abs[Fourier[HilbertFilter[ArrayPad[{1.}, 128], Pi, n], FourierParameters -> {1, -1}]][[ ;; 129]], ...], {{n, 21}, 3, 63, 2}]Plot[Evaluate@Abs[ListFourierSequenceTransform[HilbertFilter[ArrayPad[{1.}, 21], Pi / 2, 21], ω]], {ω, 0, π}, ...]関連するガイド
テキスト
Wolfram Research (2012), HilbertFilter, Wolfram言語関数, https://reference.wolfram.com/language/ref/HilbertFilter.html (2025年に更新).
CMS
Wolfram Language. 2012. "HilbertFilter." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/HilbertFilter.html.
APA
Wolfram Language. (2012). HilbertFilter. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/HilbertFilter.html
BibTeX
@misc{reference.wolfram_2026_hilbertfilter, author="Wolfram Research", title="{HilbertFilter}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/HilbertFilter.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_hilbertfilter, organization={Wolfram Research}, title={HilbertFilter}, year={2025}, url={https://reference.wolfram.com/language/ref/HilbertFilter.html}, note=[Accessed: 03-November-2026]}