Один из стандартных способов реализации фильтра Баттерворта - это каскад секций второго порядка, каждый из которых соответствует паре комплексно-сопряженных полюсов. Например, для фильтра четвертого порядка будет два раздела второго порядка. Если мы рассмотрим, как расположение полюсов для фильтра нижних частот изменяется в плоскости z, так как отсечка рассчитана на частоту от 0 Гц до Найквиста, путь, «сметенный» каждой парой полюсов, соответствует паре дуг внутри единичной окружности. , как показано на следующем рисунке [для фильтров четвертого порядка]:
Учитывая, как долго эти фильтры были вокруг, и учитывая тот факт, что эти «дуги» соответствуют прямым линиям в s-плоскости, само собой разумеется, что кто-то разработал бы форму реализации с единственным параметром, который может охватить полюса вдоль дуг в «время выполнения» [в отличие от «времени проектирования»]. Впрочем, ничего подобного я еще не встречал.
Относительно просто придумать различные способы сделать это, особенно в пределах сегментов диапазона, и с готовностью добавить немного дополнительных вычислений в это. Что мне интересно, так это следующее:
Существует ли какой-либо стандартный способ реализации перестраиваемого [цифрового] фильтра Баттерворта заданного порядка, который 1) имеет оптимальные свойства (например, эффективность, надежность) и 2) покрывает весь диапазон?
Или это действительно такая простая проблема, что никто не хочет говорить об этом? Если это так, кажется, что это будет отображаться в программах дизайна фильтров рядом с опциями для «статических» конструкций.
Я нашел это: A Многоцелевое Баттерворта фильтр с переменной частотой среза , но на первый Googling не кажется , что будет много информации о том, что в нем.
Обновление (повторно: ответы)
Просто чтобы быть немного более понятным:
- Я ищу «мета-дизайн» с параметром (скажем, от [0,1]), который автоматически настроит отсечку от постоянного тока до Найквиста (при сохранении нормализации усиления) для использования в изменяющейся во времени системе. Нечто подобное этому двухполюсному резонатору , за исключением ограничений Баттерворта. Идея состоит в том, что вычисление параметра будет более эффективным, чем выполнение обычной процедуры автономного проектирования во время выполнения.
- Я не обязательно даже ищу, как спроектировать «метафильтр» (т. Е. Делать математику с переменными вместо чисел), мне интересно, есть ли выбор для стандартных [неочевидных] форм реализации - потому что, скажем, простой подход, который соответствует статическому случаю, в конечном итоге приводит к численным проблемам в изменяющемся во времени случае.
- Возможно, нет никаких проблем, и простой подход - то, что используется на практике. Это было бы прекрасно. Меня беспокоит то, что я не видел, чтобы эта тема явно упоминалась ни в одном из источников, к которым я обращался, но, возможно, я просто упустил что-то действительно очевидное, поэтому я спрашиваю.
- В процессе добавления более подробной информации я натолкнулся на общий подход к параметрическим структурам биквада, который почти то, что я ищу (и имеет несколько хороших ссылок).
Обновление 2
Я ищу ответы, подобные тому, который я положил во втором комментарии к Джейсону R, а именно:
«О, да, вы хотите использовать параметризацию III-2b из такого-то тезиса, в форме решетки с повернутым состоянием, потому что она разрешает такой-то случай с краем при использовании минимального числа умножений».
Может быть, ничего подобного не существует, но у меня вопрос: есть ли, и если да, то что это, или где я могу найти это?
куш
Основываясь на ссылке на «каноническую форму наблюдателя», данной Тимом Уэскоттом в ветке comp.dsp в ответе Джейсона Р. , я решил предположить, что мне, возможно, придется начать копаться в литературе по системам управления, поэтому я попытался найти «Пространство состояний» Баттерворта, и это оказалось очень крутой процедурой проектирования / реализации не только параметрических Баттерворта, но и чебышевских и эллиптических фильтров:
Софокл Дж. Орфанидис, «Дизайн цифрового параметрического эквалайзера высокого порядка», J. Audio Eng. Soc., Vol. 53, с. 1026-1046, ноябрь 2005 г.
- Документ: http://www.ece.rutgers.edu/~orfanidi/ece348/hpeq.pdf
- Набор инструментов Matlab: http://eceweb1.rutgers.edu/~orfanidi/hpeq/
Это займет некоторое время, чтобы разобраться, но, исходя из того, что я прочитал до сих пор, я был бы очень удивлен, если это не то, что я ищу. Я передаю это Джейсону R для ссылки на comp.dsp, которая привела меня к статье Орфанидиса. Его ответ также является хорошим практическим обзором проектирования фильтров Баттерворта.
источник
Да, есть стандартные формы реализации для Баттерворта, и почти каждый ответ фильтра. Все они полностью реализованы в моей библиотеке фильтров с открытым исходным кодом. Вот фрагмент кода, который создает пары полюс / ноль для фильтра Баттерворта произвольной степени:
Как видите, положение полюсов рассчитывается путем деления s-плоскости на «пары» равных отрезков.
Подходящий код предоставляется для всех распространенных типов ответов фильтра: Чебышев, Эллиптик, Лежандр, включая полочные версии каждого.
https://github.com/vinniefalco/DSPFiltersDemo.git
https://github.com/vinniefalco/DSPFilters.git
источник