Групповая задержка в цифровых и аналоговых фильтрах.

Все что касается фильтрации
Ответить
T-Duke
Сообщения: 2
Зарегистрирован: 04 апр 2019, 11:58

Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение T-Duke » 04 апр 2019, 13:05

Приветствую.

Возник вопрос на который не могу найти однозначный ответ.

Допустим имеем потребность в узкополосном полосовом фильтре с центральной частотой например 500Гц. Подавления большого от него не требуется, хватит 20-30 дБ. Ширина перехода требуется довольно узкая не более 100Гц. При этом требуется минимальная групповая задержка. Частота дискретизации изначально была 16кГц, впоследствии понижена до 8кГц, Дальнейшее понижение частоты дискретизации невозможно, так как фильтр входит в систему автоматического регулирования, которая накладывает ограничения на фазовую задержку в цепи ОС.

Был реализован КИХ фильтр с требуемыми параметрами, с окном Кайзера и минимально возможной длиной. Все бы хорошо, если бы не огромная фазовая задержка КИХ фильтров - половина длины фильтра. Так как длина фильтра с такими параметрами все равно существенная - 77 элементов, то и фазовая задержка будет велика - 38 семплов. На частоте дискретизации 8кГц это дает фазовую задержку 4.8мс. Это жутко много.

Пришлось уменьшить требования к фильтру и расширить полосу перехода до 200Гц. В таком случае длина фильтра составила 39 и групповая задержка при 8кГц дискретизации - 2.5мс. Решил сопоставить параметры фильтра эквивалентным LC фильтром. Оцениваем величину задержки однозвенного аналогового LC фильтра с центральной частотой 500Гц и получаем 0.318мс. Чтобы получить примерно такую же полосу перехода как у цифрового фильтра придется объединить 4 звена что даст суммарную задержку 1.27мс.

Коррекция, суммировать задержки нужно геометрически. То есть sqrt(4 * 0.318^2) = 0.636мс. Итого эквивалентный аналоговый 4-х звенный фильтр в 3.9 раза лучше по времени задержки сигнала.

Проверим фильтр по полосе перехода. При расстройке на 200Гц, будет обеспечено подавление в 14.7 раза по напряжению, или 23дБ. Примерно те же параметры и у цифрового фильтра. Но вот фазовая задержка у аналогового фильтра меньше.
При чем это простое каскадное соединение LC-контуров. Если задаться целью построить оптимизированный фильтр, привлекая баттервоттов, чебышевых, эллиптику, то возможно задержка окажется еще меньше.

Отсюда вопрос - почему так? Почему аналоговые фильтры лучше? Понимаю что КИХ фильтры не являются физически реализуемыми подобиями аналоговых фильтров и чтобы сделать подобие аналоговых фильтров, придется переходить к цифровым БИХ фильтрам. А с ними я еще не работал.

Тогда назревает другой вопрос - можно ли перейдя к БИХ фильтрам, получить параметры по задержке, не хуже аналоговых фильтров? Ясно что придется пожертвовать линейной ФЧХ, но в принципе не суть. Самое главное, что в литературе не нашел однозначного описания фазовой задержки БИХ фильтров, пусть даже на одной конкретной частоте, допустим на центральной частоте. Так вот можно ли как-то оценить фазовую задержку полосовых БИХ фильтров, на одной частоте, при заданных параметрах подавления и ширины области перехода?

Ну и еще один вопрос немного в другую тематику. Цифровую фильтрацию можно осуществлять не только напрямую через фильтры, но и посредством спектрального преобразования, зануления компонент спектра в которых требуется подавление и обратного преобразования. Может кто в курсе, каким образом оценить фазовую задержку при таком способе фильтрации?
Последний раз редактировалось T-Duke 05 апр 2019, 00:09, всего редактировалось 1 раз.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 855
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение Бахурин Сергей » 04 апр 2019, 21:34

T-Duke писал(а):
04 апр 2019, 13:05
Тогда назревает другой вопрос - можно ли перейдя к БИХ фильтрам, получить параметры по задержке, не хуже аналоговых фильтров? Ясно что придется пожертвовать линейной ФЧХ, но в принципе не суть. Самое главное, что в литературе не нашел однозначного описания фазовой задержки БИХ фильтров, пусть даже на одной конкретной частоте, допустим на центральной частоте. Так вот можно ли как-то оценить фазовую задержку полосовых БИХ фильтров, на одной частоте, при заданных параметрах подавления и ширины области перехода?
Это надо проверить. Дело в том, что существует два распространенных метода преобразования аналогового фильтра в цифровой: метод инвариантной характеристики и билинейное преобразование. Первый метод заключается в дискретизации импульсной характеристики аналогового фильтра. По идее (не уверен точно, поэтому лучше проверить) значения задержек должны остаться равными задержкам аналогового фильтра (правда при этом немного искажается АЧХ из-за алиасинга, но насколько я понял это не критично в вашей задаче). Второй метод билинейного преобразования исключает алиасинг, но искажает ось частот, поэтому надо проверить значения группового запаздывания для этого случая тоже.

Есть еще один вариант: минимально-фазовый КИХ. Это такой КИХ, который имеет туже АЧХ, что и ваш фильтр, но при этом имеет минимальную задержку, вместо 38 будет скажем 8 или 10, (конечно это навскидку и надо тоже проверять, но это несложно).

Вот код в октаве как сделать минимально-фазовый КИХ:

Код: Выделить всё

clear all; close all; clc;
pkg load signal;

ORD = 32; % lowpass filter order

%linear phase FIR
h = fir1(ORD, 0.3);

% calculate  linear phase FIR roots 
z = roots(h);

% all roots outside unit circle will be reflected inside unit circle
y = 1;
for k = 1:length(z)
  if(abs(z(k))>1)
   z(k) = 1/z(k);
  end  
  y = conv([1, -z(k)], y);
end

% minimum phase FIR
y = y/sum(y)

%plot
figure; plot(0:ORD,  h,  0:ORD,  y)
T-Duke писал(а):
04 апр 2019, 13:05
Ну и еще один вопрос немного в другую тематику. Цифровую фильтрацию можно осуществлять не только напрямую через фильтры, но и посредством спектрального преобразования, зануления компонент спектра в которых требуется подавление и обратного преобразования. Может кто в курсе, каким образом оценить фазовую задержку при таком способе фильтрации?
равна половине длины FFT в сэмплах + время расчета двух FFT. В результате будет не меньше, чем 38 сэмплов вашего исходного фильтра, а характеристики будут хуже. Однозначно плохой метод занулять FFT.

T-Duke
Сообщения: 2
Зарегистрирован: 04 апр 2019, 11:58

Re: Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение T-Duke » 04 апр 2019, 23:46

Бахурин Сергей писал(а):
04 апр 2019, 21:34
равна половине длины FFT в сэмплах + время расчета двух FFT. В результате будет не меньше, чем 38 сэмплов вашего исходного фильтра, а характеристики будут хуже. Однозначно плохой метод занулять FFT.
У меня система с жестким периодом дискретизации. Время вычисления не важно, если оно помещается в период дискретизации. Значит выходит, что групповая задержка такая же как и в случае КИХ фильтра - половина длины.
Можете пояснить, почему плохо занулять спектральные компоненты? Чем это чревато? По логике, любой сложный сигнал состоит из набора синусоид разных амплитуд и фаз. Если убираем из исходного сигнала не нужные синусоиды, разве это не эквивалентно фильтрации?
Бахурин Сергей писал(а):
04 апр 2019, 21:34
Это надо проверить. Дело в том, что существует два распространенных метода преобразования аналогового фильтра в цифровой: метод инвариантной характеристики и билинейное преобразование. Первый метод заключается в дискретизации импульсной характеристики аналогового фильтра. По идее (не уверен точно, поэтому лучше проверить) значения задержек должны остаться равными задержкам аналогового фильтра (правда при этом немного искажается АЧХ из-за алиасинга, но насколько я понял это не критично в вашей задаче). Второй метод билинейного преобразования исключает алиасинг, но искажает ось частот, поэтому надо проверить значения группового запаздывания для этого случая тоже.
Алиасинг критичен. Сигнал приходит с усилителя у которого широкая полоса. Аппаратный антиалиасинговый фильтр обрезает частоты слишком высоко и это данность железа, исправить не получится. Бороться с этим можно путем подъема частоты дискретизации глубоко за частоту среза фильтра, и последующей децимацией. Но пока не до этого. В итоге имею аналоговую полосу на входе 50кГц, а дискретизация на 8кГц. Сам сигнал довольно низкочастотный до сотни герц, алиасить там нечему кроме шума. Но когда сигнал нестационарный, то есть не синус, а нечто пусть и гладкое но с довольно крутыми фронтами, уже важна полоса. Хотя сомневаюсь что гармоники дотягивают до половины частоты дискретизации. Ну это не суть с алиасингом можно будет разобраться.

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

Кстати при подсчете задержки каскада из 4-х LC фильтров ошибся. Групповая задержка равна не обычной сумме, а геометрической, то есть еще меньше, чем было подсчитано. Получается, что многозвенные аналоговые фильтры, куда лучше цифровых КИХ фильтров в плане задержек.

По сути, если правильно понял, нужно получить импульсную характеристику многозвенного аналогового фильтра который нужно повторить в цифре. А затем попробовать слепить на этой основе БИХ фильтр по одной из методик описанной в литературе. Есть над чем подумать. Для начала можно попробовать все для обычного LC-фильтра.

Простите маня невежу, а что такое октава? Я в основном программирую на плюсах, иногда на питоне, всякие разные мат-пакеты, пока обходил стороной.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 855
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение Бахурин Сергей » 05 апр 2019, 07:14

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

Синтез бих фильтров умеет любой матпакет. В питоне в том числе. если надо на си то dspl почти все есть надо добавить несколько функций.

Обнулять fft плохо потому что при обнулении не контролируется поведение АЧХ между сэмплами fft. В результате эффекта Гиббса получаются очень плохие фильтры

Vlad27
Сообщения: 79
Зарегистрирован: 06 апр 2015, 10:09
Откуда: г, Нижний Новгород (rif27@bk.ru)

Re: Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение Vlad27 » 09 апр 2019, 15:20

T-Duke писал(а):
04 апр 2019, 13:05
Допустим имеем потребность в узкополосном полосовом фильтре с центральной частотой например 500Гц. Подавления большого от него не требуется, хватит 20-30 дБ. Ширина перехода требуется довольно узкая не более 100Гц. При этом требуется минимальная групповая задержка. Частота дискретизации изначально была 16кГц, впоследствии понижена до 8кГц,
Отсюда вопрос - почему так? Почему аналоговые фильтры лучше? Понимаю что КИХ фильтры не являются физически реализуемыми подобиями аналоговых фильтров и чтобы сделать подобие аналоговых фильтров, придется переходить к цифровым БИХ фильтрам. А с ними я еще не работал.
Тогда назревает другой вопрос - можно ли перейдя к БИХ фильтрам, получить параметры по задержке, не хуже аналоговых фильтров? Ясно что придется пожертвовать линейной ФЧХ, но в принципе не суть. Самое главное, что в литературе не нашел однозначного описания фазовой задержки БИХ фильтров, пусть даже на одной конкретной частоте, допустим на центральной частоте. Так вот можно ли как-то оценить фазовую задержку полосовых БИХ фильтров, на одной частоте, при заданных параметрах подавления и ширины области перехода?
Ваша проблема довольно типична для большинства приложений ЦОС. КИХ-фильтры с симметричной ИХ имеют наихудшую селективную способность и громадную инерционность за счёт очень большой длины да и программной, а не аппаратной реализации на FPGA. А что же вы ждали? Если всё же нет возможности их реализовать на кристалле, то хотя-бы следует отказаться от симметрии ИХ и работать со свободными (несимметричными) коэффициентами - длина фильтра обычно уменьшается раза в три, и ГВЗ тоже. Но лучже в плане задержки перейти на БИХ-фильтры с их великолепными селективными возможностями при малом числе отсчётов.
По поводу вашей задачи - подскажите какая полоса пропускания фильтра и какой сигнал вы фильтруете, не ФМС часом? Здесь мы очень эффективно применяем гауссовы БИХ-фильтры и, обычно, минимально-фазовые, что и обеспечивает минимальное ГВЗ.
Вложения
Ris_4-39.gif
Ris_4-39.gif (6.7 КБ) 656 просмотров

Vlad27
Сообщения: 79
Зарегистрирован: 06 апр 2015, 10:09
Откуда: г, Нижний Новгород (rif27@bk.ru)

Re: Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение Vlad27 » 11 апр 2019, 11:36

T-Duke писал(а):
04 апр 2019, 13:05
Имеем потребность в узкополосном полосовом фильтре с центральной частотой например 500 Гц. Подавления большого от него не требуется, хватит 20-30 дБ. Ширина перехода требуется довольно узкая не более 100 Гц. При этом требуется минимальная групповая задержка. Частота дискретизации изначально была 16 кГц, впоследствии понижена до 8 кГц.
Был реализован КИХ фильтр с требуемыми параметрами, с окном Кайзера и минимально возможной длиной. Все бы хорошо, если бы не огромная фазовая задержка КИХ фильтров - половина длины фильтра. Так как длина фильтра с такими параметрами все равно существенная - 77 элементов, то и фазовая задержка будет велика - 38 семплов. На частоте дискретизации 8 кГц это дает фазовую задержку 4.8 мс. Это жутко много.
Можно ли как-то оценить фазовую задержку полосовых БИХ фильтров, на одной частоте, при заданных параметрах подавления и ширины области перехода?
В качестве примера, попросил магистранта просчитать вашу задачу пакетом ЦНП под fs=8 кГц, а затем и под fs=16 кГц. Если в узкополосном фильтре относительная полоса (2df/fo) менее 10%, то лучшим решением, с нашей т.з., является гауссова форма АЧХ (или близкая). Поэтому синтезировался гауссов БИХ-фильтр 12-го порядка с центральной частотой 500 Гц и выходом на затухание 30 дБ при расстройке на 100 Гц. Ниже приведены его характеристики. Фазовая нелинейность в полосе пропускания 50 Гц менее 1 градуса (по критерию СКО), а значение ГВЗ на центральной частоте 500 Гц в районе 9 мс, т.е. больше, чем в вашем КИХ с линейной ФЧХ. Это и понятно, т.к. ФЧХ гауссова фильтра линейна только в полосе пропускания, что и нужно для фильтрации полезного сигнала, а вне полосы - да какая угодно, лишь бы селективность фильтра не портила. И, по-моему, вы неправильно связываете инерционность системы с ГВЗ фильтра. Инерционность определяется, в основном, порядком фильтра, сколько отсчётов за такт вы обрабатываете, а ГВЗ - формой ФЧХ. Вот и здесь БИХ-фильтр с окном на 12 отсчётов имеет ГВЗ больше, чем КИХ-фильтр с окном 76 отсчётов. Решение под fs=16 кГц имеет похожие хар-ки, правда пришлось увеличить порядок фильтра и внеполосную расстройку до 140 Гц.
Вложения
Forum27.gif
Faza_pol.gif
Faza_pol.gif (6.75 КБ) 635 просмотров
Faza_ALL+FIR.gif
Faza_ALL+FIR.gif (5.34 КБ) 635 просмотров
GVZ_ALL+FIR.gif
GVZ_ALL+FIR.gif (4.54 КБ) 635 просмотров

Дмитрий
Сообщения: 1
Зарегистрирован: 14 апр 2017, 21:24

Re: Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение Дмитрий » 15 апр 2019, 21:46

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

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 855
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка в цифровых и аналоговых фильтрах.

Сообщение Бахурин Сергей » 16 апр 2019, 08:24

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

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость