Перейти к содержанию
    

Расчет цифровых фильтов

Давно интересует следующий вопрос.

В отечественной литературе, в которой рассматриваются цифровые нерекурсивные (с конечной импульсной характеристикой) фильтры, достаточно подробно и четко описаны методы расчета коэффициентов

импульсной характеристики. Однако вопрос выбора порядка (числа коэффициентов импульсной характеристики) либо совсем пропущен, либо описан общими фразами (например, на основе метода линейного программирования).

Если кто в своей практике использовал цифровые фильтры, поделитесь опытом - по какой формуле можно определить (или хотя бы оценить) порядок фильтра или по какой методике его выбирать.

Если укажите ссылку на литературу, будет просто замечательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я использовал функции из MATLAB. Они описаны в книге Сергиенко Цифровая обработка сигналов. http://www.books.ru/shop/books/29769.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А существует ли где(и доступна ли) книжечка(или ссылка в инете) где описано, как всю эту богодельню можно посчитать ручками, на бумажке? Ну захотелось мне изменить коэффициент прямоугольности у фильтра, или неравномерность ГВЗ меня не устраивает - я книжечку открыл(а там глядишь и по памяти) и хотя бы прикинул все эти причиндалы на листочке.

P/S: Рабинера с Гоулдом не предлагать. Впрочем, этих друзей сейчас и не купить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

<как всю эту богодельню можно посчитать ручками, на бумажке?>

Если так охото руками, чего в КИХ считать. Имеете импульсную, тупо дискретизируете на разрядность коэфф. по амплитуде, по времени делите на кол-во коэфф. Можно и через Z-преобразование, но оно нужно? И вообще, если это ради академического эксперимента, тогда правильно, ну а если Вы думаете что MatLab это криво делает, то сильно заблуждаетесь. Там можно без проблем получить нужный фильтр посредством sptool, далее уточнив структуру фильтра вытащить коэфф хош для КИХ хош для десятка видов БИХ. Более того с помощью другой утилитки (не помню название) можно рассмотреть АЧХ,ФЧХ и т.п. в зависимости от арифметики и разрядности.

 

<P/S: Рабинера с Гоулдом не предлагать. Впрочем, этих друзей сейчас и не купить. >

А чего ее покупать, она на ФТП валяется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О-о, не обратил сперва внимания ссылку на книгу. Книжка супер!

В ней кстати все эти тонкости как раз по средством MatLab рассматриваются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если хочеш узнать как выбрать порядок фильтра, то необходимо читать книги по аналоговой схемотехники. Там целые главы посвещаны характеристикам и параметрам фильтров.

Выбрав необходимые параметры фильра (Тип фильтра, коэффициент передачи, частоты среза, затухание и. т.д) очени легко получить все необходимые данные для цифрового фильтра в том часле и порядок фильтра.

В Maltabe хорошо реализована возможность расчета фильтров. Там даже автоматом структуру получить можно, но если хочеш действотельно понять то почитай немного теорию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К 3,14

Конечно ради академического экспиремента, ну и ради понимания техпроцесса. А на FTP меня, увы, не пускают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарен всем за ответы.

Ну а теперь по порядку.

 

Использование MatLaba для вычисления параметров цифрового фильтра конечно удобно и, в ряде случаев (а может быть и в большинстве), когда фильтр применяется для обработки определенного сигнала, это и целесообразно. Но в моей задаче это не подходит.

Программа регистрирует различные сигналы (с различным спектром) в заданном диапазоне частот.

В программе предусмотрена секция, где пользователь (оператор) сам задает параметры АЧХ фильтра, а программный модуль должен вычислять коэффициенты импульсной характеристики.

 

Книгу Сергиенко встречал на книжных полках, но пока до нее не дошел. Если кто ею обладает или изучал в ней данный раздел скажите - описан ли там метод расчета или там указано как работать с соответствующими

функциями MatLaba.

 

 

Если хочеш узнать как выбрать порядок фильтра, то необходимо читать книги по аналоговой схемотехники. Там целые главы посвещаны характеристикам и параметрам фильтров.

Выбрав необходимые параметры фильра (Тип фильтра, коэффициент передачи, частоты среза, затухание и. т.д) очени легко получить все необходимые данные для цифрового фильтра в том часле и порядок фильтра.

 

Насколько я помню в литературе описан метод, в котором мы сначала определяем параметры аналогового фильтра, а затем определенным способом переходим к цифровому рекурсивному фильтру (с бесконечной импульсной характеристикой). Как перейти к фильтру с конечной импульсной

характеристикой я, честно говоря, не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

<...описан ли там метод расчета или там указано как работать с соответствующими функциями MatLaba.>

Это учебник для ВУЗов, просто помимо теории там приводятся примеры на Matlab, суть численных методов матлаба ест-но не раскрывается.

 

<Программа регистрирует различные сигналы (с различным спектром) в заданном диапазоне частот.

В программе предусмотрена секция, где пользователь (оператор) сам задает параметры АЧХ фильтра, а программный модуль должен вычислять коэффициенты импульсной характеристики.>

Я думаю в Вашем случаее самое оптимальное решение - ДПФ. Не забывайте, хотя КИХ и всегда устойчив, все-таки его АЧХ зависит от разядности. Неравномерность АЧХ в полосе будет постоянно плавать, "фронт" и "спад" то же. Про ФЧХ вообще молчу. И потом, сам алгоритм будет весьма запутаным. Да и приличного коэфф. прямоугольности тоже не стоит ожидать.

 

<Насколько я помню в литературе описан метод, в котором мы сначала определяем параметры аналогового фильтра>

самое главное в фильтростроении - получить импульсную характеристику (сам фильтр осуществляет свертку импульсной и сигнала).

 

<Как перейти к фильтру с конечной импульсной>

Самый тупой способ я выше описывал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>Насколько я помню в литературе описан метод, в котором мы сначала определяем параметры аналогового фильтра, а затем определенным способом переходим к цифровому рекурсивному фильтру (с бесконечной импульсной характеристикой). Как перейти к фильтру с конечной импульсной

характеристикой я, честно говоря, не знаю.

 

Когда выбирается фильтр получается передаточная функция из которой формируются звенья цифрового фильтра, а порядок количество звеньев. т. е. фактически фильтр N го порядка строется из N звеньев (или N/2 если звено второго порядка).

Проблема рекурсивного фильтра заключается в упрощении звена представив его суммой множеств произведений. В вашем случае такой метод сомнителен и я согласен с "3.14".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Метод ДПФ не подходит. Требуется непрерывное отображедние входного сигнала и сигнала с выхода фильтра (сигналы низкочастотные). С использованием ДПФ сигнал будет отображаться секциями - сначала накопление секции входных отсчетов, преобразования/обработка и отображение секции.

 

По поводу предложенных методов немного не уловил.

 

для 3.14

 

Допустим мы имеем непрерывную во времени функцию импульсной характеристики.

<тупо дискретизируете на разрядность коэфф. по амплитуде>

Я так понял дискретизируем ее по уровню. Шаг квантования выбираем с учетом разрядности коэффициентов импульсной характеристики.

Далее <по времени делите на кол-во коэфф>

Опять же как я понял надо оценить время, когда импульсная характеристика приблизится к нулю до какого-то порога. И это время надо разделить на число коэффициентов импульсной характеристики цифрового фильтра. Но число этих коэффициентов нам как-раз и надо определить.

 

для AllSeeker

 

Давайте рассмотрим на примере ФНЧ Батерворта 2-го порядка. Определяем его передаточную функцию (непрерывная функция). Из нее <формируются звенья цифрового фильтра>. Как я понял звено - это коэффициент импульсной импульсной характеристики и элемент задержки на 1 такт Z^(-1)

Если можно объясните поподнее как производится расчет колличества и параметров этих звеньев.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>> Давайте рассмотрим на примере ФНЧ Батерворта 2-го порядка. Определяем его передаточную функцию (непрерывная функция). Из нее <формируются звенья цифрового фильтра>. Как я понял звено - это коэффициент импульсной характеристики и элемент задержки на 1 такт Z^(-1).

 

 

Немного не так. Если рассматривать фильтр первого порядка (обычная RC цепочка) то передаточная функция A(s) = A0/(1+a*s) и звено действительно описывается как элемент задержки на 1 такт Z^(-1). Передаточная функция фильтра второго порядка A(s) = A0/(1+a*s+b*s*s) и звено содержит несколько линий задержек. В зависимости от типа преобразований количество и структура звена меняется (для звена 2-го порядка от 2-х элементов задержки до 4-х).

Звенья 2-го порядка очень тяжко расписывать их много и они разные. Я вижу, фильтры первого порядка понятны на них и поясню.

Фильтр 2-го порядка есть не что иное как 4 последовательно включённых фильтра 1-го порядка. Соответственно получаем четыре последовательно включенных элемента задержки.

 

 

P. S. Старался упростить себе жизнь как мог :) (такое ощущение - перестарался).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to Michel

Я так вижу теперь Вас на БИХ потянуло. Учтите, теперь к той куче гемороя описываемой ранее прибавляется неустойчивость вызванная округлениями коэфф. Да и АЧХ ФЧХ будет еще сильнее зависить от них же. Может Вам заранее просчитать и проанализировать весь ряд БИХ фильтров с шагом по частоте и залить их во внешнюю флешку типа DataFlash. По времени у Вас расчет всяко больше займет.

 

to AllSeeker

<Фильтр 2-го порядка есть не что иное как 4 последовательно включённых фильтра 1-го порядка. Соответственно получаем четыре последовательно включенных элемента задержки.>

Как то это странно звучит, всю жизнь было - "Фильтр первого порядка обеспечивает затухание в 10дБ на декаду, второго 20дБ..". Зачем 4?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3.14:

Как то это странно звучит, всю жизнь было - "Фильтр первого порядка обеспечивает затухание в 10дБ на декаду, второго 20дБ..". Зачем 4?

 

- А оно и сейчас так. :).

 

Я конечно извиняюсь, что заведомо, но без злого умысла выдал ошибку. Два там звена! Обидно, что Michel не как не отреагировал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для AllSeeker.

 

Чувствую мы как-то переключились на другую тему. Вовремя не заметил. что перешли на расчет рекурсивных (БИХ) фильтров. Но основной принцип расчета понял. Все же вопрос выбора числа коэффициентов импульсной характеристики нерекурсивного фильтра остается актуальным.

По поводу того, что не отреагировал - не было возможности просмотреть сообщения форума, но чувствую разобрались, добавить нечего.

 

 

Для 3.14

 

Не в плане спора - чувствую, что не до конца все понимаю. В частности, нерекурсивные ФНЧ фильтры имеют линейную ФЧХ, АЧХ (в том числе и ширину переходной полосы) задаем сами (например, по методу частотной выборки), если выберем достаточную разрядность регистров, то можем получить приемлимую точность вычисления. Алгоритм вычисления коэффициентов импульсной характеристики четко определен. В чем может быть проблема.

Неравномерность АЧХ есть, от нее никуда не дется. Меня и интересует зависимость уровня пульсаций от ширины переходной полосы и числа коэффициентов импульсной характеристики и как производится выбор и этого числа на практике.

 

 

P.S. В очередной раз пересматривал сообщения форума и по ходу дела возник небольшой вопрос.

Дело в том, что в силу определенных причин приходилось работать в Mathcade, а до изучения MathLaba пока не дошли руки, хотя знаю, что это достаточно это мощный инструмент.

В качестве ликбеза скажите какие параметры мы задаем на входе функции по расчету цифровых фильтров, а какие получаем на выходе.

А то я смотрел описание sptool (правда бегло) и честно говоря доконца не разобрался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...