Transformace NDP pro kaskadní syntézu
> | restart; |
Startovaci NDP
Startovaci NDP: Čebyšev 03, 1dB (KSF02_1)
> | s0:= -0.49417060494; s12:= -0.24708530247+I*0.96599867499; |
H1s
> | sigma0[NDP]:= -s0; |
> | H1s:= h1*(sigma0[NDP]/(s+sigma0[NDP])); |
H2s
> | omega0[NDP]:= evalf(abs(s12)); |
> | Q[NDP]:= omega0[NDP]/abs(2*Re(s12)); |
> | H2s:= h2*evalf(omega0[NDP]^2/(s^2+s*omega0[NDP]/Q[NDP]+omega0[NDP]^2)); |
Transformace NDP - DP
> | f1:= 80e3; fN:= f1; |
> | omega[N]:= evalf(2*Pi*fN); |
H1p
Normovaná H1p = H1s!
> | H1p:= normal(subs(s=p/omega[N],H1s)); |
Úprava:
> | DH1p:= denom(H1p)/coeff(denom(H1p),p,1); |
> | NH1p:= numer(H1p)/coeff(denom(H1p),p,1); |
> | H1pu:= NH1p/DH1p; |
H2p
Normovaná H2p = H2s!
> | H2p:= normal(subs(s=p/omega[N],H2s)); |
Úprava:
> | DH2p:= denom(H2p)/coeff(denom(H2p),p,2); |
> | NH2p:= numer(H2p)/coeff(denom(H2p),p,2); |
> | H2pu:= NH2p/DH2p; |
> | omega0[DP]:= sqrt(coeff(DH2p,p,0)); |
> | Q[DP]:= omega0[DP]/coeff(DH2p,p,1); |
Pozn: transformace NDP - DP nemění Q a omega0 pouze násobí omega[N] !
Transformace NDP - HP
> | f1HP:= 21e3; fN:= f1HP; |
> | omega[N]:= evalf(2*Pi*fN); |
H1p [HP]
> | H1p[HP]:= normal(subs(s=omega[N]/p,H1s)); |
Úprava:
> | DH1p:= denom(H1p[HP])/coeff(denom(H1p[HP]),p,1); |
> | NH1p:= numer(H1p[HP])/coeff(denom(H1p[HP]),p,1); |
> | H1pu[HP]:= NH1p/DH1p; |
Řešení přes normovanou HP:
> | H1pN[HP]:= normal(subs(s=1/p,H1s)); |
Úprava:
> | DH1pN:= denom(H1pN[HP])/coeff(denom(H1pN[HP]),p,1); |
> | NH1pN:= numer(H1pN[HP])/coeff(denom(H1pN[HP]),p,1); |
> | H1pNu[HP]:= NH1pN/DH1pN; |
Parametry:
> | sigma0[NHP]:= coeff(DH1pN,p,0); |
> | sigma0[HP]:= sigma0[NHP]*omega[N]; |
H2p [HP]
> | H2p:= normal(subs(s=omega[N]/p,H2s)); |
Úprava:
> | DH2p:= denom(H2p)/coeff(denom(H2p),p,2); |
> | NH2p:= numer(H2p)/coeff(denom(H2p),p,2); |
> | H2pu:= NH2p/DH2p; |
> | omega0[HP]:= sqrt(coeff(DH2p,p,0)); |
> | Q[HP]:= omega0[HP]/coeff(DH2p,p,1); |
Pozn: transformace NDP - HP nemění Q !
Řešení přes normovanou HP:
> | H2pN[HP]:= normal(subs(s=1/p,H2s)); |
Úprava:
> | DH2pN:= denom(H2pN[HP])/coeff(denom(H2pN[HP]),p,2); |
> | NH2pN:= numer(H2pN[HP])/coeff(denom(H2pN[HP]),p,2); |
> | H2pNu[HP]:= NH2pN/DH2pN; |
Parametry:
> | omega0[NHP]:= sqrt(coeff(DH2pN,p,0)); |
> | omega0[HP]:= omega0[NHP]*omega[N]; Q[NHP]:= Q[HP]; |
Transformace NDP - PP
> | fd:= 1.93e6; fh:= 1.99e6; |
> | fn:= sqrt(fh*fd); delta:= fh-fd; q:= fn/delta; |
> | omegaN:= evalf(2*Pi*fn); |
Řešení pro normovanou PP
> | omegaNN:= 1; |
H1p [PP]
> | H1pN[PP]:= sort(normal(subs(s=q*(p+1/p),H1s)),p); |
Úprava:
> | DH1pN:= sort(denom(H1pN[PP])/coeff(denom(H1pN[PP]),p,2),p); |
> | NH1pN:= numer(H1pN[PP])/coeff(denom(H1pN[PP]),p,2); |
> | H1pNu[PP]:= NH1pN/DH1pN; |
Parametry:
> | omega01[NPP]:= sqrt(coeff(DH1pN,p,0)); Q1[NPP]:= omega01[NPP]/coeff(DH1pN,p,1); |
> | omega01[PP]:= omega01[NPP]*omegaN; |
Odnormovaná funkce:
> | H1p[PP]:= h1*p*omega01[PP]/Q1[NPP]/(p^2+p*omega01[PP]/Q1[NPP]+omega01[PP]^2); |
H2p [PP]
> | H2pN[PP]:= sort(normal(subs(s=q*(p+1/p),H2s)),p); |
Úprava:
> | DH2pN:= denom(H2pN[PP])/coeff(denom(H2pN[PP]),p,4); |
> | NH2pN:= numer(H2pN[PP])/coeff(denom(H2pN[PP]),p,4); |
> | H2pNu[PP]:= NH2pN/DH2pN; |
Tuto funkci je potreba ještě rozložit na 2 dílčí funkce H21 a H22: H2pN = H21pN*H22pN
Rozklad jmenovatele:
> | XPP:= solve(denom(H2pNu[PP])=0,p); |
> | DH21pN:= evalc((p-XPP[1])*(p-XPP[2])); |
> | omega021[NPP]:= sqrt(coeff(DH21pN,p,0)); Q21[NPP]:= omega021[NPP]/coeff(DH21pN,p,1); |
> | DH22pN:= evalc((p-XPP[3])*(p-XPP[4])); |
> | omega022[NPP]:= sqrt(coeff(DH22pN,p,0)); Q22[NPP]:= omega022[NPP]/coeff(DH22pN,p,1); |
Rozklad čitatele:
> | hpp1N:= solve(sqrt(coeff(NH2pN,p,2))=hpp1*omega021[NPP]/Q21[NPP],hpp1); |
> | hpp2N:= solve(sqrt(coeff(NH2pN,p,2))=hpp2*omega022[NPP]/Q22[NPP],hpp2); |
Výsledné funkce:
> | H21pN:= hpp1N*(p*omega021[NPP]/Q21[NPP])/DH21pN; |
> | H22pN:= hpp2N*(p*omega022[NPP]/Q22[NPP])/DH22pN; |
Frekvenční odnormování: stačí omega0 !!
> | omega021[PP]:= omega021[NPP]*omegaN; omega022[PP]:= omega022[NPP]*omegaN; Q2[PP]:= Q21[NPP]; |
Odnormované funkce:
> | H21p:= hpp1N*(p*omega021[PP]/Q2[PP])/(p^2+p*omega021[PP]/Q2[PP]+omega021[PP]^2); |
> | H22p:= hpp2N*(p*omega022[PP]/Q2[PP])/(p^2+p*omega022[PP]/Q2[PP]+omega022[PP]^2); |
Řešení "přes vzorečky" - Elektrické filtry, kap.9.3.3, str. 300-301
> | Q[pp]:= Q[NDP]*sqrt((2*q*q/(omega0[NDP])^2+1/2+sqrt((2*q*q/(omega0[NDP])^2 +1/2)^2-(q/(omega0[NDP]*Q[NDP]))^2))); |
> | op1:= omega0[NDP]*Q[pp]/q/Q[NDP]; |
> | op2:= sqrt(op1^2-4); |
> | omega021[pp1]:= (op1-op2)/2; |
> | omega022[pp2]:= (op1+op2)/2; |
> | hpp21:= Q[pp]/q/omega021[pp1]*sqrt(h2); |
> | hpp22:= Q[pp]/q/omega022[pp2]*sqrt(h2); |
> | hpp:= sqrt(hpp21*hpp22); |
> | H21pN[pp1]:= hpp*(omega021[pp1]/Q[pp])*p/(p^2+p*omega021[pp1]/Q[pp]+omega021[pp1]^2); |
> | H22pN[pp2]:= hpp*(omega022[pp2]/Q[pp])*p/(p^2+p*omega022[pp2]/Q[pp]+omega022[pp2]^2); |
Test PP - normované řešení
> | h2:= 1; h1:= 1; |
> | ModPP:= abs(subs(p=I*omega,H1pNu[PP]*H21pN[pp1]*H22pN[pp2])); |
> | plot(20*log10(ModPP),omega=0.9..1.1); |
Test PP - odnormované řešení
> | ModPPodn:= abs(subs(p=I*2*Pi*f,H1p[PP]*H21p*H22p)); |
> | plot(20*log10(ModPPodn),f=1.8e6..2.1e6); |