Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Цифровой фильтр для временного ряда


Автор: DASTAD 15.10.2009, 07:20
Ситуация
Есть таблица значений (Time; Value) временного ряда некоторых статистических данных, типа количество заявок, количество отказов, затраты и пр. Есть желание применить к этому ряду фильтр. Я скачал несколько компонент-фильтров нижних частот Калмана, Баттерворта и пр. Результат на рисунке. Синий исходный ряд, красный фильтрованный.
Но эти компоненты реализованы так:  загоняется ряд целиком, фильтр работает и  выдается новый ряд. Причем у нового ряда, несколько (4 или 5 ) первых и последних значений "срезаются". (скрин не самый удачный, но и на нем можно увидеть: небольшой слом и резкий спад вниз в начале и в конце линии)

Прошу помощи в создании своего фильтра для временного ряда X[t], t=0..N
Хочется получить фильтр в виде алгоритма
Y[n] = a0*x[n]+a1*x[n-1]+...+am*x[n-k] + b1*y[n-1]+b2*y[n-2]+...+bk*y[n-1-k].
или 
Y[n] = SUM ( H[k]*X[n-k])

Фильтр должен брать значения только из "прошлого" Значения ряда X поступют равномерно (раз в минуту, час или в сутки) - по этому значению и предыдущим получить текуще фильтрованное значение Y.  Можно пересчитывать коэффициенты фильтра по желанию, скажем основываясь на последних P значениях ряда. У выходного сигнала Y  не должно быть сдвига по фазе от X (экстремумы должны совпадать)

Подскажите где можно найти метод для получения фильтров в таком виде ? Или готовый алгоритм\компонент для фильтрации в "реальном" времени а не постобработке.

Из увиденного больше всего понравился фильтр нижних частот Баттерворта с характеристиками:  частота 0,1 Гц smile, затухание -20 дцБ, порядок фильтра 4 и выше


PS
Собственные знания по цифровым фильтрам отсутсвуют :(
Есть под рукой книги Хемминг "Цифровые фильтры", Айфичер "Цифровая обработка сигналов" и несколько медодичек по проектированию фильтров, в том числе и фильтра Баттерворта.


Автор: DASTAD 16.10.2009, 20:49
Неужели все цифровые фильтры страдают запаздыванием выходного сигнала? :(

Автор: Pavia 17.10.2009, 00:44
Цитата(DASTAD @  16.10.2009,  20:49 Найти цитируемый пост)
Неужели все цифровые фильтры страдают запаздыванием выходного сигнала? :(

Нет.  Возьми тот который страдает и примени функцию запаздывания только с обратным знаком.


Цитата(DASTAD @  15.10.2009,  07:20 Найти цитируемый пост)
Подскажите где можно найти метод для получения фильтров в таком виде ?

Из всего выше сказанного я понял одной хочу фильтр и чтобы он по волшебству читал мысли.

Автор: DRUID3 23.10.2009, 07:22
Цитата(DASTAD @  15.10.2009,  06:20 Найти цитируемый пост)
Причем у нового ряда, несколько (4 или 5 ) первых и последних значений "срезаются".

??? как так? smile 
Цитата(DASTAD @  15.10.2009,  06:20 Найти цитируемый пост)
Прошу помощи в создании своего фильтра для временного ряда X[t], t=0..N

Э... smile 
Цитата(DASTAD @  16.10.2009,  19:49 Найти цитируемый пост)
Неужели все цифровые фильтры страдают запаздыванием выходного сигнала? :( 

Да...
Цитата(DASTAD @  15.10.2009,  06:20 Найти цитируемый пост)
У выходного сигнала Y  не должно быть сдвига по фазе от X (экстремумы должны совпадать)

Противоречит самому понятию - свертка... Нереализуемо...

Так и не понял что именно Вам надо, исходник простейшего FIR'а или адаптивный фильтр, но рискну предположить, что таки первое. smile 
Googl'им и находим http://www.winfilter.20m.com/. Помимо нахождения значения коэффициентов фильтра эта программа умеет генерировать совершенно неоптимизированные(сдвигом массива "влоб") FIR и IIR фильтры. Но... Для данных поступающих раз в минуту на современных компьютерах - этого бо-о-о-о-олее чем достаточно...

Цитата(DASTAD @  15.10.2009,  06:20 Найти цитируемый пост)
Или готовый алгоритм\компонент для фильтрации в "реальном" времени а не постобработке.

Не поминайте такие термины всуе...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)