Проблема, поставленная в вопросе, по-видимому, не имеет решения в замкнутой форме. Как упомянуто в вопросе и показано в других ответах, результат может быть преобразован в серию, которая может быть выполнена любым символическим математическим инструментом, таким как Mathematica. Однако термины становятся довольно сложными и безобразными, и неясно, насколько хороша аппроксимация, когда мы включаем термины до третьего порядка. Поскольку мы не можем получить точную формулу, возможно, было бы лучше вычислить решение численно, что, в отличие от аппроксимации, даст (почти) точный результат.
Однако это не то, о чем мой ответ. Я предлагаю другой путь, который дает точное решение путем изменения формулировки проблемы. Подумав некоторое время, выясняется, что именно спецификация центральной частоты и спецификация ширины полосы как отношения (или, что то же самое, в октавах) вызывает математическую неразрешимость. Есть два выхода из этой дилеммы:ω0
- укажите полосу пропускания фильтра дискретного времени как разность частот , где и - это нижняя и верхняя границы полосы фильтра дискретного времени, соответственно.Δω=ω2−ω1ω1ω2
- укажите соотношение и вместо одну из двух граничных частот или .ω2/ω1ω0ω1ω2
В обоих случаях возможно простое аналитическое решение. Поскольку желательно задавать полосу пропускания фильтра с дискретным временем как отношение (или, что то же самое, в октавах), я опишу второй подход.
Определим граничные частоты и с непрерывным временем с помощьюΩ1Ω2
|H(jΩ1)|2=|H(jΩ2)|2=12(1)
with , где - передаточная функция полосового фильтра второго порядка:Ω2>Ω1H(s)
H(s)=ΔΩss2+ΔΩs+Ω20(2)
с и . Обратите внимание, что и для .ΔΩ=Ω2−Ω1Ω20=Ω1Ω2H(jΩ0)=1|H(jΩ)|<1Ω≠Ω0
Мы используем билинейное преобразование для отображения граничных частот и фильтра с дискретным временем на граничные частоты и с непрерывным временем. Без ограничения общности мы можем выбрать . Для наших целей билинейное преобразование принимает формуω1ω2Ω1Ω2Ω1=1
s=1tan(ω12)z−1z+1(3)
соответствует следующему соотношению между частотами непрерывного и дискретного времени:
Ω=tan(ω2)tan(ω12)(4)
Из мы получаем , установив . С и вычисленными из , мы получаем передаточную функцию аналогового фильтра-прототипа из . Применяя билинейное преобразование , мы получаем передаточную функцию полосового фильтра с дискретным временем:(4)Ω2ω=ω2Ω1=1Ω2(4)(2)(3)
Hd(z)=g⋅z2−1z2+az+b(5)
с
gabc=ΔΩc1+ΔΩc+Ω20c2=2(Ω20c2−1)1+ΔΩc+Ω20c2=1−ΔΩc+Ω20c21+ΔΩc+Ω20c2=tan(ω12)(6)
Резюме:
Полоса пропускания фильтра с дискретным временем может быть указана в октавах (или, как правило, в виде отношения), и параметры аналогового фильтра-прототипа могут быть точно рассчитаны, так что достигается указанная полоса пропускания. Вместо центральной частоты мы указываем края полосы и . Центральная частота, определяемая как является результатом проекта.ω0ω1ω2|Hd(ejω0)|=1
Необходимые шаги следующие:
- Укажите желаемое соотношение ребер полосы и одного из ребер полосы (что, конечно, эквивалентно простому указанию и ).ω2/ω1ω1ω2
- Выберите и определите из . Вычислить и аналогового фильтра-прототипа .Ω1=1Ω2(4)ΔΩ=Ω2−Ω1Ω20=Ω1Ω2(2)
- Оцените константы чтобы получить передаточную функцию с дискретным временем .(6)(5)
Обратите внимание, что при более распространенном подходе, где и , фактические края полосы и являются результатом процесса проектирования. В предлагаемом решении можно указать края полосы, и является результатом процесса проектирования. Преимущество последнего подхода состоит в том, что полоса пропускания может быть указана в октавах, и решение является точным, то есть результирующий фильтр имеет точно указанную полосу пропускания в октавах.ω0Δω=ω2−ω1ω1ω2ω0
Пример:
Давайте определим полосу пропускания в одну октаву и выберем нижний край полосы как . Это дает верхний край полосы . Края полосы аналогового фильтра-прототипа: и из (с ) . Это дает и . С помощью получаем передаточную функцию с дискретным временемω1=0.2πω2=2ω1=0.4πΩ1=1(4)ω=ω2Ω2=2.2361ΔΩ=Ω2−Ω1=1.2361Ω20=Ω1Ω2=2.2361(6)(5)
Hd(z)=0.24524⋅z2−1z2−0.93294z+0.50953
который достигает точно ширины полосы в 1 октаву и указанных краев полосы, как показано на рисунке ниже:
Численное решение исходной задачи:
Из комментариев я понимаю, что важно уметь точно указывать центральную частоту для которой . Как упоминалось ранее, невозможно получить точное решение в замкнутой форме, и разработка серии приводит к довольно громоздким выражениям.ω0|Hd(ejω0)|=1
Для ясности хотелось бы обобщить возможные варианты с их достоинствами и недостатками:
- укажите желаемую пропускную способность как разность частот и укажите ; в этом случае возможно простое решение в замкнутой форме.Δω=ω2−ω1ω0
- указать края полосы и (или, что эквивалентно, ширину полосы в октавах и один из краев полосы); это также приводит к простому решению в замкнутой форме, как объяснено выше, но центральная частота является результатом проектирования и не может быть указана.ω1ω2ω0
- укажите желаемую пропускную способность в октавах и центральную частоту (как указано в вопросе); решение в замкнутой форме невозможно, и пока нет простого приближения. По этой причине я думаю, что желательно иметь простой и эффективный метод для получения численного решения. Это то, что объясняется ниже.ω0
Когда указывается мы используем форму билинейного преобразования с константой нормализации, отличной от той, которая используется в и :ω0(3)(4)
Ω=tan(ω2)tan(ω02)(7)
Мы определяем . Обозначим указанное отношение краев полосы фильтра с дискретным временем какΩ0=1
r=ω2ω1(8)
С мы получаем из иc=tan(ω0/2)(7)(8)
r=arctan(cΩ2)arctan(cΩ1)(9)
С , можно переписать в следующем виде:Ω1Ω2=Ω20=1(9)
f(Ω1)=rarctan(cΩ1)−arctan(cΩ1)=0(10)
Для данного значения это уравнение может быть решено для с помощью нескольких итераций Ньютона. Для этого нам понадобится производная от :rΩ1f(Ω1)
f′(Ω1)=c(r1+c2Ω21+1c2+Ω21)(11)
При мы знаем, что должен находиться в интервале . Даже при том, что возможно придумать более начальные решения, оказывается, что начальное предположение хорошо работает для большинства спецификаций и приведет к очень точным решениям только после итераций метода Ньютона:Ω0=1Ω1(0,1)Ω(0)1=0.14
Ω(n+1)1=Ω(n)1−f(Ω(n)1)f′(Ω(n)1)(12)
С получены с помощью нескольких итераций мы можем определить и , и мы используем и для вычисления коэффициентов фильтр с дискретным временем. Обратите внимание, что константа теперь задается как .Ω1(12)Ω2=1/Ω1ΔΩ=Ω2−Ω1(5)(6)cc=tan(ω0/2)
Пример 1:
Давайте определим и полосу пропускания октавы. Это соответствует соотношению . С начального приближения из , итерации метода Ньютона привели в растворе , из которой коэффициенты дискретного времени может быть вычислена , как описано выше. На рисунке ниже показан результат:ω0=0.6π0.5r=ω2/ω1=20.5=2–√=1.4142Ω1=0.14Ω1=0.71
Фильтр был рассчитан с помощью этого сценария Matlab / Octave:
% технические характеристики
bw = 0,5; % желаемой полосы пропускания в октавах
w0 = 0,6 * pi; % резонансная частота
г = 2 ^ (мс); % отношение краев полосы
W1 = .1; % начальная догадка (работает для большинства спецификаций)
Nit = 4; % # Ньютоновских итераций
с = загар (w0 / 2);
% Ньютон
для i = 1: нит,
f = r * атан (с * W1) - атан (с / W1);
fp = c * (r / (1 + c ^ 2 * W1 ^ 2) + 1 / (c ^ 2 + W1 ^ 2));
W1 = W1 - f / fp
конец
W1 = абс (W1);
if (W1> = 1), error ('Не удалось сходиться. Уменьшить значение первоначального предположения.'); конец
W2 = 1 / W1;
dW = W2 - W1;
% дискретный фильтр времени
масштаб = 1 + dW * c + W1 * W2 * c ^ 2;
b = (dW * c / масштаб) * [1,0, -1];
a = [1, 2 * (W1 * W2 * c ^ 2-1) / шкала, (1-dW * c + W1 * W2 * c ^ 2) / шкала];
Пример 2:
Я добавляю еще один пример, чтобы показать, что этот метод также может работать со спецификациями, для которых большинство приближений даст несмысленные результаты. Это часто имеет место, когда желаемая ширина полосы и резонансная частота являются большими. Давайте фильтр с и октавы. Четыре итерации метода Ньютона с начальным предположением приводят к конечному значению , т. пропускной способности аналогового прототипа октав. Соответствующий фильтр с дискретным временем имеет следующие коэффициенты, и его частотная характеристика показана на графике ниже:ω0=0.95πbw=4Ω(0)1=0.1Ω1=0.00775log2(Ω2/Ω1)=log2(1/Ω21)≈14
b = 0,90986 * [1,0, -1];
а = [1,00000 0,17806 -0,81972];
Результирующие края полосы половинной мощности равны и , которые на самом деле находятся на расстоянии октавы (т.е. с коэффициентом ).ω1=0.062476πω2=0.999612π416