Здається, що проблема, поставлена у питанні, не має рішення закритої форми. Як згадується у запитанні та показано в інших відповідях, результат може бути сформований у ряд, який може бути виконаний будь-яким символічним інструментом математики, таким як Mathematica. Однак терміни стають досить складними та потворними, і незрозуміло, наскільки добре наближення, коли ми включаємо терміни до третього порядку. Оскільки ми не можемо отримати точну формулу, може бути краще обчислити рішення чисельно, що, на відміну від наближення, дасть (майже) точний результат.
Однак це не моя відповідь. Я пропоную інший маршрут, який дає точне рішення, змінивши формулювання проблеми. Поміркувавши про це деякий час, виявляється, що саме специфікація центральної частоти та специфікація пропускної здатності як співвідношення (або, що еквівалентно, в октавах) викликає математичну непридатність. Існує два шляхи виходу з дилеми:ω0
- вкажіть пропускну здатність фільтра дискретного часу як різницю частот , де і - нижній і верхній краї діапазону фільтра дискретного часу відповідно.Δω=ω2−ω1ω1ω2
- співвідношення , а замість одну з двох крайових частот або .ω2/ω1ω0ω1ω2
В обох випадках можливе просте аналітичне рішення. Оскільки бажано прописати пропускну здатність фільтра дискретного часу у співвідношенні (або, що еквівалентно, в октавах), я опишу другий підхід.
Давайте визначимо крайові частоти та фільтра безперервного часу заΩ1Ω2
|H(jΩ1)|2=|H(jΩ2)|2=12(1)
з , де - функція передачі фільтра пропускання смуг другого порядку:Ω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 = .6 * pi; % резонансної частоти
r = 2 ^ (bw); % відношення ребер смуги
W1 = .1; % початкової здогадки (працює для більшості специфікацій)
Ніт = 4; % # Ітерації Ньютона
c = загар (w0 / 2);
% Ньютона
для i = 1: Nit,
f = r * atan (c * W1) - атан (c / W1);
fp = c * (r / (1 + c ^ 2 * W1 ^ 2) + 1 / (c ^ 2 + W1 ^ 2));
W1 = W1 - f / fp
кінець
W1 = abs (W1);
if (W1> = 1), помилка ('Помилка конвергенції. Зменшити значення початкової здогадки.'); кінець
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];
a = [1.00000 0.17806 -0.81972];
Отримані половини діапазону потужності - і , що насправді становить рівно октави (тобто коефіцієнт ) один від одного.ω1=0.062476πω2=0.999612π416