DiscreteHilbertTransform[list]
実数のリスト list の離散ヒルベルト(Hilbert)変換を与える.
DiscreteHilbertTransform
DiscreteHilbertTransform[list]
実数のリスト list の離散ヒルベルト(Hilbert)変換を与える.
詳細
- 離散ヒルベルト変換は,信号処理,通信,音響,データ圧縮,地震環境データ,重力波などに応用される.
- この変換は,正の周波数ではもとの列に
の位相シフトを与え,負の周波数では
の位相シフトを与える. - リスト
に対し,DiscreteHilbertTransformは,そのFFTを計算し,負の周波数成分を消去した上で,その結果の逆FFTを計算する.これにの虚部が
である. » - 信号処理において,複素数列
は解析信号と呼ばれ,その絶対値は「エンベロープ」である.
は任意の正の整数長でよい.
の要素が厳密数の場合,DiscreteHilbertTransformはそれにNを適用することから始める.
は,SparseArrayオブジェクトとすることもできる.それによって生成される
もまたSparseArrayオブジェクトである.
例題
すべて開く すべて閉じる例 (2)
スコープ (9)
x = {1, 0, 0, 1, 0, 0, 1};DiscreteHilbertTransform[x]DiscreteHilbertTransform[N[x, 24]]DiscreteHilbertTransform[RandomReal[{2, 4}, {3, 6}]]x = ConstantArray[0, {2, 3, 4}];x[[1, 1, 1]] = 1;x[[2, 2, 2]] = 1;DiscreteHilbertTransform[x]x は実数値からなるSparseArrayである:
x = SparseArray[{{1, 2} -> -1, {2, 2} -> 2π, {3, 3} -> 1.3, {2, 3} -> 7}];離散ヒルベルト変換を計算し,結果をSparseArrayとして入手する:
DiscreteHilbertTransform[x]x = SparseArray[Table[3 ^ i -> 1, {i, 10}]];離散ヒルベルト変換を計算し,結果をSparseArrayとして入手する:
DiscreteHilbertTransform[x]discreteCosine = Table[Cos[t], {t, -π, π, π / 25}];DiscreteHilbertTransformは,
度の位相シフトを適用する:
discreteHCosine = DiscreteHilbertTransform[discreteCosine];ListPlot[{discreteCosine, discreteHCosine}, ...]次は,離散信号の最初の10個の要素とそのヒルベルト変換の値である:
Tabular[(Transpose[{N[discreteCosine], discreteHCosine}])[[ ;; 10]] , {...}]x = RandomReal[1, 200];dhtx = DiscreteHilbertTransform[x];ListLinePlot[{x, dhtx}, ...]x = Sin[17 * 2π * Range[0, 1, 0.001]] + RandomVariate[NormalDistribution[0, 0.05], 1001];dhtx = DiscreteHilbertTransform[x];ListLinePlot[{x, dhtx}, ...]ノイズがあるSinc関数からのデータ:
n = 100;
x = Table[Sinc[x - 10], {x, n}] + RandomReal[{-.05, .05}, {n}];ListPlot[x, PlotRange -> All]p = Fourier[x, FourierParameters -> {1, 1}];
ListPlot[Abs[p] ^ 2]dHx = DiscreteHilbertTransform[x];a = x + I * dHx;s = Fourier[a, FourierParameters -> {1, 1}];
ListPlot[Abs[s] ^ 2]振動信号のエンベロープは,その極値を外接する曲線であり,これは解析的表現の大きさである:
ListLinePlot[{x, dHx, Abs /@ a}, ...]アプリケーション (4)
通信 (1)
m = Table[Sin[2Pi 5t] + 2Sin[2Pi 7t] + 1 / 2Sin[2Pi 9t], {t, -π / 2, π / 2, π / 100}];
ListLinePlot[m, DataRange -> {-π / 2, π / 2}, ...]メッセージ搬送波として
を用い,上側波帯抑圧搬送波(USB-SC)および下側波帯抑圧搬送波(LSB-SC)を求める:
c = Table[Cos[2Pi 55t], {t, -π / 2, π / 2, π / 100}];
s = Table[Sin[2Pi 55t], {t, -π / 2, π / 2, π / 100}];
USB = m * c - DiscreteHilbertTransform[m] * s;
LSB = m * c + DiscreteHilbertTransform[m] * s;
ListLinePlot[{USB, LSB}, ...]心電図周波数解析 (1)
心電図(ECG)の時間・周波数解析を行うことで,重要な情報を明らかにすることができる.心臓の電気活動を示す電圧と時間のグラフを提供する患者のECGデータについて考える:
ECGData = {...};
ListLinePlot[ECGData, ...]KaiserWindowを使ってデータにフィルタをかける:
filteredECG = BandpassFilter[ECGData, {(4π/25), (2π/5)}, Length[ECGData], KaiserWindow];離散領域(サンプリング周波数100Hz)におけるその一次微分を求める:
differentialECG = Differences[filteredECG] / (2 * .01);dhDifferentialECG = DiscreteHilbertTransform[differentialECG];離散ヒルベルト変換におけるRMS値と最大値の18%を比較する:
{Max[dhDifferentialECG] * .18, RootMeanSquare[dhDifferentialECG]}これで,最大値の39%の閾値が示されることとなる.この情報を用いることで,ヒルベルト変換を利用して一次微分のRピークの位置を特定することができる:
RpeaksLocation = First /@ FindPeaks[dhDifferentialECG, Automatic, Automatic, Max[dhDifferentialECG] * .39];RPeaks = Transpose@{RpeaksLocation, ECGData[[RpeaksLocation]]};
ListPlot[{ECGData, RPeaks}, ...]風速予測 (1)
今後7日間におけるプエルトリコのサンフアン市の風速および風向の天気予報について考える:
speedDateData = QuantityMagnitude[WeatherForecastData[...]];
directionDateData = (π/180)QuantityMagnitude[WeatherForecastData[...]];
DateListPlot[{speedDateData, directionDateData}, ...]予測される風速は,
で与えられる.ここで,
は速度データの最大値,
および
は,それぞれ数列
および方向データに対する平均値である.また,
および
は,それぞれこれらの数列に対して平均値を除去した離散ヒルベルト変換である.
{...};
DateListPlot[{...}, ...]地震データ解析 (1)
次の地震トレースは,地震波によって引き起こされる地面の動きが,どのようにして時間の経過とともに検出および記録されるかを示している:
trace = {...};
ListLinePlot[trace]dhTrace = DiscreteHilbertTransform[trace];complexTrace = trace + I * dhTrace;env = Abs[complexTrace];ListLinePlot[{trace, dhTrace, env, -env}, ...]phase = ArcTan[trace, dhTrace];
ListLinePlot[phase, PlotLabel -> "Instantaneous phase for the complex trace"]特性と関係 (2)
Subscript[f, k] = {1.1, -1.2, 5.5, -4.5};fFourier = Fourier[Subscript[f, k], FourierParameters -> {1, -1}]anhilation = {1, 2, 1, 0} * fFourierInverseFourier[anhilation, FourierParameters -> {1, -1}]最後に,虚部をDiscreteHilbertTransformと比較する:
Im[%] == DiscreteHilbertTransform[Subscript[f, k]]{-2.3, -3.14, 1.62, E, Pi} + I DiscreteHilbertTransform[{-2.3, -3.14, 1.62, E, Pi}]DC成分(最初の位置)およびナイキスト成分(
の位置)は常に実数である:
Fourier[%, FourierParameters -> {1, -1}]//Chop関連するガイド
-
▪
- 総和変換
テキスト
Wolfram Research (2026), DiscreteHilbertTransform, Wolfram言語関数, https://reference.wolfram.com/language/ref/DiscreteHilbertTransform.html.
CMS
Wolfram Language. 2026. "DiscreteHilbertTransform." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DiscreteHilbertTransform.html.
APA
Wolfram Language. (2026). DiscreteHilbertTransform. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DiscreteHilbertTransform.html
BibTeX
@misc{reference.wolfram_2026_discretehilberttransform, author="Wolfram Research", title="{DiscreteHilbertTransform}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/DiscreteHilbertTransform.html}", note=[Accessed: 22-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_discretehilberttransform, organization={Wolfram Research}, title={DiscreteHilbertTransform}, year={2026}, url={https://reference.wolfram.com/language/ref/DiscreteHilbertTransform.html}, note=[Accessed: 22-September-2026]}