|
Расчет БИХ фильтра, Зачем расчитывать фильтры высоких порядков Баттерворта или Чебышева, е |
|
|
|
Jul 26 2006, 15:52
|
Группа: Новичок
Сообщений: 10
Регистрация: 7-04-05
Пользователь №: 3 934

|
Зачем расчитывать фильтры высоких порядков(например Баттерворта или Чебышева), если можно расчитать одну секцию второго порядка и соеденить их сколько надо(+ если надо добавить секцию 1 порядка) ?
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 32)
|
Jul 26 2006, 16:18
|
Группа: Новичок
Сообщений: 10
Регистрация: 7-04-05
Пользователь №: 3 934

|
Цитата При одинаковых секциях нельзя получить большую крутизну спада АЧХ фильтра. А почему ? Разве два БИХ фильтра соединеных последовательно не увеличат суммарную крутизну ?
Сообщение отредактировал ChipMicro - Jul 26 2006, 16:20
|
|
|
|
|
Jul 26 2006, 16:34
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(ChipMicro @ Jul 26 2006, 20:18)  Цитата При одинаковых секциях нельзя получить большую крутизну спада АЧХ фильтра. А почему ? Разве два БИХ фильтра соединеных последовательно не увеличат суммарную крутизну ? Частота среза также сдвинется. Получится, что для фильтра с бесконечным числом одинаковых звеньев при не равной нулю частоте среза (или полосе пропускания для ПФ) крутизна спада АЧХ будет конечной и вполне определённой величиной.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Jul 26 2006, 18:23
|

Electrical Engineer
     
Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778

|
Цитата(ChipMicro @ Jul 26 2006, 20:18)  Цитата При одинаковых секциях нельзя получить большую крутизну спада АЧХ фильтра. А почему ? Разве два БИХ фильтра соединеных последовательно не увеличат суммарную крутизну ? не знаю насколько удачной может показаться следующая метафора: разложение на гармоники импульта типа меандра: вертикальный фронт получается при сложении волн различных частот: притом самая большая амплитуда - у синуса той же частоты. ЗЫ: отличие одно - здесь сложение волн, а в ЧХ - умножение upd: даже картиночка нашлась =)
Сообщение отредактировал Doka - Jul 27 2006, 07:46
|
|
|
|
|
Jul 27 2006, 15:59
|
Группа: Новичок
Сообщений: 10
Регистрация: 7-04-05
Пользователь №: 3 934

|
C Меандром все кристально, а вот с фильтром пока не совсем. Зто из за одинаковой фазовой хар-ки что ли ? Или синусоиды аналоги секций ???
|
|
|
|
|
Jul 27 2006, 18:24
|
Группа: Новичок
Сообщений: 10
Регистрация: 7-04-05
Пользователь №: 3 934

|
Станислав писал : Цитата Частота среза также сдвинется. Получится, что для фильтра с бесконечным числом одинаковых звеньев при не равной нулю частоте среза (или полосе пропускания для ПФ) крутизна спада АЧХ будет конечной и вполне определённой величиной. На сколько, куда и почему сдвинется частота среза ?
|
|
|
|
|
Jul 28 2006, 12:41
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(ChipMicro @ Jul 27 2006, 22:24)  Станислав писал : Цитата Частота среза также сдвинется. Получится, что для фильтра с бесконечным числом одинаковых звеньев при не равной нулю частоте среза (или полосе пропускания для ПФ) крутизна спада АЧХ будет конечной и вполне определённой величиной. На сколько, куда и почему сдвинется частота среза ? Перемножьте две АЧХ, скажем, звеньев НЧ 2-го порядка и посмотрите результирующую АЧХ. Точка -3дБ, например, "отъедет" к нулевой частоте.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Jul 28 2006, 17:12
|
Группа: Новичок
Сообщений: 10
Регистрация: 7-04-05
Пользователь №: 3 934

|
Цитата Перемножьте две АЧХ, скажем, звеньев НЧ 2-го порядка и посмотрите результирующую АЧХ. Точка -3дБ, например, "отъедет" к нулевой частоте. Правильно, она и должна отъехать при одинаковых звеньях. Из-за стремления к 0 части АЧХ, коэф-т усиления которой <1. При бесконечном числе одинаковых звеньев, Чебышевский ФНЧ превратится в идеальную "ступеньку", если не считать маленькие неравномерности в ПП, которые правда приведут к сильным провалам. Другая ситуация с Баттервортом, там вся характеристика, кроме близкой 0 окажется ниже 0 dB. Причинами описанных ситуаций является неровная АЧХ в ПП. Кажется я сам ответил на свой вопрос.
|
|
|
|
|
Dec 31 2006, 13:55
|
Группа: Новичок
Сообщений: 10
Регистрация: 7-04-05
Пользователь №: 3 934

|
Цитата(Stanislav @ Aug 1 2006, 11:09)  КАК может чебышёвский ФНЧ состоять из одинаковых звеньев?  Элементарно, как любой другой фильтр.
|
|
|
|
|
Dec 31 2006, 18:51
|
Гуру
     
Группа: Свой
Сообщений: 2 932
Регистрация: 13-10-06
Из: Уфа
Пользователь №: 21 290

|
Цитата(Stanislav @ Aug 1 2006, 12:09)  Простите, но подумайте о том, что Вы пишете. Например, как понимать вот это: Цитата(ChipMicro @ Jul 28 2006, 21:12)  ...При бесконечном числе одинаковых звеньев, Чебышевский ФНЧ превратится в идеальную "ступеньку", если не считать маленькие неравномерности в ПП, которые правда приведут к сильным провалам... ??? КАК может чебышёвский ФНЧ состоять из одинаковых звеньев?  Цитата(ChipMicro @ Dec 31 2006, 15:55)  Цитата(Stanislav @ Aug 1 2006, 11:09)  КАК может чебышёвский ФНЧ состоять из одинаковых звеньев?  Элементарно, как любой другой фильтр. По теме: Синтез фильтров и имеет свей целью оптимизировать именно переходный участок в совоокупности с другими ограничениями- неравномерность АЧХ в полосе пропускания,ФЧХ, переходная х-ка... что, впрочем,с математической точки зрения эквивалентно.и притом- при минимальном порядке цепи. С Новым годом! Stanislav, признаться, я питал некоторые иллюзии, что здесь несколько лучше, чем в реальной жизни...( я здесь недавно, всё вышеизложенное не к Вам).
--------------------
"...Дьяволу ведомо многое не потому, что он- Дьявол, а потому, что он стар..."
|
|
|
|
|
Dec 31 2006, 19:02
|
Группа: Новичок
Сообщений: 10
Регистрация: 7-04-05
Пользователь №: 3 934

|
Переходной участок можно сделать близким к ступеньке, но толку от этого не будет если пп/пз сущевственно неравномерна.
|
|
|
|
|
Jan 13 2007, 10:55
|
Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333

|
Цитата(ChipMicro @ Jul 26 2006, 15:52)  Зачем расчитывать фильтры высоких порядков(например Баттерворта или Чебышева), если можно расчитать одну секцию второго порядка и соеденить их сколько надо(+ если надо добавить секцию 1 порядка) ? Давайте возьмём для аппроксимации нашего звена, например, функцию Чебышева(нормированную). F(W) = 1 / ( 1 + E * T(2,W/W0)) Для этого используем T(2, W/W0) - полином Чебышева второго порядка. E - некоторая константа положительная, < 1. Очевидно, что F(W) - принадлежит отрезку [1 / (1 + E), 1] при W из [0, W0] и стремится к нулю при W > W0. Случай W < 0 нас не интересует. функция Баттерворта F(W) = 1 / ( 1 + E*( (W/W0) ^2)) H(W) = П F(W) - аппроксимация квадрата АЧХ при последовательном соединении одинаковых звеньев . (Здесь П - это произведение) Кстати от сюда следует, что при бесконечном числе одинаковых звеньев АЧХ Чебышевского фильтра превращается в конечную последовательность единиц (не ступенька !), а АЧХ фильтр Баттерворта во что- то похожее на дельта функцию. При каждом добавлении звена у нас будут уменьшатся (в направлении нуля) значения H(W) отличные от единицы. Смысл, сказанного выше в том, что функции аппроксимации БИХ фильтров не превосходят единицы. И при последовательном соединении звеньев, АЧХ, вам будет сложнее контролировать характеристики (например, с помощью параметра E). Полученный фильтр, скорее всего, будет иметь более высокий порядок и неудобные для вычислений значения коэффициентов по сравнению с обычным фильтром (если взять одинаковые точности аппроксимации в полосе пропускания). При этом скорость затухания в полосе задержки будет такая же, как и у обычного фильтра того же типа и того же порядка. Параллельное соединение звеньев тоже ничего хорошего не обещает. А цель ЛДС(в данном случае фильтра), определяется поставленной задачей.
Сообщение отредактировал GinGreen - Jan 13 2007, 11:12
|
|
|
|
|
Oct 6 2007, 09:18
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
передо мной стояла задача сделать полосовой фильтр для 14КГц... получил коэффициенты с помощью следующего в Матлабе: [n14,Wn14]=cheb1ord(Wp14,Ws14,Rp,Rs); [b14,a14]=cheby1(n14,Rp,Wn14); получил фильтр 4 порядка по 9 коэффициентов А и В.... далее мне необходимо было промоделировать в проге на С++ этот процесс фильтрации, для этого использовал формулу y(n) = b(1) * x(n) + b(2) * x(n - 1) + ... + b(9) * x(n - 9) - a(1) * y(n - 1) - ... - a(9) * y(n - 9), ... в С++ всё работает и фильтрует... теперь мне то же самое необходимо сделать с помощью разбиения на секции 2 порядка (и проквантовать)... в МатЛабе это было сделано с помощью: hq14=qfilt('df2', {b14, a14}, 'quantizer', [Pn Fl]); hq1_14=sos(hq14,'up', 'inf'); получил 4 секции, и в Матлабе функцией filter всё фильтрует, но теперь мне надо то же самое повторить самому,но метаматической формулы для их реализации на С++ не получается составить... в чем-то ошибаюсь, но не могу понять, в чем.... помогите с этим вопросом...
|
|
|
|
|
Oct 6 2007, 17:51
|
Местный
  
Группа: Свой
Сообщений: 462
Регистрация: 26-06-07
Пользователь №: 28 723

|
Цитата(Stanislav @ Jul 26 2006, 20:34)  А почему ? Разве два БИХ фильтра соединеных последовательно не увеличат суммарную крутизну ? Частота среза также сдвинется. Получится, что для фильтра с бесконечным числом одинаковых звеньев при не равной нулю частоте среза (или полосе пропускания для ПФ) крутизна спада АЧХ будет конечной и вполне определённой величиной. Неверно. Крутизна спада АЧХ как раз будет пропорционально расти по мере роста числа звеньев, но будет портиться вид полосы пропускания. Фильтр высокого порядка тем и отличается от каскадного соединения звеньев низких порядков, что обеспечивает хорошую АЧХ в полосе пропускания и резкий переход к полосе заграждения.
|
|
|
|
|
Oct 8 2007, 17:31
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(SIA @ Oct 6 2007, 21:51)  Неверно. Крутизна спада АЧХ как раз будет пропорционально расти по мере роста числа звеньев, но будет портиться вид полосы пропускания. Фильтр высокого порядка тем и отличается от каскадного соединения звеньев низких порядков, что обеспечивает хорошую АЧХ в полосе пропускания и резкий переход к полосе заграждения. Да что Вы говорите? Не прошло и полутора лет, так сказать... Поясните мысль, как это Вы с помощью одинаковых звеньев 2-го порядка получите чебышевскую АЧХ, скажем, с частотой среза в 1 кГц. Можете взять не чебышевскую, а любую другую "хорошую АЧХ в полосе пропускания и резкий переход к полосе заграждения." А ещё почитайте учебники по данной тематике. На местном ФТП их есть несколько. Тогда, возможно, поймёте свою ошибку. PS. Вы вообще поняли, о чём здесь речь, уважаемый? Или родили свой пост "от балды", лишь бы написать что-нибудь?
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Oct 24 2007, 17:26
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
а почему меня игнорируют?... я не в той теме вопрос задал?... или он слишком глупый?
|
|
|
|
|
Oct 24 2007, 18:53
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(blackswan @ Oct 24 2007, 21:26)  а почему меня игнорируют?... я не в той теме вопрос задал?... или он слишком глупый? Каждая секция - это фильтр второго порядка. Коэфф-ты его даются при расчёте. Фильтруйте сигнал последовательно этими фильтрами, и всё будет ОК.  Цитата(GinGreen @ Jan 13 2007, 14:55)  Кстати от сюда следует, что при бесконечном числе одинаковых звеньев АЧХ Чебышевского фильтра превращается в конечную последовательность единиц (не ступенька !), а АЧХ фильтр Баттерворта во что- то похожее на дельта функцию... Раз уж подняли тему... Попробуйте рассчитать, во что выродится АЧХ бесконечного числа звеньев 2-го порядка, если потребовать для Чебышева пульсации в полосе пропускания, скажем, 1 дБ, а для Баттерворта полосу пропускания по -3 дБ, скажем, 1 кГц. Ведь эти критерии и лежат в основе расчёта данных фильтров.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Oct 25 2007, 05:30
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
Цитата(Stanislav @ Oct 24 2007, 21:53)  Каждая секция - это фильтр второго порядка. Коэфф-ты его даются при расчёте. Фильтруйте сигнал последовательно этими фильтрами, и всё будет ОК.  это я понял... и коэффициенты у меня есть... мне не до конца понятно, что является входными параметрами для каждой секции.... допустим у меня был простой фильтр 8-го порядка с 9-ю коэффициетами, чтоб получить 9-ый Y, надо использовать 9 входных отсчетов X и 8 предыдущих выходных отсчетов Y... теперь переходим к секциям... всё тот же 9-ый отсчет... в самую первую секцию я передаю уже Y8,Y7,X9,X8,X7 и провожу формулу Y9=B10*X9+B11*X8+B12*X7-A11*Y8-A12*Y7.... правильно?... а во вторую и последующие секции что я передаю в качестве трех X-ов и двух Y-ов...? если в качестве входного сигнала из трех X-ов передавать переменные отфильрованные три Y-ка (назовем их Y7',Y8',Y9'), то что передавать в качестве Y8,Y7 для полноты формулы?...
|
|
|
|
|
Oct 25 2007, 14:46
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
у меня DF2 - каноническая... хелпа нет, но форму посмотрел в книге Сергиенко... и ничего не понял... то, что я увидел, это Yk=Xk*B0 + Xk-1*A1 + Xk-2*A2 - Xk-1*B1 - Xk-2*B2 ... но этого не может быть, так как нет предыдущих Y... я не умею читать графы... у вас есть программа на каком-нибудь языке программирования, я так лучше пойму...
|
|
|
|
|
Oct 26 2007, 05:09
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
в одной книге я нашел объяснение... по нему получается вот такое... //n-текущий отсчет, N- количество секций xn=x[n]; w1=w2=0; for (k=1;k<=N;k++) {wk=xn - a[k][1]*w1 - a[k][2]; yk=b[k][0]*wk + b[k][1]*w1 + b[k][2]*w2; w2=w1; w1=wk; xn=yk; } y[n]=yk;
выдает отсчеты, похожие на правду, но в формуле должны присутствовать еще коэффициент(ы) усиления G... и тут путаница... в книге он умножался на xn в формуле wk ... при описании разбиения функцией sos в MATLAB я использовал 'up' и 'inf' ... в книге Сергиенко написано, что inf - масштабирование коэффициентов bi производится исходя из L8-нормы АЧХ секций, а что это значит, не знаю... я многие варианты вставки G перепробовал...
|
|
|
|
|
Oct 26 2007, 05:18
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(blackswan @ Oct 26 2007, 09:09)  ...я многие варианты вставки G перепробовал... Вот код для SOS из QEDIT2000: Код static double *m1, /* intermediate storage */ *m2; /* intermediate storage */
static void cas_d1 () { int i; double *a, *b, s0, s1; a = den; b = num; s0 = GAIN * get_input_data (); for (i = 0; i < SECTION; i++) { s1 = (s0 * b[0] + m1[i]) / a[0]; m1[i] = m2[i] + s0 * b[1] - s1 * a[1]; m2[i] = s0 * b[2] - s1 * a[2]; s0 = s1; a += 3; b += 3; } send_output_data (s1); }
|
|
|
|
|
Oct 26 2007, 19:48
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
сделал... не получается.... при амплитуде сигнала в 60 после фильтрации получаются очень маленькие дроби... и на синусоиду не похоже вроде... хочется узнать, что такое L8-норма и какие коэффициенты усиления при этом формируются...
|
|
|
|
|
Oct 27 2007, 10:17
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
9 точек... только график несимметричен относительно Ох, и прыгает из + в - когда захочет... я посмотрел в другой книге - Ваш вариант из QEDIT2000 аналогичен моему, только это 3-я форма, а у меня 1-ая канонического представления, и они эквивалентны... я тоже вставлял Gain, который мне расчитал MATLAB вот так xn=Gain*x[n]; и даже так уже в цикле wk=Gain*xn - a[k][1]*w1 - a[k][2]; для всех секций и для одной... умножал все Bi на него для всех секций и для одной(в книге Сергиенко сказано , что L-бесконечная форма масштабирует Bi)... получаются очень маленькие дроби... разве такое может быть при задаваемой амплитуде в 60 во входном сигнале?
|
|
|
|
|
Oct 28 2007, 09:14
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
плавучку не могу... только целочесленка.. собственно, Atmega... 16 разрядов, 8 под дробь.... подходит только вариант секций с канонической формой и вот этим "INF"-расчетом коэффициента усиления... как я понял, на выходе получаются дроби из-за масштабирования... только вот не могу понять, куда ставить этот множитель gain... в MATLAB работает, в моей проге не работает... коэффициенты я не округлял, оставил фильтр в том же виде, что и расчитанный...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|