exercise 5.11
ZIP with MATLAB scripts and note:
exercise 5.11 notes:
This exercise asks to obtain equations for OC and SC stub lengths in circuits shown above as functions of d transmission line length between stubs, and ZL=RL+1j*XL.
-
D_OCstub1(d,RL,XL)
-
D_OCstub2(d,RL,XL)
-
D_SCstub1(d,RL,XL)
-
D_SCstub2(d,RL,XL)
Errors in the Solutions manual
-
Equaling Z2 directly to Z0, for double series stub circuit, is not correct. It would be correct if attempting to match load ZL with for instance series single stub, X1, X1 being stub reactance next to load. Only then one can expect Zin of the transmission line to be directly Z0.
The input impedance of the transmission line Z2 has to have it's real part equal to Z0, but for the double series stub Z2 may still have significant imaginary part, that in turn is compensated with the second stub with reactance .
Therefore the following expression in the solutions manual solves
does not include X2 !it should be
2. Solving for RL, this is, obtaining RL(t) where t=tan(b*L)=tan(2*p*D) should be the other way around: L(RL,XL, ..)
L being stub lengths.
The following constraint
erroneously implies that there would be need for a really long transmission line for really small RL values, or that there would be need for really short transmission line when attempting to match large RL values.
Since both stubs and the transmission lines are considered ideal, if a load can be matched with such circuit, there are multiple solutions that do not necessarily have to be really short or really long. Just the correct values for the stubs to correct reactances, and all ideal transmission line lengths satisfying a specific solution show periodic repetitions with period p [rad], 2p [rad] on the Smith chart.
Symbolic Equations
syms RL XL d1 d2 d3 Z0
Zin_OCstub1=Z0/(1j*tan(2*pi*d1))
Zin_OCstub2=Z0/(1j*tan(2*pi*d2))
RL+1j*XL+Zin_OCstub1
Z1=RL+1j*XL+Zin_OCstub1
Z2=Z0*(Z1+1j*Z0*tan(2*pi*d3))/(Z0+1j*Z1*tan(2*pi*d3))
Zin=Z2+Zin_OCstub2
Sol1=solve(Zin==Z0,[d1 d2 d3],'ReturnConditions',true)
Sol1.d1
Sol1.d2
Sol1.d3
Sol1.conditions
Sol1 =
struct with fields:
d1: [1×1 sym]
d2: [1×1 sym]
d3: [1×1 sym]
parameters: [1×3 sym]
conditions: [1×1 sym]
= z
= z1
= z2
=
in(2*z - atan((Z0*((tan(2*pi*z2)*(tan(2*pi*z1) + 1i))/tan(2*pi*z1) + 1i))/(RL + XL*1i + Z0*tan(2*pi*z2)*1i - ((Z0 + tan(2*pi*z2)*(RL*1i - XL))*(tan(2*pi*z1) + 1i))/tan(2*pi*z1)))/pi, 'integer')
&
Z0 + tan(2*pi*z2)*(RL*1i - XL + Z0/tan(2*pi*z)) ~= 0
&
tan(2*pi*z1)*1i + tan(2*pi*z2)*(tan(2*pi*z1) + 1i) ~= 0
or
syms Z0 RL XL d1 d2 d3
ZL=RL+1j*XL
Zin_OCstub=@(d,Z0) Z0/(1j*tan(2*pi*d))
Zin_SCstub=@(d,Z0) Z0*1j*tan(2*pi*d)
reZin_TL=@(d,Z1,Z0) Z0*(Z0*Z1*(1+tan(2*pi*d)))/…
(Z0^2+Z1^2*tan(2*pi*d))
imZin_TL=@(d,Z1,Z0) Z0*(Z0^2-Z1^2)*tan(2*pi*d)/…
(Z0^2+Z1^2*tan(2*pi*d))
Zin_OCstub1=Zin_OCstub(d1,Z0)
Zin_OCstub2=Zin_OCstub(d2,Z0)
reZin_TL1=reZin_TL(d3,ZL+Zin_OCstub1,Z0)
imZin_TL1=imZin_TL(d3,ZL+Zin_OCstub1,Z0)
reZin=real(Zin_OCstub2)+real(reZin_TL1)
imZin=imag(Zin_OCstub2)+imag(reZin_TL1)
sol1=solve(reZin==Z0)
sol1(1)
sol1(2)
sol1(1)=
atan(Z0/(XL - RL*1i + (Z0*(tan(2*pi*d3) + 1)*(Z0 + 2*Z0*tan(pi*d3) - Z0*tan(pi*d3)^2 - (2*Z0^2*tan(pi*d3)^2 + 4*Z0^2*tan(pi*d3)^3 + Z0^2*tan(pi*d3)^4 - 4*Z0^2*tan(pi*d3) + Z0^2 - 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3) - 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3 + 2*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2))^2 - 8*Z0^2*tan(pi*d3)*imag(tan(pi*d2)) + 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3)^3 + 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3) - 2*Z0^2*tan(pi*d3)*imag(tan(pi*d2))^2 + 8*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2)) - 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3*imag(tan(pi*d2)) + 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)*imag(tan(pi*d2)))^(1/2))*1i)/(2*(Z0*tan(2*pi*d3) - Z0*imag(1/tan(2*pi*d2))*tan(2*pi*d3))*(2*tan(pi*d3) - tan(pi*d3)^2 + 1))))/(2*pi)
sol1(2)=
atan(Z0/(XL - RL*1i + (Z0*(tan(2*pi*d3) + 1)*(Z0 + 2*Z0*tan(pi*d3) - Z0*tan(pi*d3)^2 + (2*Z0^2*tan(pi*d3)^2 + 4*Z0^2*tan(pi*d3)^3 + Z0^2*tan(pi*d3)^4 - 4*Z0^2*tan(pi*d3) + Z0^2 - 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3) - 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3 + 2*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2))^2 - 8*Z0^2*tan(pi*d3)*imag(tan(pi*d2)) + 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3)^3 + 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3) - 2*Z0^2*tan(pi*d3)*imag(tan(pi*d2))^2 + 8*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2)) - 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3*imag(tan(pi*d2)) + 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)*imag(tan(pi*d2)))^(1/2))*1i)/(2*(Z0*tan(2*pi*d3) - Z0*imag(1/tan(2*pi*d2))*tan(2*pi*d3))*(2*tan(pi*d3) - tan(pi*d3)^2 + 1))))/(2*pi)
>>
Warning: The solutions are valid under the following conditions:
in(Z0, 'real')
&
(tan(d3*pi)^2 == 2*tan(d3*pi) + 1
|
imag(1/tan(2*d2*pi)) == 1
|
Z0 == 0
|
4*(Z0*tan(2*d3*pi) - Z0*imag(1/tan(2*d2*pi))*tan(2*d3*pi))^2*(2*tan(d3*pi) -
tan(d3*pi)^2 + 1)^2 + tan(2*d3*pi)*(tan(2*d3*pi) + 1)^2*(Z0 + 2*Z0*tan(d3*pi) -
Z0*tan(d3*pi)^2 - (2*Z0^2*tan(d3*pi)^2 + 4*Z0^2*tan(d3*pi)^3 + Z0^2*tan(d3*pi)^4
- 4*Z0^2*tan(d3*pi) + Z0^2 - 2*Z0^2*imag(1/tan(d2*pi))^2*tan(d3*pi) -
8*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi)^3 + 2*Z0^2*tan(d3*pi)^3*imag(tan(d2*pi))^2 -
8*Z0^2*tan(d3*pi)*imag(tan(d2*pi)) + 2*Z0^2*imag(1/tan(d2*pi))^2*tan(d3*pi)^3 +
8*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi) - 2*Z0^2*tan(d3*pi)*imag(tan(d2*pi))^2 +
8*Z0^2*tan(d3*pi)^3*imag(tan(d2*pi)) -
4*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi)^3*imag(tan(d2*pi)) +
4*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi)*imag(tan(d2*pi)))^(1/2))^2 ~= 0
|
tan(2*d3*pi) == 0);
in(Z0, 'real') & (4*(Z0*tan(2*d3*pi) -
Z0*imag(1/tan(2*d2*pi))*tan(2*d3*pi))^2*(2*tan(d3*pi) - tan(d3*pi)^2 + 1)^2 +
tan(2*d3*pi)*(tan(2*d3*pi) + 1)^2*(Z0 + 2*Z0*tan(d3*pi) - Z0*tan(d3*pi)^2 +
(2*Z0^2*tan(d3*pi)^2 + 4*Z0^2*tan(d3*pi)^3 + Z0^2*tan(d3*pi)^4 -
4*Z0^2*tan(d3*pi) + Z0^2 - 2*Z0^2*imag(1/tan(d2*pi))^2*tan(d3*pi) -
8*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi)^3 + 2*Z0^2*tan(d3*pi)^3*imag(tan(d2*pi))^2 -
8*Z0^2*tan(d3*pi)*imag(tan(d2*pi)) + 2*Z0^2*imag(1/tan(d2*pi))^2*tan(d3*pi)^3 +
8*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi) - 2*Z0^2*tan(d3*pi)*imag(tan(d2*pi))^2 +
8*Z0^2*tan(d3*pi)^3*imag(tan(d2*pi)) -
4*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi)^3*imag(tan(d2*pi)) +
4*Z0^2*imag(1/tan(d2*pi))*tan(d3*pi)*imag(tan(d2*pi)))^(1/2))^2 ~= 0
|
tan(d3*pi)^2 == 2*tan(d3*pi) + 1
|
imag(1/tan(2*d2*pi)) == 1 | Z0 == 0
|
tan(2*d3*pi) == 0)
Including conditions in the solutions
sol1=solve(reZin==Z0,'ReturnConditions',true)
sol1(1)
=
atan(Z0/(XL - RL*1i + (Z0*(tan(2*pi*d3) + 1)*(Z0 + 2*Z0*tan(pi*d3) - Z0*tan(pi*d3)^2 - (2*Z0^2*tan(pi*d3)^2 + 4*Z0^2*tan(pi*d3)^3 + Z0^2*tan(pi*d3)^4 - 4*Z0^2*tan(pi*d3) + Z0^2 - 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3) - 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3 + 2*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2))^2 - 8*Z0^2*tan(pi*d3)*imag(tan(pi*d2)) + 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3)^3 + 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3) - 2*Z0^2*tan(pi*d3)*imag(tan(pi*d2))^2 + 8*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2)) - 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3*imag(tan(pi*d2)) + 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)*imag(tan(pi*d2)))^(1/2))*1i)/(2*(Z0*tan(2*pi*d3) - Z0*imag(1/tan(2*pi*d2))*tan(2*pi*d3))*(2*tan(pi*d3) - tan(pi*d3)^2 + 1))))/(2*pi)
sol1(2)
=
atan(Z0/(XL - RL*1i + (Z0*(tan(2*pi*d3) + 1)*(Z0 + 2*Z0*tan(pi*d3) - Z0*tan(pi*d3)^2 + (2*Z0^2*tan(pi*d3)^2 + 4*Z0^2*tan(pi*d3)^3 + Z0^2*tan(pi*d3)^4 - 4*Z0^2*tan(pi*d3) + Z0^2 - 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3) - 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3 + 2*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2))^2 - 8*Z0^2*tan(pi*d3)*imag(tan(pi*d2)) + 2*Z0^2*imag(1/tan(pi*d2))^2*tan(pi*d3)^3 + 8*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3) - 2*Z0^2*tan(pi*d3)*imag(tan(pi*d2))^2 + 8*Z0^2*tan(pi*d3)^3*imag(tan(pi*d2)) - 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)^3*imag(tan(pi*d2)) + 4*Z0^2*imag(1/tan(pi*d2))*tan(pi*d3)*imag(tan(pi*d2)))^(1/2))*1i)/(2*(Z0*tan(2*pi*d3) - Z0*imag(1/tan(2*pi*d2))*tan(2*pi*d3))*(2*tan(pi*d3) - tan(pi*d3)^2 + 1))))/(2*pi)
As expected, it includes Z0 and all stub lengths d1 d2 d3 as parameters of the solution.
What is the result when considering the erroneous equation of the solutions manual that ignores X2:
syms RL XL t X1 X2 Z0
eq1=RL+1j*(XL+X1+Z0*t)==Z0+1j*t*(RL+1j*XL+1j*X1)
sol1=solve(eq1,RL)
=
Z0 - XL*1i - X1*1i
As expected, for a single stub RL=Z0 and XL=X1=-ZL would be a valid solution.
When including X2
syms RL XL t X1 X2 Z0
eq1=RL+1j*(XL+X1+Z0*t)==Z0+1j*t*(RL+1j*XL+1j*X1)-1j*X2
sol1=solve(eq1,RL)
sol1 =
(X1*1i + X2*1i + XL*1i - Z0 + Z0*t*1i - t*(X1*1i + XL*1i)*1i)/(- 1 + t*1i)
But the equations that really matter are not RL(..) or XL(..) but d1(RL,XL,Z0) d2(RL,XL,Z0) and d3(RL,XL,Z0)
syms RL XL t X1 X2 Z0
eq1=RL+1j*(XL+X1+Z0*t)==Z0+1j*t*(RL+1j*XL+1j*X1)-1j*X2
X_stub1=solve(eq1,X1)
X_stub2=solve(eq1,X2)
t_TL=solve(eq1,t)
X_stub1=
-(RL + X2*1i + XL*1i - Z0 + Z0*t*1i - t*(RL + XL*1i)*1i)/(t + 1i)
X_stub2 =
RL*1i - X1 - XL - Z0*1i - Z0*t + t*(RL + X1*1i + XL*1i)
t_TL =
-(RL + X1*1i + X2*1i + XL*1i - Z0)/(X1 - RL*1i + XL + Z0*1i)
And the equations linking reactance and tangent t=tan(2*pi*D3) to stub lengths are
inverting
Zin_OCstub=@(d,Z0) Z0/(1j*tan(2*pi*d))
for SC stubs
Zin_SCstub=@(d,Z0) Z0*1j*tan(2*pi*d)
for OC stubs
D_stubOC=1/(2*pi)*atan(-Z0/X)
D_stubSC=1/(2*pi)*atan(X/Z0)
NUMERIC EQUATIONS
c0=2.998e8
f0=2e9;df=1e8;f1=1e9;f2=3e9;dfrel=df/f0;
frel=[f1/f0:dfrel:f2/f0];
Z0=50;ZL=40+1j*120
D=[.0512 .0988;.0512 .3748] % choosing stub lengths start values, any
D3=1/8 % transmission line length start value
D=[D ;[D3 D3]]
L=D*c0/f0 % L contains all physical lengths.
Zin_stub1=Z0./(1j*tan(2*pi*frel*f0/c0*L(1,1)))
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*frel*f0/c0*L3))./…
(Z0+1j*Zin2.*tan(2*pi*frel*f0/c0*L3));
Zin_stub2=Z0./(1j*tan(2*pi*frel*f0/c0*L(2,1)));
Zin4=Zin_stub2+Zin3;
s11_2Ocseries_stubs=(Zin4-Z0)./(Zin4+Z0)
abs_s11_2OCseries_stubs=abs(s11_2OCseries_stubs)
hf1=figure(1);ax1=gca
plot(ax1,frel,abs_s11_2OCseries_stubs);grid on;hold(ax1,'on')
title('2 OC series stubs');xlabel('f/f0')
Zin_stub1=Z0*1j*tan(2*pi*frel*f0/c0*L(1,1))
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*frel*f0/c0*L3))./…
(Z0+1j*Zin2.*tan(2*pi*frel*f0/c0*L3)) ;
Zin_stub2=Z0*1j*tan(2*pi*frel*f0/c0*L(2,1));
Zin4=Zin_stub2+Zin3;
s11_2Scseries_stubs=(Zin4-Z0)./(Zin4+Z0)
abs_s11_2SCseries_stubs=abs(s11_2SCseries_stubs)
hf2=figure(2);ax2=gca
plot(ax2,frel,abs_s11_2SCseries_stubs);grid on;hold(ax2,'on')
title('2 SC series stubs');xlabel('f/f0')
As expected, there's no match for the initial values, because the start lengths are the solutions for shunt stubs from previous exercise 5.10.
Although for higher dimensions it's not possible or even practical to visualise, in this particular case it's still possible to see that when including D3 as parameter, the amount of possible solutions increases substantially. Extending |s11| surface to volume with axes D1 D2 D3
dd=.1;D3=1/8;d1_range=linspace(dd,.5,numel(frel));d2_range=d1_range;d3_range=d2_range;
simplifying the ranges of d1 d2 d3 frel all same matrix size. meshgrid cannot go beyond 3 dimensions, ndgrid is the extended function
[D1,D2,D3,Frel]=ndgrid(d1_range,d2_range,d3_range,frel);
L1=D1*c0/f0;L2=D2*c0/f0;L3=D3*c0/f0; % phyiscal lengths
Zin_stub1=Z0./(1j.*tan(2*pi*Frel.*f0/c0.*L1));
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*Frel.*f0/c0.*L3))./…
(Z0+1j*Zin2.*tan(2*pi*Frel.*f0/c0.*L3));
Zin_stub2=Z0./(1j*tan(2*pi.*Frel*f0/c0.*L2));
Zin4=Zin_stub2+Zin3;
s11_2OCseries_stubs=(Zin4-Z0)./(Zin4+Z0);
abs_s11_2OCseries_stubs=abs(s11_2OCseries_stubs);
min_abs_s11_2OCseries_stubs=…
min(min(min(min(abs_s11_2OCseries_stubs))))
n0=find(abs_s11_2OCseries_stubs==…
min_abs_s11_2OCseries_stubs)
abs_s11_2OCseries_stubs(n0) % check
[n01,n02,n03,n04]=ind2sub(size(abs_s11_2OCseries_stubs),n0)
D1(n01,n02,n03,n04)
D2(n01,n02,n03,n04)
D3(n01,n02,n03,n04)
Frel(n01,n02,n03,n04)
D1(n01,n02,n03,n04) = 0.100000000000000
D2(n01,n02,n03,n04) = 0.400000000000000
D3(n01,n02,n03,n04) = 0.200000000000000
Frel(n01,n02,n03,n04) = 0.950000000000000
Verifying with frequency response
d1=D1(n01,n02,n03,n04);l1=d1*c0/f0;
d2=D2(n01,n02,n03,n04);l2=d2*c0/f0;
d3=D3(n01,n02,n03,n04);l3=d3*c0/f0;
don't use same coarse frange that prevents excessing processing load with large 4D, or the caought |s11| doesn't show
df=1e6;f1=1e9;f2=3e9;dfrel=df/f0;frel=[f1/f0:dfrel:f2/f0];
Zin_stub1=Z0./(1j*tan(2*pi*frel*f0/c0*l1));
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*frel*f0/c0*l3))./…
(Z0+1j*Zin2.*tan(2*pi*frel*f0/c0*l3));
Zin_stub2=Z0./(1j*tan(2*pi*frel*f0/c0*l2));
Zin4=Zin_stub2+Zin3;
s11_2OCseries_stubs=(Zin4-Z0)./(Zin4+Z0);
abs_s11_2OCseries_stubs=abs(s11_2OCseries_stubs);
plot(ax1,frel,abs_s11_2OCseries_stubs);grid on
hf3=figure(3);ax3=gca;
plot(ax3,frel,abs_s11_2OCseries_stubs);grid on
Zin_stub1=Z0.*1j.*tan(2*pi*Frel.*f0/c0.*L1);
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*Frel.*f0/c0.*L3))./…
(Z0+1j*Zin2.*tan(2*pi*Frel.*f0/c0.*L3));
Zin_stub2=Z0*1j*tan(2*pi.*Frel*f0/c0.*L2);
Zin4=Zin_stub2+Zin3;
s11_2SCseries_stubs=(Zin4-Z0)./(Zin4+Z0);
abs_s11_2SCseries_stubs=abs(s11_2SCseries_stubs);
min_abs_s11_2SCseries_stubs=…
min(min(min(min(abs_s11_2SCseries_stubs))))
n0=find(abs_s11_2SCseries_stubs==…
min_abs_s11_2SCseries_stubs)
abs_s11_2SCseries_stubs(n0) % check
[n01,n02,n03,n04]=ind2sub(size(abs_s11_2SCseries_stubs),n0)
D1(n01,n02,n03,n04)
D2(n01,n02,n03,n04)
D3(n01,n02,n03,n04)
Frel(n01,n02,n03,n04)
D1(n01,n02,n03,n04) = 0.420000000000000
D2(n01,n02,n03,n04) = 0.140000000000000
D3(n01,n02,n03,n04) = 0.260000000000000
Frel(n01,n02,n03,n04) = 0.800000000000000
Verify with frequency response
d1=D1(n01,n02,n03,n04);l1=d1*c0/f0;
d2=D2(n01,n02,n03,n04);l2=d2*c0/f0;
d3=D3(n01,n02,n03,n04);l3=d3*c0/f0;
don't use same coarse frange that prevents excessive processing load with large 4D, or the caought |s11| doesn't show
Zin_stub1=Z0*1j*tan(2*pi*frel*f0/c0*l1);
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*frel*f0/c0*l3))./…
(Z0+1j*Zin2.*tan(2*pi*frel*f0/c0*l3));
Zin_stub2=Z0*1j*tan(2*pi*frel*f0/c0*l2);
Zin4=Zin_stub2+Zin3;
s11_2SCseries_stubs=(Zin4-Z0)./(Zin4+Z0);
abs_s11_2SCseries_stubs=abs(s11_2SCseries_stubs);
hf4=figure(4);ax4=gca
plot(ax4,frel,abs_s11_2SCseries_stubs)
The respective frequency nulls found above are not centered, neither OS nor SC, so where are all |s11| nulls when considering all stub lengths as parameters d1 d2 d3 ?
Static slice for transmission line D3=1/8, all d ranges [0 1] (exercise 5.9)
dd=.01;
d1=[0:dd:1];
d2=[0:dd:1];
d3=[0:dd:1];
[D1,D2,D3]=meshgrid(d1,d2,d3);
abs_s11_2SCseries_stubs=zeros(numel(d1),numel(d2),numel(d3));
Zin_stub1=Z0./(1j*tan(2*pi*D2));
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*D3))./(Z0+1j*Zin2.*tan(2*pi*D3));
Zin_stub2=Z0./(1j*tan(2*pi*D1));
Zin4=Zin_stub2+Zin3;
s11_2OCseries_stubs=(Zin4-Z0)./(Zin4+Z0);
abs_s11_2OCseries_stubs=abs(s11_2OCseries_stubs);
d1_slice=0
d2_slice=0
d3_slice=[1/8]
figure;
ax6=gca
hs2=slice(d1,d2,d3,abs_s11_2OCseries_stubs,d1_slice,d2_slice,d3_slice)
hs2(1).EdgeColor='none';
hs2(2).EdgeColor='none';
hs2(3).EdgeColor='none';
colormap parula
xlabel('D1');ylabel('D2');zlabel('D3')
ax6.PlotBoxAspectRatio=[1 1 1]
Sweeping a slice through |s11| volume, D1 D2 D3, now all d ranges [0 .5], .5x.5x.5 volume.
d1=[0:dd:.5];
d2=[0:dd:.5];
d3=[0:dd:.5];
[D1,D2,D3]=meshgrid(d1,d2,d3);
abs_s11_2SCseries_stubs=zeros(numel(d1),numel(d2),numel(d3));
Zin_stub1=Z0*1j*tan(2*pi*D1);
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*D3))./(Z0+1j*Zin2.*tan(2*pi*D3));
Zin_stub2=Z0*1j*tan(2*pi*D2);
Zin4=Zin_stub2+Zin3;
s11_2SCseries_stubs=(Zin4-Z0)./(Zin4+Z0);
abs_s11_2SCseries_stubs=abs(s11_2SCseries_stubs);
hf5=figure(5);ax5=gca
for k=0:dd/10:.5 %numel(d1)
hsp=surf(ax5,linspace(0,.5,numel(d1)),...
linspace(0,.5,numel(d1)),zeros(numel(d1))+k);
hsp.EdgeColor='none'
rotate(hsp,[1,-1,1],0)
xd=hsp.XData;
yd=hsp.YData;
zd=hsp.ZData;
delete(hsp)
hs0=slice(ax5,D1,D2,D3,abs_s11_2SCseries_stubs,.5,.5,0)
hs0(3).EdgeColor='none'
hold on
hs1=slice(ax5,D1,D2,D3,abs_s11_2SCseries_stubs,xd,yd,zd)
hs1.EdgeColor='none'
hold off
axis([-.1 .6 -.1 .6 -.1 .6])
drawnow
end
colormap parula
Static slice of |s11| volume for SC stubs at D3=3/8 (exercise 5.10)
dd=.01;
d1=[0:dd:1];
d2=[0:dd:1];
d3=[0:dd:1];
[D1,D2,D3]=meshgrid(d1,d2,d3);
abs_s11_2SCseries_stubs=zeros(numel(d1),numel(d2),numel(d3));
Zin_stub1=Z0*1j*tan(2*pi*D1);
Zin2=Zin_stub1+ZL;
Zin3=Z0*(Zin2+1j*Z0*tan(2*pi*D3))./(Z0+1j*Zin2.*tan(2*pi*D3));
Zin_stub2=Z0*1j*tan(2*pi*D2);
Zin4=Zin_stub2+Zin3;
s11_2SCseries_stubs=(Zin4-Z0)./(Zin4+Z0);
abs_s11_2SCseries_stubs=abs(s11_2SCseries_stubs);
d1_slice=1
d2_slice=1
d4_slice=[3/8]
hf7=figure(7);ax7=gca
hs3=slice(ax7,d1,d2,d3,abs_s11_2SCseries_stubs,d1_slice,d2_slice,d4_slice)
hs3(1).EdgeColor='none';hs3(1).FaceAlpha=.4
hs3(2).EdgeColor='none';hs3(2).FaceAlpha=.4
hs3(3).EdgeColor='none';hs3(3).FaceAlpha=1
colormap parula
xlabel('D1');ylabel('D2');zlabel('D3')
ax7.PlotBoxAspectRatio=[1 1 1]
Due to time budget contraints the following 2 points are left open:
Pending 1: Use Optimtool to solve 5.11
optimtool
...
Pending 2: Use MuPAD to solve 5.11
mupad
...