-
- y0=x+y1*k, где k=1-1/256. Можно и более сложные фильтры строить. Но при 8-битной разрядности сложно подобрать коэффициенты, чтоб не нарваться на переполнение. И практически на PIC-контроллерах (hitech C 9.51pl2 STD) плавающая точка может fk0(105 знак., 09.09.2011 11:02 - 11:10)
- "...Можно и более сложные фильтры строить..." А у финских студентов примерчиков не завалялось? - Т.Достоевский(09.09.2011 17:34)
- Что изображено на прилепленном графике? - =AlexD=(09.09.2011 11:21)
- Синим цветом фаза, очевидно. Красным амплитуда (шкала линейная). Чёрным -- за 1.0 принята частота дискретизации. Т.е. грубо можно считать, что такой фильтр "пропускает" до одной тысячной от частоты дискретизации. Но также видно, что практически fk0(73 знак., 09.09.2011 12:58 - 13:03)
- Дык...Задуплить многократно... Несыграные мизера IIR-ы по одному не ходят. ;О) - mse ща как залогинюсь!(09.09.2011 22:49, )
- Синим цветом фаза, очевидно. Красным амплитуда (шкала линейная). Чёрным -- за 1.0 принята частота дискретизации. Т.е. грубо можно считать, что такой фильтр "пропускает" до одной тысячной от частоты дискретизации. Но также видно, что практически fk0(73 знак., 09.09.2011 12:58 - 13:03)
- Тесть так? x += (newdata - x/256) - Т.Достоевский(07.09.2011 23:30)
- Нет. Прибавляется разница между предыдущим и текущим значением величины. x += (newdata - x) / (N + 1). Переменные x и newdata должны быть знаковыми. При N = 0 фильтр отключен. - rezident(07.09.2011 23:47)
- Чёта у меня так ничего и не заработало! Т.Достоевский(132 знак., 08.09.2011 00:02)
- Как-то так: SciFi(169 знак., 08.09.2011 00:11)
- Странный фильтр. Пока значение x не превысит 256 он ничего не фильтрует. Так и задумано? - rezident(08.09.2011 00:39)
- Я его не задумывал. Скорее открыл как явление Природы. Работает. Чего более? - SciFi(08.09.2011 00:43)
- Т.е. вопросы: как он работает, чего фильтрует, какова форма его АЧХ и т.п., вас вообще не волнуют? - rezident(08.09.2011 01:11)
- Нет, не волнуют. Спасибо за заботу :-) - SciFi(08.09.2011 11:20)
- Т.е. вопросы: как он работает, чего фильтрует, какова форма его АЧХ и т.п., вас вообще не волнуют? - rezident(08.09.2011 01:11)
- Я его не задумывал. Скорее открыл как явление Природы. Работает. Чего более? - SciFi(08.09.2011 00:43)
- Да, случайно поставил x ниже скобачки. Спсб. Работает. - Т.Достоевский(08.09.2011 00:20)
- Странный фильтр. Пока значение x не превысит 256 он ничего не фильтрует. Так и задумано? - rezident(08.09.2011 00:39)
- Потому, что у вас целочисленное деление. Если последующий отсчет АЦП меняется менее чем на 8 разрядов (2^8), то приращение величины после целочисленного деления на 256 (2^8) будет равно нулю! - rezident(08.09.2011 00:06)
- А как сделать знаковое??? - Т.Достоевский(08.09.2011 00:08)
- Вы целочисленное от знакового отличаете? :) Вам нужно плавучку (float) использовать. Или хотя бы с фиксированной точкой работать. Например, в формате 16.16, раз у вас входная величина не превышает 12 разрядов. - rezident(08.09.2011 00:10)
- Запутался, виноват. Это усреднитель. Специально поставил кортекс чтобы сделать получше. Понял что плаваю совершенно, не подскажете как правильно усреднять? - Т.Достоевский(08.09.2011 00:13)
- Пример. rezident(202 знак., 08.09.2011 00:17 - 00:21)
- Очень большое СПСБ! А то Йа после фсего уже нисоображаю -> - Т.Достоевский(08.09.2011 00:37 - 00:43, ссылка)
- Пример. rezident(202 знак., 08.09.2011 00:17 - 00:21)
- Запутался, виноват. Это усреднитель. Специально поставил кортекс чтобы сделать получше. Понял что плаваю совершенно, не подскажете как правильно усреднять? - Т.Достоевский(08.09.2011 00:13)
- Вы целочисленное от знакового отличаете? :) Вам нужно плавучку (float) использовать. Или хотя бы с фиксированной точкой работать. Например, в формате 16.16, раз у вас входная величина не превышает 12 разрядов. - rezident(08.09.2011 00:10)
- А как сделать знаковое??? - Т.Достоевский(08.09.2011 00:08)
- Как-то так: SciFi(169 знак., 08.09.2011 00:11)
- Чёта у меня так ничего и не заработало! Т.Достоевский(132 знак., 08.09.2011 00:02)
- Нет. Прибавляется разница между предыдущим и текущим значением величины. x += (newdata - x) / (N + 1). Переменные x и newdata должны быть знаковыми. При N = 0 фильтр отключен. - rezident(07.09.2011 23:47)
- y0=x+y1*k, где k=1-1/256. Можно и более сложные фильтры строить. Но при 8-битной разрядности сложно подобрать коэффициенты, чтоб не нарваться на переполнение. И практически на PIC-контроллерах (hitech C 9.51pl2 STD) плавающая точка может fk0(105 знак., 09.09.2011 11:02 - 11:10)