Я создаю канализатор, который состоит из сложного микшера, CIC- дециматора и фильтра компенсации / прореживания КИХ. Конечный FIR-фильтр может, если это имеет значение, быть реализован как более одного фильтра.
У меня вопрос, как мне спроектировать фильтр таким образом, чтобы он компенсировал очень неплоские частотные характеристики фильтра CIC? Создаете ли вы требуемый частотный отклик, вычисляя обратную величину отклика CIC, а затем пропускаете его через обратное БПФ, чтобы получить импульсный отклик?
Как вы можете видеть, хотя моя конкретная проблема относится к фильтрам CIC, мой вопрос на самом деле о том, как создать какой-либо фильтр компенсации искажений.
Спасибо за ваше время.
filters
fft
filter-design
Джим Клэй
источник
источник
Ответы:
Нижеследующее касается компенсации CIC и не является общей техникой «искажения». Но это простой метод "компенсации" неизменяемого "искажения". Если частотный отклик известен, обратная частота может использоваться для компенсации. Примеры, такие как фильтр CIC, где плохой фильтр может использоваться из-за уменьшенной сложности, позже компенсируются цепью сигналов. В этом примере частотная характеристика известна, и может использоваться обратное. Обратите внимание, что с многоскоростными фильтрами вы хотите использовать «используемый» спектр только после прореживания.
Как правило, чтобы компенсировать фильтр CIC, обратная реакция фильтра CIC может использоваться для генерации фильтра компенсации. CIC имеет ответ (см. Ссылку [r2] или [r3])
Где D - это задержка дифференцирования, M - скорость прореживания, а N - порядок фильтров (количество каскадных фильтров). Обратное можно указать как
Получив частотный отклик компенсационного фильтра, мы можем просто выбрать желаемую длину КИХ-фильтра. Длина РПИ зависит от приложения. Очевидно, что чем дольше КИХ-фильтр, тем лучше компенсация.
Ниже приведены графики этой прямой компенсации.
Ниже приведен код Python для создания частотных характеристик и графиков.
См. [R1] для других подходов и приближений .sinc−1
[r1] Альтера, "Понимание компенсационных фильтров CIC"
[r2] Р. Лайонс, «Понимание цифровой обработки сигналов», 2-е изд., Прентис Холл, Аппер-Седл-Ривер, Нью-Джерси, 2004
[r3] Р. Лайонс, «Понимание гребенчатых интегральных фильтров»
источник
M=8
иN=9
он создает те же графики, что и ссылка 1. Я использовал номенклатуру ближе к ссылке 2.Я думаю, что ответ Кристофера хороший. Я думал, что я добавлю один для нас ленивых / читеров.
Разобравшись с fdatool от Matlab (Инструмент проектирования и анализа фильтров), я обнаружил, что он может проектировать и моделировать как фильтры CIC, так и фильтры обратного сигнала, где фильтр обратного сигнала является фильтром компенсации искажения CIC.
Вы генерируете фильтр CIC, перейдя прямо на страницу «Создание многоскоростного фильтра» (кнопка слева в версии R2011b) и указав фильтр CIC. Затем вы можете установить для него все необходимые параметры, такие как скорость интерполяции / децимации, количество каскадов (Matlab называет это «разделами») и т. Д.
Вы создаете обратный фильтр Sinc, перейдя на страницу «Фильтр дизайна» (страницу, по которой инструмент запускается по умолчанию) и указав «Inverse Sinc Lowpass» в раскрывающемся меню «Низкий проход». Затем вы можете установить различные параметры для него. Он имеет несколько уникальных параметров в диалоговом окне «Параметры», включая «p», что соответствует количеству каскадов (показатель sinc).
Дизайн обратного фильтра sinc не был полностью удовлетворительным, хотя, поскольку его правильная работа выглядела не столько примером, сколько выяснением того, где находится моя полоса пропускания, каков был спад CIC в этот момент, а затем разработкой фильтра, который грубо отменил из этого свисания. Так как мой фильтр CIC имел четыре каскада, я бы подумал, что мне нужно будет установить «p» на четыре, но когда я это сделал, он был чрезмерно компенсирован. В итоге я оставил «р» на 1, значение по умолчанию.
Инструмент действительно светился, когда я сохранил оба фильтра в своем сеансе, а затем вошел в диспетчер фильтров и каскадировал их, чтобы увидеть общую частотную характеристику. Это было очень полезно и легко сделать.
источник
Не дублируя ответ здесь, смотрите
как сделать компенсационный фильтр CIC
который показывает очень простое решение с 3 ответвлениями для компенсации CIC.
Это относится к CIC или требуется любое применение для обратного Sinc (например, до цифро-аналогового преобразования).
Чтобы компенсировать любое общее поперечное искажение (то, которое может быть воспроизведено поперечным фильтром, а не динамическим шумовым искажением), я бы воспользовался подходом использования уравнений Винера-Хопфа для создания фильтра компенсации с использованием подхода наименьшей квадратной ошибки, в идеале используя обучающую последовательность, если она доступна, для сравнения желаемого с фактическим откликом и тренировки эквалайзера. Для приложения, показывающего это с использованием исходного кода, смотрите:
Компенсация АЧХ в аудиосигнале
источник