-
- На 8 битном фильтрацию сдвигами вместо умножения делал, работает, Visitor(313 знак., 24.08.2023 11:41)
- Не копал глубоко. Но положил себе в закладки. Гляньте этот код: Nikolay_Po(62 знак., 23.08.2023 15:53, ссылка, ссылка)
- спасибо поковыряюсь - Generalизверг(23.08.2023 23:00)
- Расскажете, что накопали, в общих чертах? Мне нужно будет, но руки не доходят, не до того, более срочные вещи программируем. - Nikolay_Po(24.08.2023 09:56)
- спасибо поковыряюсь - Generalизверг(23.08.2023 23:00)
- Вот такой фильтр сделать и прекрасно все регулируется тремя числами на лету Alt@ir(9 знак., 23.08.2023 15:15, ссылка, youtube)
- Нашёл в своих архивах расчёт БИХ ФНЧ 2-го порядка с максимально
гладкой АЧХ. Может пригодится? argus98(1 знак., 23.08.2023 14:46, картинка)
- Вполне себе интересно. А можете переписать как в Generalизверг(2 знак., 23.08.2023 15:27, ссылка)
- В Си не обучен. Делайте согласно классической картинке argus98(1 знак., 23.08.2023 20:01, картинка)
- Следует иметь ввиду, что исполнение рекурсивных фильтров в целых
числах - сложная задача из-за шума квантования (ошибок округления). Nikolay_Po(425 знак., 24.08.2023 10:07)
- Дополню. Существует понятие чувствительность частотной
характеристики к коэффициентам фильтра. Она косвенно зависит от
порядка, изначально она зависит от добротности полюсов фильтра
(Im/Re). Чебышев чувствительнее Батерворта. Чем выше порядок, тем
выше предельная добротность (см. картинку). Искусство
проектирование фильтров - придумать такую топологию (
последовательность арифметических действий в рекуррентном
выражении), чтобы чувствительность была минимальной. IBAH(1 знак., 24.08.2023 13:07, картинка)
- Был (есть?) такой Ланнэ - он давным давно излагал идею
пересчитывать влияние части коэффициентов в другие... Снижение
динамического диапазона (разрядности) коэффициентов позволяет уже
избавиться от такой чувствительности. Но, конечно, с некоторым
изменением АЧХ... POV(172 знак., 24.08.2023 13:20, ссылка)
- Ланнэ Красная книга. Кто ж не знает. IBAH(1 знак., 24.08.2023 14:11, картинка)
- Был (есть?) такой Ланнэ - он давным давно излагал идею
пересчитывать влияние части коэффициентов в другие... Снижение
динамического диапазона (разрядности) коэффициентов позволяет уже
избавиться от такой чувствительности. Но, конечно, с некоторым
изменением АЧХ... POV(172 знак., 24.08.2023 13:20, ссылка)
- Можно подумать, что у плавучки нет ошибок округления... Лишний байт/два/три в целочисленной арифметике (с фиксированной точкой) всегда можно добавить, а вот размер мантиссы у плавучки - хрен добавишь - argus98(24.08.2023 11:42)
- У современных 32р машин, легко можно работать с фиксированной точкой 16Q16. - mse homjak(24.08.2023 11:14)
- Дополню. Существует понятие чувствительность частотной
характеристики к коэффициентам фильтра. Она косвенно зависит от
порядка, изначально она зависит от добротности полюсов фильтра
(Im/Re). Чебышев чувствительнее Батерворта. Чем выше порядок, тем
выше предельная добротность (см. картинку). Искусство
проектирование фильтров - придумать такую топологию (
последовательность арифметических действий в рекуррентном
выражении), чтобы чувствительность была минимальной. IBAH(1 знак., 24.08.2023 13:07, картинка)
- Следует иметь ввиду, что исполнение рекурсивных фильтров в целых
числах - сложная задача из-за шума квантования (ошибок округления). Nikolay_Po(425 знак., 24.08.2023 10:07)
- В Си не обучен. Делайте согласно классической картинке argus98(1 знак., 23.08.2023 20:01, картинка)
- Вполне себе интересно. А можете переписать как в Generalизверг(2 знак., 23.08.2023 15:27, ссылка)
- Заранее прошу меня извинить, если повторю то, что написано до меня. Однако проблему я вижу совсем не там, где ее пытаются решить. Прежде чем определять АЧХ цифрового фильтра, нужно определить ширину полосы первой зоны Найквиста и понимать, что на входе АЦП должен стоять АППАРАТНЫЙ фильтр НЧ, который подавит высшие зоны Найквиста с необходимым уровнем. Ибо никто пока не показал, что проблемные помехи лежат именно в первой. Из этого следует, что сигма-дельта АЦП может оказаться my504(106 знак., 23.08.2023 13:22)
- Ещё сумасшедшая идея. Фильтр не трогаем, зато меняем масштаб времени в потоке данных на входе и на выходе из фильтра. Децимация и интерполяция? - SciFi(23.08.2023 13:06)
- Делал такое, но для полосового фильтра первого порядка и кортексМ4. IBAH(1906 знак., 23.08.2023 12:26 - 12:54)
- Имхо, если нет плавучки, не стоит заморачиваться. Чувствительность
фильтра к коэффициентам такова, что в целых все встанет раком - IBAH(23.08.2023 12:28)
- Господа, вы звери! (с). Видимо, для вас и строят трёх-нанометровые фабрики. - Kpoк(23.08.2023 12:46)
- Имхо, если нет плавучки, не стоит заморачиваться. Чувствительность
фильтра к коэффициентам такова, что в целых все встанет раком - IBAH(23.08.2023 12:28)
- Простое уравнение: Kpoк(263 знак., 23.08.2023 10:12)
- Это-то понятно. Это так сказать физический фильтр. Однако он слабо давит. Теория для расчета таких каскадных фильтров отсутcтвует. - Generalизверг(23.08.2023 14:01)
- Просто таймер перепрограммировать низя ? И обрабатывать один и тот
же фильтр в прерывании таймера ? Или свободных т. / прерываний в МК
нет ? - De_user(23.08.2023 08:37)
- Нет, всё должно быть честно. - Generalизверг(23.08.2023 08:54)
- Рассчитывается КИХ фильтр так. Отклик в частотной области
представляет ступеньку, во временной области представляет
sinc-функцию. И если надо то наоборот. Значит наша задача не более
чем сгенерировать sinc-функцию. Коэффициенты КИХ фильтра её и
представляют. И вся фильтрация, т.е. фильтр будет представлять
собой банальную свертку с ней, т.е. к коэффициентами). Налабал
демо-код в дикой спешке, у меня нет времени писать красиво, завтра
с утра ехать запускать проект и я RxTx(1988 знак., 23.08.2023 01:25, ссылка)
- Тот же вопрос на stackexchange. И один из ответов тот же. Похоже, это называется "Window Method for FIR Filter Design". SciFi(2 знак., 23.08.2023 10:04, ссылка, ссылка)
- Спасибо, то что нужно. Простейшее понятное объяснение расчёта FIR без МАТКАДа. Допишу что ещё узнал. Конечно интересно получить такое же объяснение для тупых для случая IIR он же БИХ -кажется он должен быть ещё проще вследствии реккурентной формулы расчёта Generalизверг(1221 знак., 23.08.2023 09:37)
- Забыл сказать. Если есть сомнения, то вот этот сайт, если выбрать
там в выпадающем списке "Python script that generates the
coefficients" даст тебе пруф что изложенная выше общая примтивная
идея фильтрации рабочая. Питон код там примитивный, но видно что он
делает. Желаю удачи! RxTx(1 знак., 23.08.2023 01:31, ссылка)
- А вот сайт не поможет. Там питон использует встроенную функцию МАТКАДа - Generalизверг(23.08.2023 08:55)
- Вот такой "аналог RC" чем плох? SciFi(190 знак., 22.08.2023 23:20)
- Это почти то же, что Генерал изначально написал - Kpoк(22.08.2023 23:53)
- именно то же самое - Generalизверг(22.08.2023 23:59)
- крутизна очень маленькая, плохо давит ВЧ - Generalизверг(22.08.2023 23:49)
- А если каскадировать? - SciFi(22.08.2023 23:50)
- так и делаем, но как анализировать АЧХ, задержку? Это мб включено в
цепь регулирования. А такие фильтры НИГДЕ НЕ ОПИСАНЫ. бля - Generalизверг(22.08.2023 23:58)
- > но как анализировать АЧХ, задержку lloyd(159 знак., 23.08.2023 08:12)
- так и делаем, но как анализировать АЧХ, задержку? Это мб включено в
цепь регулирования. А такие фильтры НИГДЕ НЕ ОПИСАНЫ. бля - Generalизверг(22.08.2023 23:58)
- А если каскадировать? - SciFi(22.08.2023 23:50)
- Это почти то же, что Генерал изначально написал - Kpoк(22.08.2023 23:53)
- Вот коэффициентом и меняется. А ещё они хорошо каскадируются. - Kpoк(22.08.2023 22:21)
- у FIR постоянная времени меняется коэффициентами? Где можно найти
готовое (Ctrl-C Сtrl-V) решение? - Generalизверг(22.08.2023 22:36)
- КИХ крайне затратен на вычисления, по сравнению с БИХ. Но если
очень хочется, то коэффициенты КИХ находятся через обратное
косинус-преобразование Фурье от желаемой АЧХ. ps С БИХ всё сложнее - argus98(22.08.2023 22:54)
- Мне не надо "через обратное косинус-преобразование Фурье", мне
похрен АЧХ, FIR или IIR. Известна частота выборки ( 10Гц ) и число
тапов ( определяется ресурсом процессора, от 13 до 31), а частота
среза должна перестраиваться от 1 до 0,003 Гц - Generalизверг(22.08.2023 23:13)
- боюсь что это импосибле... ну давайте включим логитку: шаг 1, хотим
частоту среза 0,003Гц - это эквивалентно заявлению что фильтр
должен иметь "постоянную времени" не менее 1/0.003 = 333 сек. шаг2,
чтобы обеспечить такое время накопления фильтра нузно 333сек*10Гц =
3330 дискретных отсчетов сигнала с частотой дискретизации 10Гц.
шаг3, 3330 ни разу даже близко не равно 31 отсчету....... где я не
прав? нужно хотеть то что можно, и нельзя то чего ненужно. klen(1 знак., 22.08.2023 23:32, ссылка)
- ну примитивный БИХ (см. начало) бесплатно такое делает, неужели его как-то усовершенствовать нельзя? Generalизверг(140 знак., 22.08.2023 23:56)
- боюсь что это импосибле... ну давайте включим логитку: шаг 1, хотим
частоту среза 0,003Гц - это эквивалентно заявлению что фильтр
должен иметь "постоянную времени" не менее 1/0.003 = 333 сек. шаг2,
чтобы обеспечить такое время накопления фильтра нузно 333сек*10Гц =
3330 дискретных отсчетов сигнала с частотой дискретизации 10Гц.
шаг3, 3330 ни разу даже близко не равно 31 отсчету....... где я не
прав? нужно хотеть то что можно, и нельзя то чего ненужно. klen(1 знак., 22.08.2023 23:32, ссылка)
- Мне не надо "через обратное косинус-преобразование Фурье", мне
похрен АЧХ, FIR или IIR. Известна частота выборки ( 10Гц ) и число
тапов ( определяется ресурсом процессора, от 13 до 31), а частота
среза должна перестраиваться от 1 до 0,003 Гц - Generalизверг(22.08.2023 23:13)
- Это же ИИР - Kpoк(22.08.2023 22:43)
- да мне похрен как именно он называется, решение прошу - Generalизверг(22.08.2023 23:14)
- утром, на трезвую голову - Kpoк(22.08.2023 23:58)
- Скачай WinFilter и сгенери им Си-код. RxTx(1 знак., 22.08.2023 23:16, ссылка)
- он сам рассчитывает коэффициенты, а мне надо их рассчитывать в МК - Generalизверг(22.08.2023 23:26)
- Рассчитать заранее для нескольких частот среза, засунунть в таблицу
в программе и брать с таблицы при работе? - symbions(22.08.2023 23:46)
- нет, там минимум сотня наборов, проще рассчитывать - Generalизверг(22.08.2023 23:57)
- Ясно - symbions(23.08.2023 22:58)
- нет, там минимум сотня наборов, проще рассчитывать - Generalизверг(22.08.2023 23:57)
- Рассчитать заранее для нескольких частот среза, засунунть в таблицу
в программе и брать с таблицы при работе? - symbions(22.08.2023 23:46)
- он сам рассчитывает коэффициенты, а мне надо их рассчитывать в МК - Generalизверг(22.08.2023 23:26)
- да мне похрен как именно он называется, решение прошу - Generalизверг(22.08.2023 23:14)
- КИХ крайне затратен на вычисления, по сравнению с БИХ. Но если
очень хочется, то коэффициенты КИХ находятся через обратное
косинус-преобразование Фурье от желаемой АЧХ. ps С БИХ всё сложнее - argus98(22.08.2023 22:54)
- у FIR постоянная времени меняется коэффициентами? Где можно найти
готовое (Ctrl-C Сtrl-V) решение? - Generalизверг(22.08.2023 22:36)