prik01.MWS

Úvodní sekvence příkazů - start programu a připojení knihovny SYNTFIL:

> restart;

> read `F:/usr/bicak/maple/los/syntfil.m`;

> with(syntfil);

`Syntfil version 0.93 loaded`

[BP22NLP, BP2NLP, BS2NLP, BodePlot, Butterworth, Bu...
[BP22NLP, BP2NLP, BS2NLP, BodePlot, Butterworth, Bu...
[BP22NLP, BP2NLP, BS2NLP, BodePlot, Butterworth, Bu...
[BP22NLP, BP2NLP, BS2NLP, BodePlot, Butterworth, Bu...
[BP22NLP, BP2NLP, BS2NLP, BodePlot, Butterworth, Bu...
[BP22NLP, BP2NLP, BS2NLP, BodePlot, Butterworth, Bu...

Zjištění potřebných parametrů procedury:

> LP2NLP();

Error, (in LP2NLP) LP2NLP needs 4 parameters: fp, fs, ap, as

Zadání tolerančního schema dolní propusti a jeho transformace na NDP:

> fp:=1000;

fp := 1000

> x:=LP2NLP(fp,2000,3,30);

Filter specification:

fp = 1000.000000 Hz

fs = 2000.000000 Hz

ap = 3.000000 dB

as = 30.000000 dB

[Maple Plot]

Specification of NLP:

Os = 2.000000 1/s

ap = 3.000000 dB

as = 30.000000 dB

x := 2., 3, 30

Zjištění potřebných parametrů pro funkci výpočet stupně:

> ButterworthNLPOrder();

Error, (in ButterworthNLPOrder) ButterworthNLPOrder needs 3 parameters: Os, ap, as

Výpočet stupně pro jednotlivé aproximace:

> bx:=ButterworthNLPOrder(x);

bx := 5, 2., 3

> cx:=ChebyshevNLPOrder(x);

cx := 4, 2., 3

> dx:=CauerNLPOrder(x);

dx := 3, 2., 3

Zjištění útlumu na mezi nepropustného pásma pro daný stupeň a aproximaci:

> Butterworth_asnew(bx);

30.08663442

> Chebyshev_asnew(cx);

39.71527404

> Cauer_asnew(dx);

40.30060992

Výpočet provozního činitele přenosu a charakteristické funkce pro vybrané aproximace:

> bpol,bchpol:=Butterworth(bx,s);

bpol, bchpol := .9976283451*s^5+3.229926649*s^4+5.2...

> cpol,cchpol:=Chebyshev(cx,s);

cpol, cchpol := 7.981026761*s^4+4.641604425*s^3+9.3...
cpol, cchpol := 7.981026761*s^4+4.641604425*s^3+9.3...

Převod provozního činitele přenosu na přenos:

> Hb:=unapply(1/bpol,s);

Hb := proc (s) options operator, arrow; 1/(.9976283...

> Hc:=unapply(1/cpol,s);

Hc := proc (s) options operator, arrow; 1/(7.981026...

Několik příkladů zobrazení přenosové funkce:

> plot(abs(Hb(I*omega)),omega=0..1);

[Maple Plot]

> plot(abs(Hc(I*omega)),omega=0..1);

[Maple Plot]

> plot(20*log10(abs(Hb(I*omega))),omega=0..1);

[Maple Plot]

> plot(20*log10(abs(Hc(I*omega))),omega=0..1);

[Maple Plot]

> plot(20*log10(abs(Hb(I*10^o))),o=-1..1);

[Maple Plot]

> plot(20*log10(abs(Hc(I*10^o))),o=-1..1);

[Maple Plot]

Zjištění parametrů funkce pro výpočet prvků NDP:

> DroppNLP();

Error, (in DroppNLP) DroppNLP needs 6 or 7 parameters: termination::{common,open,short}, R, direction::{front,rear}, struct::{PI,T}, pol, chpol, [zeros]

Výpočet prvků NDP pro Butterworthovu aproximaci:

> mat,elems:=DroppNLP(common,1,front,T,bpol,bchpol);

mat, elems := matrix([[1.000000, 0.], [0., 1.000000...
mat, elems := matrix([[1.000000, 0.], [0., 1.000000...
mat, elems := matrix([[1.000000, 0.], [0., 1.000000...
mat, elems := matrix([[1.000000, 0.], [0., 1.000000...
mat, elems := matrix([[1.000000, 0.], [0., 1.000000...
mat, elems := matrix([[1.000000, 0.], [0., 1.000000...

Výpočet prvků zadané Dp (t.j. zpětná transformace z NDP na zadanou DP):

> oelems:=ElemsLP(elems,100,fp):

R1 = 100

R2 = 100.

`block `(1), [orientation = direct, elements = {L1 ...

`block `(2), [orientation = shunt, elements = {C1 =...

`block `(3), [orientation = direct, elements = {L1 ...

`block `(4), [orientation = shunt, elements = {C1 =...

`block `(5), [orientation = direct, elements = {L1 ...

Výpočet přenosové funkce z prvků filtru, zobrazení provozního činitele přenosu z kroku aproximace (bpol) a zobrazení průběhu modulové kmitočtové charakteristiky přenosu v dB:

> MakeH(oelems);

1.000000000*1/(.1018750390e-18*s^5+.2072396678e-14*...

> bpol;

.9976283451*s^5+3.229926649*s^4+5.228613548*s^3+5.2...

> Hbb:=unapply(MakeH(oelems),s);

Hbb := proc (s) options operator, arrow; 1.00000000...
Hbb := proc (s) options operator, arrow; 1.00000000...

> plot(20*log10(abs(Hbb(I*2*Pi*f))),f=100..2000);

[Maple Plot]

Obdobný výpočet pro Čebyševovu aproximaci:

> cmat,celems:=DroppNLP(common,1,front,PI,cpol,cchpol);

cmat, celems := matrix([[1.000000, 0.], [0., 1.0000...
cmat, celems := matrix([[1.000000, 0.], [0., 1.0000...
cmat, celems := matrix([[1.000000, 0.], [0., 1.0000...
cmat, celems := matrix([[1.000000, 0.], [0., 1.0000...
cmat, celems := matrix([[1.000000, 0.], [0., 1.0000...
cmat, celems := matrix([[1.000000, 0.], [0., 1.0000...

> ocelems:=ElemsLP(celems,100,fp):

R1 = 100

R2 = 17.21496440

`block `(1), [orientation = shunt, elements = {C1 =...

`block `(2), [orientation = direct, elements = {L1 ...

`block `(3), [orientation = shunt, elements = {C1 =...

`block `(4), [orientation = direct, elements = {L1 ...

> MakeH(ocelems);

1.000000000*1/(.5120816625e-14*s^4+.1871235493e-10*...

> Hbc:=unapply(MakeH(ocelems),s);

plot(20*log10(abs(Hbc(I*2*Pi*f))),f=100..2000);

Hbc := proc (s) options operator, arrow; 1.00000000...

[Maple Plot]

>