Полосовой фильтр вызывает странные срезы во временной области - PullRequest
0 голосов
/ 28 апреля 2020

Исходный сигнал, который у меня есть, показан в левой части изображения и после фильтрации выглядит так, как показано в правой части. enter image description here Я использую FIR-фильтр окна Хэмминга с полосой пропускания [от 0,05 Гц до 2 Гц] и 95 отводов. Для этой цели я использовал фирвин из python:

hamming_coeffs = firwin(95, [0.05/f_nyquist, 2.0/f_nyquist], pass_zero=False) 

hamming = np.convolve(hamming_coeffs, signal, mode='full')

Может кто-нибудь объяснить, почему происходит внезапное падение сигнала через 5 и 15 секунд после фильтрации?

Любая помощь ценится. Спасибо.

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Какова ваша частота дискретизации? Начальные и конечные переходные процессы фильтрации будут

transient_sec = (filt_len-1)/(sample_rate_hz)

, что для этого большого фильтра (95 элементов) может быть существенным. С аргументом mode='full', равным np.convolve(), переходные процессы будут отображаться полностью, как и здесь. В случае более длинных временных рядов их влияние не будет столь очевидным.

Переходные процессы можно скрыть, используя параметр mode='valid' для np.convolve().

0 голосов
/ 28 апреля 2020

Ваша ось времени неправильно помечена.

Результат полной свертки длиннее исходного сигнала, поэтому второй график должен показывать 20 единиц плюс некоторое количество переходного времени фильтра до и после вашего исходного сигнала, возможно, от -10,0 до 30,0 секунд. Ваш отфильтрованный сигнал - это уменьшенная часть посередине.

...