Компенсируйте задержку, введенную КИХ-фильтром

Фильтрация сигнала вводит задержку. Это означает, что выходной сигнал смещен вовремя относительно входа. Этот пример показывает вам, как противодействовать этому эффекту.

Конечные фильтры импульсной характеристики часто задерживают все частотные составляющие то же самым значением. Это дает возможность корректировать для задержки путем сдвига сигнала вовремя.

Снимите показания электрокардиограммы, произведенные на уровне 500 Гц в течение 1 с. Добавьте случайный шум. Сбросьте генератор случайных чисел для воспроизводимости.

Fs = 500;
N = 500;
rng default

xn = ecg(N)+0.25*randn([1 N]);
tn = (0:N-1)/Fs;

Удалите часть шума с фильтром, который останавливает частоты выше 75 Гц. Используйте designfilt спроектировать фильтр порядка 70.

nfilt = 70;
Fst = 75;

d = designfilt('lowpassfir','FilterOrder',nfilt, ...
               'CutoffFrequency',Fst,'SampleRate',Fs);

Отфильтруйте сигнал и постройте его. Результат более сглажен, чем оригинал, но отстает от него.

xf = filter(d,xn);

plot(tn,xn)
hold on, plot(tn,xf,'-r','linewidth',1.5), hold off
title 'Electrocardiogram'
xlabel 'Time (s)', legend('Original Signal','Filtered Signal')

Figure contains an axes object. The axes object with title Electrocardiogram contains 2 objects of type line. These objects represent Original Signal, Filtered Signal.

Используйте grpdelay проверять, что задержка, вызванная фильтром, равняется половине порядка фильтра.

grpdelay(d,N,Fs)

Figure Filter Visualization Tool - Group delay contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Group delay contains an object of type line.

delay = mean(grpdelay(d))
delay = 35

Переключите отфильтрованный сигнал выстроить в линию данные. Удалите его первый delay выборки. Удалите последний delay выборки оригинала и временного вектора.

tt = tn(1:end-delay);
sn = xn(1:end-delay);

sf = xf;
sf(1:delay) = [];

Постройте сигналы и проверьте, что они выравниваются.

plot(tt,sn)
hold on, plot(tt,sf,'-r','linewidth',1.5), hold off
title 'Electrocardiogram'
xlabel('Time (s)'), legend('Original Signal','Filtered Shifted Signal')

Figure contains an axes object. The axes object with title Electrocardiogram contains 2 objects of type line. These objects represent Original Signal, Filtered Shifted Signal.

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

| | |

Похожие темы