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

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

Сгенерируйте последовательность, состоявшую из трех синусоид с частотами 203, 721, и 1 001 Гц. Последовательность производится на уровне 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')
xlabel('Time (s)')

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

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

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

Figure contains an axes object. The axes object 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 object and other objects of type uitoolbar, uimenu. The axes object 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')
xlabel('Time (s)')

Figure contains an axes object. The axes object 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 object. The axes object with title Power Spectral Density contains 2 objects of type line. These objects represent hilbert, FIR Filter.

Смотрите также

|