Документация Engee

hilbert

Дискретный аналитический сигнал с использованием преобразования Гильберта.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • x = hilbert(xr) — возвращает аналитический сигнал x из последовательности вещественных данных xr. Если xr — матрица, то функция hilbert находит аналитический сигнал, соответствующий каждому столбцу.

  • x = hilbert(xr,n) — использует n-точечное быстрое преобразование Фурье (БПФ) для вычисления преобразования Гильберта. Входные данные дополняются нулями или усекаются до длины n в зависимости от ситуации.

Аргументы

Входные аргументы

# xr — входной сигнал
вектор | матрица

Details

Входной сигнал, заданный как вещественный вектор или матрица. Если xr комплексный, то hilbert игнорирует его мнимую часть.

Типы данных

Float32, Float64

# n — длина ДПФ
положительный целочисленный скаляр

Details

Длина дискретного преобразования Фурье (ДПФ), заданная как положительный целочисленный скаляр.

Типы данных

Float32, Float64

Выходные аргументы

# x — аналитический сигнал
вектор | матрица

Details

Аналитический сигнал, возвращаемый в виде вектора или матрицы.

Примеры

Аналитический сигнал последовательности

Details

Определим последовательность и вычислим ее аналитический сигнал с помощью функции hilbert.

import EngeeDSP.Functions: hilbert

xr = [1 2 3 4]'
x = hilbert(xr)
4×1 Matrix{ComplexF64}:
 1.0 + 1.0im
 2.0 - 1.0im
 3.0 - 1.0im
 4.0 + 1.0im

Мнимая часть x — это преобразование Гильберта матрицы xr, а вещественная часть — это сама xr.

imx = imag(x)
4×1 Matrix{Float64}:
  1.0
 -1.0
 -1.0
  1.0
rex = real(x)
4×1 Matrix{Float64}:
 1.0
 2.0
 3.0
 4.0

Вторая половина ДПФ матрицы x равна нулю. (В этом примере вторая половина преобразования — это просто последний элемент.) Постоянная составляющая и компонента Найквиста в fft(x) являются чисто вещественными.

import EngeeDSP.Functions: fft

dft = fft(x)
4-element Vector{ComplexF64}:
 10.0 + 0.0im
 -4.0 + 4.0im
 -2.0 + 0.0im
  0.0 + 0.0im

Дополнительно

Аналитический сигнал

Details

Функция hilbert возвращает комплексную спиральную последовательность, иногда называемую аналитическим сигналом, из последовательности вещественных данных.

Аналитический сигнал имеет вещественную часть , которая представляет собой исходные данные, и мнимую часть , содержащую преобразование Гильберта. Мнимая часть представляет собой версию исходной вещественной последовательности со сдвигом фазы на 90°. Таким образом, синусы преобразуются в косинусы, и наоборот, косинусы преобразуются в синусы. Ряд, преобразованный по Гильберту, имеет ту же амплитуду и частотный состав, что и исходная последовательность. Преобразование включает информацию о фазе, которая зависит от фазы исходной последовательности.

Преобразование Гильберта полезно для вычисления мгновенных характеристик временного ряда, особенно амплитуды и частоты. Мгновенная амплитуда — это амплитуда комплексного преобразования Гильберта; мгновенная частота — это скорость изменения мгновенного фазового угла. Для чистой синусоиды мгновенные амплитуда и частота постоянны. Однако мгновенная фаза представляет собой пилообразную форму, отражающую линейное изменение локального фазового угла в течение одного периода. Для смесей синусоид атрибуты представляют собой краткосрочные, или локальные, усреднения, охватывающие не более двух или трех точек.

В [1] описан метод Колмогорова для минимально-фазовой реконструкции, который включает в себя преобразование Гильберта логарифма спектральной плотности временного ряда. Эту реконструкцию выполняет функция панели инструментов rceps.

Алгоритмы

Аналитический сигнал для последовательности xr имеет одностороннее преобразование Фурье. То есть преобразование обращается в нуль для отрицательных частот. Чтобы аппроксимировать аналитический сигнал, функция hilbert вычисляет БПФ входной последовательности, заменяет коэффициенты БПФ, соответствующие отрицательным частотам, нулями и вычисляет обратное БПФ результата.

Функция hilbert использует четырехшаговый алгоритм:

  1. Вычислить БПФ входной последовательности, сохранив результат в векторе x.

  2. Создать вектор h, элементы которого h(i) имеют следующие значения:

    • 1 для i = 1, (n/2)+1;

    • 2 для i = 2, 3, …, (n/2);

    • 0 для i = (n/2)+2, …, n.

  3. Вычислить поэлементное произведение x и h.

  4. Вычислить обратное БПФ последовательности, полученной на шаге 3, и вернуть первые n элементов результата.

Этот алгоритм был впервые представлен в [2]. Метод предполагает, что входной сигнал x представляет собой конечный блок данных. Это предположение позволяет функции точно устранять спектральную избыточность по x. Методы, основанные на КИХ-фильтрации, могут лишь аппроксимировать аналитический сигнал, но их преимущество заключается в непрерывности обработки данных.

Литература

  1. Claerbout, Jon F. Fundamentals of Geophysical Data Processing with Applications to Petroleum Prospecting. Oxford, UK: Blackwell, 1985.

  2. Marple, S. L. «Computing the Discrete-Time Analytic Signal via FFT.» IEEE® Transactions on Signal Processing. Vol. 47, 1999, pp. 2600–2603.

  3. Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.