КИХ-фильтры - страница 14

 
ssd >>:

Саблюк, будь другом, дай этот "адаптивный фильтр" для моих экспериментов.


Ну и что вы с этим фильтром делать будете? Вам не важно к чему он адаптируется, почему и как?

 
begemot61 >>:

Ну и что вы с этим фильтром делать будете? Вам не важно к чему он адаптируется, почему и как?

------------------------------------------------------------------------------------------------------

Если говорить кратко, то в идеале, фильтр-индикатор, по моим представлениям, должен должен самостоятельно

анализировать спектр подаваемых на его вход исторических данных и динамически адаптировать/настраивать

характеристики фильтрации в зависимости от спектрального состава входного сигнала.


Иначе говоря, вот эти вот "весовые коэффициенты" в формуле линейного цифрового фильтра


Y[i] = B[0] X[i] + B[1] X[i-1] + .... - A[1] Y[i-1] - A[2] Y[i-2] - ....

Здесь X – входной временной ряд, Y – выходной ряд, A и B – наборы весовых коэффициентов.


должны адаптироваться/настраиваться на спектр входного сигнала.


 
sab1uk >>:
begemot61 подскажи как можно по простому конвертировать твой фильтр с определенными параметрами в импульсную характеристику и записать ее в файл или в массив из глобальных переменных?

Эти коэффициенты хранятся в глобальном массиве double NormCoef[] а считаются функцией Normalization(). Normalization() использует функции FilterOrder(), Io(double x). Вам не нужны функции PriceSelect(), FilterResponse(int index_of_bar) Какие глобальные переменные оставить вы посмотрите сами. Я считаю Normalization() один раз, во время инициализации. Если у вас адаптивный фильтр, то Normalization() должна быть внутри start(). В этом случае я бы подумал как бы ускорить ее работу. Ну, например, уменьшил бы точность расчета функции Бесселя Io(double x) на один разряд. T.e double besselAccuracy=0.00001

 
begemot61 >>:

Эти коэффициенты хранятся в глобальном массиве double NormCoef[] а считаются функцией Normalization(). Normalization() использует функции FilterOrder(), Io(double x). Вам не нужны функции PriceSelect(), FilterResponse(int index_of_bar) Какие глобальные переменные оставить вы посмотрите сами. Я считаю Normalization() один раз, во время инициализации. Если у вас адаптивный фильтр, то Normalization() должна быть внутри start(). В этом случае я бы подумал как бы ускорить ее работу. Ну, например, уменьшил бы точность расчета функции Бесселя Io(double x) на один разряд. T.e double besselAccuracy=0.00001

спасибо! мне нужно только сграбить КИХ и погонять в своей конструкции

другими словами инициализирующую часть фильтра поюзать в качестве генератора

 

Возник вопрос: 

Должны ли соответствовать показания фильтров на разных таймфреймах, при соответствующем изменении параметров фильтра? (например параметры Н1 = параметры Н4 * 4 ) 

 
neoclassic >>:

Возник вопрос: 

Должны ли соответствовать показания фильтров на разных таймфреймах, при соответствующем изменении параметров фильтра? (например параметры Н1 = параметры Н4 * 4 ) 

Фильтр сам по себе ничего не показывает. Он обрабатывает те данные, которые ему подаются вход. Если данные разные, то и результат обработки разный. Хотя алгоритм обработки один и тот-же

 

Бегемотыч, имеет ли смысл варьировать параметр PassBandRipple ?

почему именно 30 установлено?

 
sab1uk >>:

Бегемотыч, имеет ли смысл варьировать параметр PassBandRipple ?

почему именно 30 установлено?

Дело в том, что фильтр с Кайзеровской реализацией функции окна предусматривает выбор наихудшего из 2 условий-пульсации в полосе пропускания и подавления в полосе задерживания. Так как он не может обеспечить оба условия одновременно, то одно из требований получается лучше, чем реально заданное. Реально, подавлению 20дБ соответстбует пульсация +/-0.83дБ, подавлению 40дБ соответствует пульсация +/-0.086дБ. Для моих целей это достаточно маленькие значения. Поэтому я просто задал пульсацию в полосе пропускания заведомо больше, чем любая возможная величина и не обращаю на неё внимание. Хотя оценка присутствует в коде и её можно использовать при необходимости. 

 

sab1uk, правильно ли я понимаю принципы построения полосового фильтра?

и еще такой вопрос: можно ли обойти ограничения на порядок фильра в ГЦМ (2500) ? 

 
полосовик (BandPass) есть дифференциал между двумя ФНЧ (LowPass) по аналогии как ублюдочный МАКД получается из разницы машек
если требуется порядок фильтра 2500+ или период отсечки 300+ используй бегемотовский фильтр
но его фильтр мне не для всех случаев подходит.. 
пробовал делать 1000 Дб затухания или 0.000000000000001 Дб биения но не смог добиться такого же острого резонанса в АЧХ как фильтры из генератора

Причина обращения: