Вопрос по входным параметрам фильтра Баттерворта

 

Коллеги, еще раз поздравляю с наступившим Новым Годом!!!


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

Входными параметрами для фильтра являются:

Конструктор фильтра рассчитывает порядок фильтра и его коэффициенты на основе входных данных:

Процесс фильтрации выглядит так:

В качестве примера фильтрации приведен небольшой участок:



Вопрос

Сейчас для сбора некоторой статистики фильтр понадобился в несколько упрощенном виде. Вопрос следующий: возможно ли заменить пять входных параметров (шаг дискретизации, граничные частоты, и коэффициенты неравномерности) одним, единственным параметром, но при этом не разрушать сам фильтр. Фильтр должен оставаться именно фильтром Баттерворта, (порядок фильтра и его коэффициенты рассчитываются должным образом, а не берутся с потолка).


Попробую немного уточнить вопрос, вернее задать его несколько иначе: нужен единственный входной параметр (не считая самого ряда) и алгоритм его обработки, от которого можно будет перейти к классическим входным параметрам для низкочастотного фильтра.


PS: Почитать о ЦОС можно тут http://prodav.exponenta.ru/

 

Привет, Серёга!

С прошедшими тебя.

Вот, посмотри такой вариант ФНЧ Баттерворта. В нём два входных параметра - К-порядок фильтра (определяет крутизну фронта среза фильтра) и N-ширина окна пропускания фильтра:

Этот ФНЧ правильный, т.е. не перерисовывающий на правом конце ВР, как следствие, имеется неизбежная ФЗ, которая тем больше, чем выше значение порядка фильтра К. поэтому, не стоит увлекаться большими значенияи этого параметра. Ниже прикреплён файл с его реализацией под МТ. Вот как он выглядит на котире:

Для любителей анонизма (прошу прощения) специально выкладываю перерисовывающийся Баттерворт с нулевой ФЗ:

Файл Batteruot Simmetric.mq4 прикреплён ниже.

Файлы:
 
Вот блин - не заметил пост!!! :о) Буду разбираться. Кстати - хитрость в том, что этот фильтр даже с фильтрацией в обе стороны не перерисовывает, если его совсем правильно делать, но у него другие проблемки появляются.
 
grasn писал(а) >>
хитрость в том, что этот фильтр даже с фильтрацией в обе стороны не перерисовывает

Серёга, ты ета, смотри внимательней (на перерисовку-та), а то от таких высказываний до Чуда недалече...

Всё он перерисовывает, ровно на столько, на сколько нужно, чтобы невозможно было "заглянуть" за горизонт событий.

 
Neutron >>:

Серёга, ты ета, смотри внимательней (на перерисовку-та), а то от таких высказываний до Чуда недалече...

Всё он перерисовывает, ровно на столько, на сколько нужно, чтобы невозможно было "заглянуть" за горизонт событий.

Природа - вообще большое чудо, надо быть просто внимательным к ней! :о) Но это так - философия. Все просто - когда разбирался с фильтром, то стал смотреть информацию по его применению, недоумевая - кому нужен такой перерисовывающийся фильтр для использования on-line режиме. Ни одна задача ЦФ, которую ставят для "железок" не будет решена. Это меня и смутило, стал разбираться и понял, что он по своей задумке не перерисовывает-то, но никуда и не заглядывает. Для ценовых рядов - правильно отфильтрованный сигнал будет НЕЗНАЧИТЕЛЬНО отличаться от исходного, что у меня и получилось. И это правильно - что твои синий и красный сигналы, что мой не имеют НИКАКОГО отношения к истинному СИГНАЛУ! Для этого достаточно исследовать ошибки и понять, что они не показывают ничего и строить прогноз на них просто бесполезно.

 

Я тут уже писал как-то и напишу снова. Перерисовывающийся индюк (1) и заглядывающий в будущее (2) - две большие разницы, коллеги.

На основе (1) можно вполне строить рабочую стратегию. Главное в нем - брать те значения индюкатора, которые будут в момент торговли, а не те, которые получаются на истории. И наплевать на то, как он себя перерисует. Пример (неудачный) - обычный зигзаг. Он явно перерисовывается, но в будущее не смотрит. Но это совсем не означает, что нельзя придумать нормальных индюкаторов типа (1), пригодных для торговой системы.

На основе (2) ничего приличного сделать нельзя, каким бы красивым он ни был.

 
Mathemat >>:

Я тут уже писал как-то и напишу снова. Перерисовывающийся индюк (1) и заглядывающий в будущее (2) - две большие разницы, коллеги.

На основе (1) можно вполне строить рабочую стратегию. Главное в нем - брать те значения индюкатора, которые будут в момент торговли, а не те, которые получаются на истории. И наплевать на то, как он себя перерисует. Пример (неудачный) - обычный зигзаг. Он явно перерисовывается, но в будущее не смотрит. Но это совсем не означает, что нельзя придумать нормальных индюкаторов типа (1), пригодных для торговой системы.

На основе (2) ничего приличного сделать нельзя, каким бы красивым он ни был.

тоже поясню :о) - Мне фильтр Б. нужен для сбора небольшой статистики в области "скайлинга", никакие боевые стратегии на фильтрации я не выстраиваю. И что бы не грузить комп лишним перебором, хотел оперировать одним параметром. Что то вроде аналогии с длинной окна для MA.


Что касается второго типа индюка - то есть же адаптивные фильтры, но тут конечно нужен "образцовый сигнал" и глубокая уверенность, что такой сигнал "сохраниться" некоторое время (я имею в вижу корректную выборку длины ряда). И если кто то умеет такой находить - то построить фильтр без ФЗ, без перерисовки, да еще с небольшим предсказыванием не очень сложно. Такой штукой я развлекался, и даже превзошел самого себя, запузырив фильтр Винера :о). В качестве образцового сигнала выбирал среднее (1/3...P)*(y(n-1)+y(n)+y(n+1)). Величину P для этого сигнала выбирал на основе критерия Дарбина-Уотсона. Самые крайние P точек использовал для выбора количества коэффициентов АР. Работало, не на 100%, но где то в 60% отрабатывал правильно. Думаю как раз этот пример для демонстрации связки MathCAD и VisSIM привести, если конечно время будет :о)

 
Да, Серж, я, конечно, лоханулся, заявив, что с индюкаторами типа (2) ничего не сделаешь. Сделаешь, и еще как, если такой вот гладкий фильтр без ФЗ подать на выход нервосетки.
 

Mathemat писал(а) >>

Я тут уже писал как-то и напишу снова. Перерисовывающийся индюк (1) и заглядывающий в будущее (2) - две большие разницы, коллеги.

Алексей, если взять перерисовывающуюся МА без ФЗ на истории, и принудительно прорисовывать её правый конец на каждом тике (фиксируя таким образом его положение во времени), то набрав достаточное количество отсчётов, мы с удивлением обнаружим плавную линию в точности совпадающую с запаздывающей и не перерисовывающей МА! Именно опираясь на этот факт, я утверждаю, что работая на правом краю ВР (в реальном времени) нет ни какой разницы между перерисовывющейся МА без ФЗ и построенной на томже принципе перерисовывающейся МА с ФЗ.

Да, Серж, я, конечно, лоханулся, заявив, что с индюкаторами типа (2) ничего не сделаешь. Сделаешь, и еще как, если такой вот гладкий фильтр без ФЗ подать на выход нервосетки.

Поэтому, для НС принципиально нет разницы, что подавать на вход - выход един. Ну, или мы о разном...

 
Mathemat >>:
Да, Серж, я, конечно, лоханулся, заявив, что с индюкаторами типа (2) ничего не сделаешь.

лоханулся - не корректное слово и к тебе совсем не подходит, а вот расширение сознания, то, что надо :о)))


Сделаешь, и еще как, если такой вот гладкий фильтр без ФЗ подать на выход нервосетки.


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

 
Mathemat >>:
Да, Серж, я, конечно, лоханулся, заявив, что с индюкаторами типа (2) ничего не сделаешь. Сделаешь, и еще как, если такой вот гладкий фильтр без ФЗ подать на выход нервосетки.

ничего не лоханулся... пргонозирующий индюк (3) и заглядывающий в будущее (2) - разные вещи... с индюками типа (2) действительно ничего не сделаешь...