hilbert

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

Описание

пример

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

пример

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

Примеры

свернуть все

Задайте последовательность и вычислите ее аналитический сигнал с помощью hilbert.

xr = [1 2 3 4];
x = hilbert(xr)
x = 1×4 complex

   1.0000 + 1.0000i   2.0000 - 1.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i

Воображаемая часть x является преобразованием Гильберта xr, и действительная часть xr сам.

imx = imag(x)
imx = 1×4

     1    -1    -1     1

rex = real(x)
rex = 1×4

     1     2     3     4

Последняя половина дискретного преобразования Фурье (DFT) x равен нулю. (В этом примере последняя половина преобразования является просто последним элементом.) Элементы DC и Nyquist fft(x) чисто настоящие.

dft = fft(x)
dft = 1×4 complex

  10.0000 + 0.0000i  -4.0000 + 4.0000i  -2.0000 + 0.0000i   0.0000 + 0.0000i

The hilbert функция находит точный аналитический сигнал для конечного блока данных. Можно также сгенерировать аналитический сигнал с помощью фильтра трансформатора с конечной импульсной характеристикой (КИХ) для вычисления приближения к мнимой части.

Сгенерируйте последовательность, состоящую из трех синусоидов с частотами 203, 721 и 1001 Гц. Последовательность отбирают при 10 кГц в течение примерно 1 секунды. Используйте hilbert функция для вычисления аналитического сигнала. Постройте график между 0,01 секунд и 0,03 секунд.

fs = 1e4;
t = 0:1/fs:1; 

x = 2.5 + cos(2*pi*203*t) + sin(2*pi*721*t) + cos(2*pi*1001*t);

y = hilbert(x);

plot(t,real(y),t,imag(y))
xlim([0.01 0.03])
legend('real','imaginary')
title('hilbert Function')

Figure contains an axes. The axes with title hilbert Function contains 2 objects of type line. These objects represent real, imaginary.

Вычислите оценки Уэлча спектральных плотностей степени исходной последовательности и аналитического сигнала. Разделите последовательности на неперекрывающиеся участки длины 256 с окном Хемминга. Проверьте, что аналитический сигнал не имеет степени на отрицательных частотах.

pwelch([x;y].',256,0,[],fs,'centered')
legend('Original','hilbert')

Figure contains an axes. The axes with title Power Spectral Density contains 2 objects of type line. These objects represent Original, hilbert.

Используйте designfilt функция для разработки конечной импульсной характеристики трансформатора 60-го порядка. Задайте ширину перехода 400 Гц. Визуализируйте частотную характеристику фильтра.

fo = 60;

d = designfilt('hilbertfir','FilterOrder',fo, ...
       'TransitionWidth',400,'SampleRate',fs); 

freqz(d,1024,fs)

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

Фильтрация синусоидальной последовательности для аппроксимации мнимой части аналитического сигнала.

hb = filter(d,x);

Групповая задержка фильтра, grd, равно половине порядка фильтра. Компенсируйте эту задержку. Удалите первый grd выборки мнимой части и последнего grd выборки действительной части и временного вектора. Постройте график результата между 0,01 секундами и 0,03 секундами.

grd = fo/2;
   
y2 = x(1:end-grd) + 1j*hb(grd+1:end);
t2 = t(1:end-grd);

plot(t2,real(y2),t2,imag(y2))
xlim([0.01 0.03])
legend('real','imaginary')
title('FIR Filter')

Figure contains an axes. The axes with title FIR Filter contains 2 objects of type line. These objects represent real, imaginary.

Оцените степень спектральную плотность (PSD) приблизительного аналитического сигнала и сравните ее с hilbert результат.

pwelch([y;[y2 zeros(1,grd)]].',256,0,[],fs,'centered')
legend('hilbert','FIR Filter')

Figure contains an axes. The axes with title Power Spectral Density contains 2 objects of type line. These objects represent hilbert, FIR Filter.

Входные параметры

свернуть все

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

Пример: sin(2*pi*(0:15)/16) задает один период синусоиды.

Пример: sin(2*pi*(0:15)'./[16 8]) задает двухканальный синусоидальный сигнал.

Типы данных: single | double

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

Типы данных: single | double

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

свернуть все

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

Подробнее о

свернуть все

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

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

Аналитический сигнал x = xr + j xi имеет вещественную часть, xr, которая является исходными данными, и мнимую часть, xi, которая содержит преобразование Гильберта. Мнимая часть является версией исходной действительной последовательности со сдвигом фазы на 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. Основные принципы обработки геофизических данных с приложениями к разведке нефти. Оксфорд, Великобритания: Блэквелл, 1985.

[2] Marple, S. L. «Вычисление аналитического сигнала дискретного времени через БПФ». IEEE® Транзакции по обработке сигналов. Том 47, 1999, стр. 2600-2603.

[3] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

| |

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте