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

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.

См. также

|