Еліптик 12-го порядку еліптичний 4-го порядку
(Я не маю права на винагороду.) Я намагався створити контрприклад до питання 3 в Октаві, але був приємно здивований, що не зміг. Якщо відповідь на питання 3 - «так», то згідно з фіг. 5. питання, конкретні полюси та нулі повинні розподілятися між еліптичним фільтром порядку 4 та еліптичним фільтром порядку 12, тут явно показано:
Рисунок 1. Полюси і нулі, що потенційно поділяються між еліптичними фільтрами порядку
N= 12 і N= 4, у синьому та нумерованому порядку у порядку зростання α параметричної кривої f( α ).
Розробимо порядок 12 еліптичного фільтра з деякими довільними параметрами: пульсація прохідного діапазону 1 дБ, пульсація стоп-діапазону -90 дБ, частота зрізу 0,1234, площина s, а не площина z:
pkg load signal;
[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
freqs(b12, a12, [0:10000]/10000);
Малюнок 2. Частотна характеристика еліптичного фільтра 12-го порядку, розробленого з використанням ellip
.
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)));
Малюнок 3. Полюси (червоний) і нулі (синій) порядку 12 еліптичного фільтра, розробленого з використанням ellip
. Горизонтальна вісь: реальна частина, вертикальна вісь: уявна частина.
Побудуємо фільтр порядку 4, повторно використовуючи вибрані полюси та нулі фільтра порядку 12, на рис. 1. У конкретному випадку впорядкування полюсів і нулів за уявною частиною достатньо:
[~, ira12] = sort(imag(ra12));
[~, irb12] = sort(imag(rb12));
ra4 = [ra12(ira12)(2), ra12(ira12)(5), ra12(ira12)(8), ra12(ira12)(11)];
rb4 = [rb12(irb12)(2), rb12(irb12)(5), rb12(irb12)(8), rb12(irb12)(11)];
freqs(poly(rb4), poly(ra4), [0:10000]/10000);
Малюнок 4. Частотна характеристика фільтра 4-го порядку, що має всі полюси і нулі, ідентичні певним з фільтрів 12-го порядку, на рис. 27,69 дБ стоп-діапазон стоп-сигналу, частота відсікання 0,1234.
Наскільки я розумію, що діапазон пропуску трисмугового проходу і смуга трисмугової зупинки з такою кількістю пульсацій, скільки дозволяє кількість полюсів і нулів, є достатньою умовою сказати, що фільтр еліптичний. Але давайте спробуємо, якщо це підтверджено, розробивши еліптичний фільтр порядку 4 ellip
із характеристикою, отриманою на фіг.3, та порівнявши полюси та нулі між двома фільтрами порядку 4:
[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
scatter(vertcat(real(ra4), real(rb4)), vertcat(imag(ra4), imag(rb4)));
Що проти:
scatter(vertcat(real(ra4el), real(rb4el)), vertcat(imag(ra4el), imag(rb4el)), "blue", "x");
Малюнок 5. Порівняння полюсних (червоних) та нульових (синіх) місць між ellip
-проектованим фільтром 4-го порядку (хрестиками) та фільтром 4-го порядку (кола), який розділяє певні полюсні та нульові місця з фільтром 12-го порядку. Горизонтальна вісь: реальна частина, вертикальна вісь: уявна частина.
Полюси і нулі збігаються між двома фільтрами до трьох десяткових знаків, що було точністю характеристики фільтра, отриманого з фільтра порядку 12. Висновок полягає в тому, що принаймні в цьому конкретному випадку як полюси, так і нулі еліптичного фільтра порядку 4 та еліптичний фільтр порядку 12 могли бути отримані принаймні до точності шляхом рівномірного розподілу їх на однакові параметричні криві . Фільтри не були фільтрами типу Баттерворта чи Чебишева I або II, оскільки і смуга пропускання, і стоп-смуга мали пульсації.
Еліптик 4-го порядку еліптичний 12-го порядку
І навпаки, чи можна полюси і нулі фільтра 12-го порядку наблизити до пари безперервних функцій, встановлених до полюсів і нулів ellip
фільтра 4-го порядку ?
Якщо дублювати чотири полюси (рис. 5) і перевернути знак реальних частин дублікатів, ми отримаємо овал сортів. По мірі обходу овалу місцями полюсів, які ми проходимо, дають періодичну дискретну послідовність. Він є хорошим кандидатом на періодичну інтерполяцію з обмеженою смугою шляхом дискретного перетворення Фур'є (DFT). З отриманого24 полюси, ті, що мають позитивну реальну частину, відкидаються, вдвічі зменшуючи кількість полюсів 12. Замість нулів їхні зворотні інтерполяції інтерполюються, але в іншому випадку інтерполяція робиться так само, як і з полюсами. Почнемо з того ж ellip
розробленого фільтра 4-го порядку, що і раніше (приблизно ідентичний рис. 4):
pkg load signal;
[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
rb4eli = 1./rb4el;
[~, ira4el] = sort(imag(ra4el));
[~, irb4eli] = sort(imag(rb4eli));
ra4eld = vertcat(ra4el(ira4el), -ra4el(ira4el));
rb4elid = vertcat(rb4eli(irb4eli), -rb4eli(irb4eli));
ra12syn = -interpft(ra4eld, 24)(12:23);
rb12syn = -1./interpft(rb4elid, 24)(12:23);
freqs(poly(rb12syn), poly(ra12syn), [0:10000]/10000);
Малюнок 6. Частотна характеристика фільтра 12-го порядку з полюсами та нулями, відібраними з кривих, збігаються з фільтрами четвертого порядку.
Це не досить точний макет відповіді з рис. 2, щоб бути корисним. Діапазон зупинки проходить досить добре, але смуга пропуску нахилена. Частотні ребра смуги діапазону приблизно правильні. Тим не менш, це показує потенціал, враховуючи параметричні криві, описані лише 4 ступеня свободи.
Давайте подивимось, як полюси і нулі відповідають цим N= 12 ellip
-генерований фільтр:
[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)), "blue", "x");
scatter(vertcat(real(ra12syn), real(rb12syn)), vertcat(imag(ra12syn), imag(rb12syn)));
Малюнок 7. Порівняння полюсних (червоних) та нульових (синіх) місць між ellip
-проектованим фільтром 12-го порядку (хрестиками) та фільтром 12-го порядку (кола), отриманим із фільтра 4-го порядку. Горизонтальна вісь: реальна частина, вертикальна вісь: уявна частина.
Інтерпольовані полюси зовсім небагато, але нулі узгоджуються відносно добре. БільшийN як вихідну точку слід досліджувати.
Еліптик 6-го порядку до еліптичного 18-го порядку
Зробити це так само, як вище, але починаючи з 6-го порядку та інтерполюючи до 18-го порядку, показує, здавалося б, добре відрегульовану частотну характеристику, але все-таки виникають проблеми в смузі пропуску при уважному огляді:
[b6el, a6el] = ellip (6, 0.03, 30, 0.1234, "s");
rb6el = roots(b6el);
ra6el = roots(a6el);
rb6eli = 1./rb6el;
[~, ira6el] = sort(imag(ra6el));
[~, irb6eli] = sort(imag(rb6eli));
ra6eld = vertcat(ra6el(ira6el), -ra6el(ira6el));
rb6elid = vertcat(rb6eli(irb6eli), -rb6eli(irb6eli));
ra18syn = -interpft(ra6eld, 36)(18:35);
rb18syn = -1./interpft(rb6elid, 36)(18:35);
freqs(poly(rb18syn), poly(ra18syn), [0:10000]/10000);
Малюнок 8. Вгору) ellip
Фільтр 6-го порядку, згенерований, знизу) Фільтр 18-го порядку, отриманий із фільтра 6-го порядку. Збільшений діапазон пропускання має лише два максимуми і близько 1 дБ пульсацій. Діапазон стоп-сигналу майже рівнобедрений з 2,5 дБ варіації.
Я здогадуюсь про проблеми в прохідній смузі в тому, що обмежена смуга інтерполяції недостатньо добре працює з (реальними частинами) полюсів.
Точні криві для еліптичних фільтрів
Виявляється, еліптичні фільтри для яких NNz= NNp= Nнадати позитивні приклади до запитань 1 та 2. C. Сідні Беррус, Цифрова обробка сигналів та дизайн цифрових фільтрів (Чернетка). OpenStax CNX. 18 листопада 2012 р. Дає нулі та полюси функції передачі досить загальноїNNz= NNp= Nеліптичний фільтр з точки зору еліптичного синуса Якобі sn( т , к ) . Зауваживши це sn( t , k ) = - sn( - t , k ) ,Буррус ек. 3.136 можна переписати для нулівсzi, i = 1 … N як:
сzi= jк сн( К+ К( 2 i + 1 ) / N, к ),(1)
де К це чверть періоду sn( т , к ) насправді т, і 0 ≤ k ≤ 1можна розглядати як ступінь свободи в параметризації фільтра. Він контролює ширину смуги переходу щодо ширини смуги проходу. Визнаючи( 2 i + 1 ) / N= 2 α (див. рівняння 2 питання) де α - параметр параметричної кривої:
fz( α ) = jк сн( К+ 2 Кα , k ),(2)
Буррус ек. 3.146 подає полюси верхньої лівої чверті площини, включаючи реальний полюс для непарнихN. Його можна переписати для всіх полюсівср я, i = 1 … N з будь-яким N як:
ср я= cn( К+ К( 2 i + 1 ) / N, к ) дн( К+ К( 2 i + 1 ) / N, к ) сн( ν0, 1 - к2-----√)× cn( ν0, 1 - к2-----√) +jsn( К+ К( 2 i + 1 ) / N, к ) дн( ν0, 1 - к2-----√)1 - дн2( К+ К( 2 i + 1 ) / N, к ) сн2( ν0, 1 - к2-----√),(3)
де дн( t , k ) = 1 - k2sn2( т , к )------------√є однією з еліптичних функцій Якобі. Деякі джерела єк2як другий аргумент для всіх цих функцій і називаємо його модулем. Ми маємокі називати його модулем. Змінна0 < ν0< К´ можна розглядати як один із двох ступенів свободи ( k , ν0) досить загальних параметричних кривих і однієї з трьох ступенів свободи ( k , ν0, N)достатньо загального еліптичного фільтра. Вν0= 0 Пульсація смуги пропускання буде нескінченною і в ν0= К´ де К´ - квартальний період еліптичних функцій Якобі з модулем 1 - к2-----√, полюси дорівнювали б нулям. Під достатньо загальним значенням я маю на увазі, що існує лише одна ступінь свободи, яка керує частотою крайової смуги пропускання і яка буде виявлятись як рівномірне масштабування обох функцій параметричної кривої одним і тим же фактором. Підмножина еліптичних фільтрів, які ділятьсяfp( α ) , fz( α ) , і невідводима фракція Nz/ Пz= 1, перетворюються на інший підмножина нескінченного розміру в розмірності N при зміні тривіального ступеня свободи.
За тією ж підстановою, що і з нулями, параметрична крива для полюсів може бути записана як:
fp( α ) = cn( К+ 2 Кα , k ) dn( К+ 2 Кα , k ) sn( ν0, 1 - к2-----√)× cn( ν0, 1 - к2-----√) +jsn( К+ 2 Кα , k ) dn( ν0, 1 - к2-----√)1 - дн2( К+ 2 Кα , k ) sn2( ν0, 1 - к2-----√).(4)
Побудуємо функції та криві в Octave для значень к і ν0( v0
у коді) скопійовано з Burrus Приклад 3.4:
k = 0.769231;
v0 = 0.6059485; #Maximum is ellipke(1-k^2)
K = 1024; #Resolution of plots
[snv0, cnv0, dnv0] = ellipj(v0, 1-k^2);
dnv0=sqrt(1-(1-k^2)*snv0.^2); # Fix for Octave bug #43344
[sn, cn, dn] = ellipj([0:4*K-1]*ellipke(k^2)/K, k^2);
dn=sqrt(1-k^2*sn.^2); # Fix for Octave bug #43344
a2K = [0:4*K-1];
a2KpK = mod(K + a2K - 1, 4*K)+1;
fza = i./(k*sn(a2KpK));
fpa = (cn(a2KpK).*dn(a2KpK)*snv0*cnv0 + i*sn(a2KpK)*dnv0)./(1-dn(a2KpK).^2*snv0.^2);
plot(a2K/K/2, real(fza), a2K/K/2, imag(fza), a2K/K/2, real(fpa), a2K/K/2, imag(fpa));
ylim([-2,2]);
a = [1/6, 3/6, 5/6];
ai = round(a*2*K)+1;
scatter(vertcat(a, a), vertcat(real(fza(ai)), imag(fza(ai)))); ylim([-2,2]); xlim([0, 2]);
scatter(vertcat(a, a), vertcat(real(fpa(ai)), imag(fpa(ai))), "red", "x"); ylim([-2,2]); xlim([0, 2]);
Малюнок 9. fz( α ) і fp( α ) для Burrus Приклад 3.4, аналітично продовжений до періоду α = 0 … 2. Три полюси (червоні хрести) та три нулі (сині кола, один нескінченний і не показаний) з прикладу відбираються рівномірно щодоα у α = 1 / 6 , α = 3 / 6 , і α = 5 / 6 ,від цих функцій, на екв. 2 питання. З розширенням, зворотнимІм( fz( α ) )(не показано) коливається дуже м'яко, що дозволяє легко наближати усічений ряд Фур'є, як у попередніх розділах. Інші періодичні розширені функції також є плавними, але не так легко їх наблизити.
plot(real(fpa)([1:2*K+1]), imag(fpa)([1:2*K+1]), real(fza)([1:2*K+1]), imag(fza)([1:2*K+1]));
xlim([-2, 2]);
ylim([-2, 2]);
scatter(real(fza(ai)), imag(fza(ai))); ylim([-2,2]); xlim([-2, 2]);
scatter(real(fpa(ai)), imag(fpa(ai)), "red", "x"); ylim([-2,2]); xlim([-2, 2]);
Малюнок 10. Параметричні криві для Берруса Приклад 3.4. Горизонтальна вісь: реальна частина, вертикальна вісь: уявна частина. Цей погляд не показує швидкість параметричної кривої, тому три полюси (червоні хрести) та три нулі (сині кола, один нескінченний і не показаний) не здаються рівномірно розподіленими на кривих, навіть як вони є, з щодо параметраα параметричних кривих.
Конструкція еліптичного фільтра за точною полюсною та нульовою формулами, наведеною Буррусом, повністю еквівалентна вибірці з точного fp( α ) і fz( α ), тож методи еквівалентні та доступні. Питання 1 залишається відкритим. Можливо, інші фільтри мають нескінченні підмножини, визначеніfp( α ) і fz( α ) і Nz/ Нp. З методів апроксимації еліптичних параметричних кривих, ті, які не залежать від точної функціональної форми, можуть бути перенесені на інші типи фільтрів, я думаю, швидше за все, на ті, які узагальнюють еліптичні фільтри, такі як деякий підмножина загальних фільтрів, що працюють в режимі обрізнень. Для них точні формули для полюсів і нулів можуть бути невідомими або непереборними.
Повертаючись до рівня рівня. 2, для непарнихN, ми маємо для однієї нулі α = 0,5, який посилає його у нескінченність sn( 2К, k ) = 0. Нічого подібного не відбувається з жердинами (Р. 4). Я оновив питання, щоб такі нулі (і полюси, на випадок) були включені до підрахункуNNz (або NNp). Вk = 0, всі нулі йдуть у нескінченність згідно fz( α ), який виглядає, щоб дати фільтри Чебишева I типу.
Я думаю, що питання 3 було вирішено, і відповідь "так". Це, як виявляється, ми можемо охопити всі випадки еліптичного фільтра, не маючи конфліктуNNz= NNp, з новим визначенням тих.