exercise 5.3
ZIP with MATLAB scripts and note:
exercise 5.3 notes:
single shunt open circuit stub with transmission line, both stub and transmission line with Z0=75, to match ZL=100+1j*80.
matching single frequency with shunt stubs requires calculating 2 TL lengths, that expressed in multiples of wavelength: beta*L=2*pi/lambda*lambda*D=2*pi*D
D is wavelength multiple, or the phase, halved angle measured on Smith chart.
1.- the length of the TL where the shunt is placed: D_TL
2.- the length of the parallel shunt stub itself: D_oc_stub
There are 2 solutions, towards generator, CW, along SWR circle, until
real(Zin)==Z0
Z0=75; ZL=100+1j*80;
gamma_ZL=(ZL-Z0)/(ZL+Z0);
hf(1)=figure(1);sm(1)=smithchart; ax(1)=hf(1).CurrentAxes; hold(ax(1),'on')
plot(ax(1),real(gamma_ZL),imag(gamma_ZL),'o','Color',[1 0 0]) % ZL
YL=1/ZL
gamma_YL=-gamma_ZL
gamma_YL_angle=angle(gamma_YL);gamma_YL_mod=abs(gamma_YL)
if gamma_YL_angle<0 gamma_YL_angle=2*pi+gamma_YL_angle; end
if gamma_YL_angle>(2*pi) gamma_YL_angle=gamma_YL_angle-2*pi; end
Smith_plotY(ax(1),YL,1/Z0)
Smith_plotRefLine2PhaseCircle(ax(1),YL,1/Z0,[.6 1 .6])
[x_swr,y_swr]=Smith_plotGammaCircle(ax(1),ZL,Z0,[1 .6 .6])
[g1x,g1y]=pol2cart(gamma_YL_angle,gamma_YL_mod)
[xr1,yr1]=Smith_plotRcircle(ax(1),Z0,Z0,[0 0 1])
[xint,yint]=intersections(x_swr,y_swr,xr1,yr1,1);
plot(ax(1),xint,yint,'go')
gb1=xint(1)+1j*yint(1);
gb1_angle=angle(gb1);gb1_mod=abs(gb1)
if gb1_angle<0 gb1_angle=2*pi+gb1_angle; end
if gb1_angle>(2*pi) gb1_angle=gb1_angle-2*pi; end
Yb_1=(1/Z0*(1-gb1)/(1+gb1)) %^-1
1/Yb_1 % check real(Z) spot on r=1 circle
Smith_plotRefLine2PhaseCircle(ax(1),1/Yb_1,Z0,[.6 1 .6])
% on Smith chart
da=1/1000;arc1=da
a0=gamma_YL_angle;a1=gb1_angle;gamma_mod=gamma_YL_mod
while abs(a0-a1)>da
a0=a0-da;arc1=arc1+da;
if a0<0 a0=2*pi+a0; end % avoid negative angle
if a0>(2*pi) a0=a0-2*pi; end
gamma=gamma_mod*(cos(a0)+1j*sin(a0));
plot(ax(1),real(gamma),imag(gamma),'ro','LineWidth',1.5);
end
plot(ax(1),xint,yint,'go')
% checking stub input impedance already on r=1 circle
1/Yb_1
isequal(Yb_1,gamma2z(-gb1,1/Z0)) % same, -gb1 to bring gamma Y2Z
D1_TL_lambda=arc1/(4*pi)
D1_TL_angle_deg=D1_TL_lambda*180/.5
% lambda/2 is 180º electric length that is 360º on Smith Chart
checking stub already on r=1 circle
1/Yb_1
isequal(Yb_1,gamma2z(-gb1,1/Z0))
D1_TL_lambda=arc1/(4*pi)
D1_TL_angle_deg=D1_TL_lambda*180/.5
= 75.009858443284173 -72.565629355776338i
=
logical
1
D1_TL_lambda = 0.405924682355882
D1_TL_angle_deg = 1.461328856481175e+02
hf(2)=figure(2);sm(2)=smithchart; ax(2)=hf(2).CurrentAxes; hold(ax(2),'on')
plot(ax(2),real(gamma_ZL),imag(gamma_ZL),'o','Color',[1 0 0]) % ZL
gamma_YL_angle=angle(gamma_YL);gamma_YL_mod=abs(gamma_YL)
if gamma_YL_angle<0 gamma_YL_angle=2*pi+gamma_YL_angle; end
if gamma_YL_angle>(2*pi) gamma_YL_angle=gamma_YL_angle-2*pi; end
Smith_plotY(ax(2),YL,1/Z0)
Smith_plotRefLine2PhaseCircle(ax(2),YL,1/Z0,[.2 .8 .2])
[x_swr,y_swr]=Smith_plotGammaCircle(ax(2),ZL,Z0,[.8 .2 .2])
[g1x,g1y]=pol2cart(gamma_YL_angle,gamma_YL_mod)
[xr1,yr1]=Smith_plotRcircle(ax(2),Z0,Z0,[0 0 1])
[xint,yint]=intersections(x_swr,y_swr,xr1,yr1,1);
plot(ax(2),xint,yint,'go')
gb2=xint(2)+1j*yint(2);
gb2_angle=angle(gb2);gb2_mod=abs(gb2)
if gb2_angle<0 gb2_angle=2*pi+gb2_angle; end
if gb2_angle>(2*pi) gb2_angle=gb2_angle-2*pi; end
Yb_2=(1/Z0*(1-gb2)/(1+gb2)) %^-1
1/Yb_2 % check real(Z) spot on r=1 circle
Smith_plotRefLine2PhaseCircle(ax(2),1/Yb_2,Z0,[.2 .8 .2])
da=1/1000;arc2=da
a0=gamma_YL_angle;a1=gb2_angle;gamma_mod=gamma_YL_mod
while abs(a0-a1)>da
a0=a0-da;arc2=arc2+da;
if a0<0 a0=2*pi+a0; end % avoid negative angle
if a0>(2*pi) a0=a0-2*pi; end
gamma=gamma_mod*(cos(a0)+1j*sin(a0));
plot(ax(2),real(gamma),imag(gamma),'ro','LineWidth',1.5);
end
plot(ax(2),xint,yint,'go')
checking stub already on r=1 circle
1/Yb_2
isequal(Yb_2,gamma2z(-gb2,1/Z0))
D2_TL_lambda=arc2/(4*pi)
D2_TL_angle_rad=arc2/2
D2_TL_angle_deg=arc2*90/pi
1/Yb_2 = 75.009858443284173 +72.565629355776380i
= 1
D2_TL_lambda = 0.228387343336868
D2_TL_angle_rad = 1.434999999999
D2_TL_angle_deg = 82.219443601272644
% calculating stub lenght Dstub1
hf(3)=figure(3);sm(3)=smithchart; ax(3)=hf(3).CurrentAxes; hold(ax(3),'on');
plot(ax(3),real(gamma_ZL),imag(gamma_ZL),'o','Color',[1 0 0])
gamma_YL_angle=angle(gamma_YL);gamma_YL_mod=abs(gamma_YL)
if gamma_YL_angle<0 gamma_YL_angle=2*pi+gamma_YL_angle; end
if gamma_YL_angle>(2*pi) gamma_YL_angle=gamma_YL_angle-2*pi; end
Smith_plotY(ax(3),YL,1/Z0)
Smith_plotRefLine2PhaseCircle(ax(3),YL,1/Z0,[.2 .6 .2])
[x_swr,y_swr]=Smith_plotGammaCircle(ax(3),ZL,Z0,[1 .6 .6])
[g1x,g1y]=pol2cart(gamma_YL_angle,gamma_YL_mod)
[xr1,yr1]=Smith_plotRcircle(ax(3),Z0,Z0,[0 0 1])
[xint,yint]=intersections(x_swr,y_swr,xr1,yr1,1);
plot(ax(3),xint,yint,'go')
gb1=xint(1)+1j*yint(1);gb1_angle=angle(gb1);gb1_mod=abs(gb1)
if gb1_angle<0 gb1_angle=2*pi+gb1_angle; end
if gb1_angle>(2*pi) gb1_angle=gb1_angle-2*pi; end
yb_1=1/Z0*((1+gb1)/(1-gb1))^-1
1/yb_1
% check already on r=1
Smith_plotRefLine2PhaseCircle(ax(3),1/yb_1,Z0,[.2 .8 .2])
% 1st intersection
gstub=conj(gb1) % where Zin has to move next
plot(ax(3),real(gstub),imag(gstub),'bo')
% using Z Smith chart values as if reversed Y Smith chart
Zbs=(1/Z0*(1-gstub)/(1+gstub)) ^-1
Zbs2=1j*imag(Zbs)
refl_Zstub=(Z0-Zbs2)/(Z0+Zbs2)
refl_Ystub=-refl_Zstub % where stub Zin has to be
plot(ax(3),real(refl_Ystub),imag(refl_Ystub),'ro')
Smith_plotRefLine2PhaseCircle(ax(3),Zbs2,Z0,[.2 .2 .8])
Smith_plotBarc(ax(3),Zbs,Z0,[1 0 1])
da=1/100;a_stub=[angle(refl_Ystub):da:pi];arc_stub1=da;
for k=1:1:numel(a_stub)
gamma_stub=cos(a_stub)+1j*sin(a_stub);
arc_stub1=arc_stub1+da;
plot(ax(3),real(gamma_stub),imag(gamma_stub),'bo','LineWidth',1.5);
end
arc_stub1=arc_stub1-da;
directly from the intersection points
Dstub1_lambda=abs(-pi-angle(gstub))*.25/pi
% electric length of OC stub
Dstub1_angle_rad=abs(-pi-angle(gstub))/2
Dstub1_angle_deg=abs(-pi-angle(gstub))*90/pi
% from the arc on Smith chart
arc_stub1*180/pi
arc_stub1_lambda=.25/pi*arc_stub1
same as
Dstub1_lambda=arc_stub1/(4*pi)
Dstub1_angle_deg= arc_stub1/2*360/(2*pi)
Dstub1_lambda = 0.160864794588070
Dstub1_angle_rad = 1.010743313798222
Dstub1_angle_deg = 57.911326051705117
arc_stub1_lambda = 0.122549306180760
Dstub1_lambda = 0.122549306180760
Dstub1_angle_deg = 44.117750225073422
% calculating stub lenght Dstub2
hf(4)=figure(4);sm(4)=smithchart; ax(4)=hf(4).CurrentAxes;hold(ax(4),'on');
plot(ax(4),real(gamma_ZL),imag(gamma_ZL),'o','Color',[1 0 0])
Smith_plotY(ax(4),YL,1/Z0)
Smith_plotRefLine2PhaseCircle(ax(4),YL,1/Z0,[.2 .6 .2])
[x_swr,y_swr]=Smith_plotGammaCircle(ax(4),ZL,Z0,[1 .6 .6])
[g1x,g1y]=pol2cart(gamma_YL_angle,gamma_YL_mod)
[xr1,yr1]=Smith_plotRcircle(ax(4),Z0,Z0,[0 0 1])
[xint,yint]=intersections(x_swr,y_swr,xr1,yr1,1);
plot(ax(4),xint,yint,'go')
gb2=xint(2)+1j*yint(2);gb2_angle=angle(gb2);gb2_mod=abs(gb2)
if gb2_angle<0 gb2_angle=2*pi+gb2_angle; end
if gb2_angle>(2*pi) gb2_angle=gb2_angle-2*pi; end
Yb_2=1/Z0*((1+gb2)/(1-gb2)) ^-1
1/Yb_2 % check already on r=1
Smith_plotRefLine2PhaseCircle(ax(4),1/Yb_2,Z0,[.2 .8 .2])
gstub=conj(gb2)
plot(ax(4),real(gstub),imag(gstub),'bo')
Zbs=(1/Z0*(1-gstub)/(1+gstub)) ^-1
% using Z Smith chart values as if reversed Y Smith chart
Smith_plotBarc(ax(4),Zbs,Z0,[1 0 1])
% constant reactance arc plot line can also be called after defining Zbs
Zbs2=1j*imag(Zbs)
refl_Zstub=(Z0-Zbs2)/(Z0+Zbs2)
refl_Ystub=-refl_Zstub
plot(ax(4),real(refl_Ystub),imag(refl_Ystub),'ro')
Smith_plotRefLine2PhaseCircle(ax(4),Zbs2,Z0,[.2 .2 .8])
da=1/100;a_stub=[angle(refl_Ystub):da:pi];arc_stub2=da;
for k=1:1:numel(a_stub)
gamma_stub=cos(a_stub)+1j*sin(a_stub);
arc_stub2=arc_stub2+da;
plot(ax(4),real(gamma_stub),imag(gamma_stub),'bo','LineWidth',1.5);
end
arc_stub2=arc_stub2-da;
directly from the intersection points
Dstub2_lambda=abs(-pi-angle(stub))*.5/pi
Dstub2_angle_rad=abs(-pi-angle(stub))/2
Dstub2_angle_deg=abs(-pi-angle(stub))*90/pi
Dstub2_lambda=abs(-pi-angle(gstub))*.25/pi
electric length of OC stub
Dstub2_angle_rad=abs(-pi-angle(gstub))/2
Dstub2_angle_deg=abs(-pi-angle(gstub))*90/pi
% from the arc on Smith chart
arc_stub2_lambda=.25/pi*arc_stub2
% same as
Dstub2_lambda=arc_stub2/(4*pi)
Dstub2_angle_deg=arc_stub2/2*360/(2*pi)
Dstub2_lambda = 0.321729589176140
Dstub2_angle_rad = 1.010743313798222
Dstub2_angle_deg = 57.911326051705117
Dstub2_lambda = 0.160864794588070
Dstub2_angle_rad = 1.010743313798222
Dstub2_angle_deg = 57.911326051705117
arc_stub2_lambda = 0.377992989843247
Dstub2_lambda = 0.377992989843247
Dstub2_angle_de = 1.360774763435689e+02
Equations trimmed for all stub lengths:
Without Smith chart, [POZAR] solves this single open shunt stub match directly with the following equations
RL=real(ZL);XL=imag(ZL);Y0=1/Z0;
% when RL!=Z0
t1=(XL+((RL*((Z0-RL)^2+XL^2))/Z0)^.5)/(RL-Z0)
t2=(XL-((RL*((Z0-RL)^2+XL^2))/Z0)^.5)/(RL-Z0)
% when RL=Z0
D1_TL=1/(2*pi)*atan(t1);if atan(t1)<0 D1_TL=D1_TL+.5; end
D2_TL=1/(2*pi)*atan(t2);if atan(t2)<0 D2_TL=D2_TL+.5; end
B1=(RL^2*t1-(Z0-XL*t1)*(XL+Z0*t1))/(Z0*(RL^2+(XL+Z0*t1)^2))
B2=(RL^2*t2-(Z0-XL*t2)*(XL+Z0*t2))/(Z0*(RL^2+(XL+Z0*t2)^2))
Dstub1oc=1/(2*pi)*atan(-B1/Y0); if Dstub1<0 Dstub1=Dstub1+.5; end
Dstub2oc=1/(2*pi)*atan(-B2/Y0); if Dstub1<0 Dstub2=Dstub2+.5; end
B1 and B2 are the reactances on the circle r=Z0. so stub input reactances 1j*Bs1 and 1j*Bs2 have to be the conjugates of 1j*B1 and 1j*B2
t1 = 7.071261637588793
t2 = -0.671261637588793
D1_TL = 0.227640974365225
D2_TL = 0.405911259087935
B1 = 0.012904205458629
B2 = -0.012904205458629
Dstub1oc = 0.377602825442526
Dstub2oc = 0.122397174557474
Frequency Response:
Checking frequency notch is correctly generated where expected. First gathering together all transmission line and stub lengths:
D_TL=[D1_TL_lambda D2_TL_lambda]
Dstub=[Dstub1_lambda Dstub2_lambda]
from the equations
D_TL_eq=[D1_TL D2_TL]
Dstub_eq=[Dstub1oc Dstub2oc]
either combine
D_TL(1)
Dstub(1)
or
D_TL(2)
Dstub(2)
D=[D_TL D_TL_eq;Dstub Dstub_eq]
c0=2.998e8;
f0=2e9;
df=1e3;f1=1e9;f2=3e9;f=[f1:df:f2];
D_TL = 0.405924682355882 0.227671146092940
Dstub = 0.122549306180760 0.377992989843247
D_TL_eq = 0.227640974365225 0.405911259087935
Dstub_eq = 0.377602825442526 0.122397174557474
= 0.405924682355882
= 0.122549306180760
= 0.227671146092940
= 0.161542267238274
D =
Columns 1 through 3
0.405924682355882 0.227671146092940 0.227640974365225
0.122549306180760 0.377992989843247 0.377602825442526
Column 4
0.405911259087935
0.122397174557474
Then the physical lengths of all transmission lines and stubs are:
L=D*c0/f0
GL=real(YL);BL=imag(YL);
s11=zeros(size(D,2),numel(f));
ZinTL=zeros(size(D,2),numel(f));
Zin_stb_oc=zeros(size(D,2),numel(f));
Zin=zeros(size(D,2),numel(f));
% series transmission line input impedance
for k=1:1:size(L,2)
ZinTL(k,:)=Z0*(ZL+1j*Z0*tan(2*pi*f/c0*L(1,k))) ...
./(Z0+1j*ZL*tan(2*pi*f/c0*L(1,k)));
end
% open circuit shunt stub input impedance
for k=1:1:size(D,2)
Zin_stb_oc(k,:)=Z0./(1j*tan(2*pi*L(2,k)*f/c0));
end
Zin=1./(ZinTL.^-1+Zin_stb_oc.^-1);
s11=(Zin-Z0)./(Zin+Z0);
s11_mod=abs(s11);
for k=1:1:size(s11_mod,1)
figure(10);plot(f,s11_mod(k,:));hold all;
end
grid on
title('TL + OC shunt stub |s11|');xlabel('f [Hz]')
legend('arc1','arc2','eq1','eq2','Location','northwest')
L =
Columns 1 through 3
0.060848109885147 0.034127904799332 0.034123382057347
0.024334472488865 0.050851890303933 0.056602663533835
Column 4
0.060846097737281
0.018347336466165
Directly sweeping frequency f, is equivalent to sweeping relative frequency f/f0 same frequency plot is obtained with the following lines:
frel=linspace(.5,1.5,numel(f));
% series transmission line input impedance
for k=1:1:size(L,2)
ZinTL(k,:)=Z0*(ZL+1j*Z0*tan(2*pi*frel*f0/c0*L(1,k)))./(Z0+1j*ZL*tan(2*pi*frel*f0/c0*L(1,k)));
end
% open circuit shunt stub input impedance
for k=1:1:size(D,2)
Zin_stb_oc(k,:)=Z0./(1j*tan(2*pi*L(2,k)*frel*f0/c0));
end
Zin=1./(ZinTL.^-1+Zin_stb_oc.^-1);
s11=(Zin-Z0)./(Zin+Z0);
s11_mod=abs(s11);
for k=1:1:size(s11_mod,1)
figure(11);plot(frel,s11_mod(k,:));hold all;
end
grid on
title('TL + OC shunt stub |s11|');xlabel('frel=f/f0')
legend('arc1','arc2','eq1','eq2','Location','northwest')
And same as sweeping the wavelength fraction D
Drel=linspace(.5,1.5,numel(f));
for k=1:1:size(L,2)
ZinTL(k,:)=Z0*(ZL+1j*Z0*tan(2*pi*Drel*D(1,k)))./(Z0+1j*ZL*tan(2*pi*Drel*D(1,k)));
% series transmission line input impedance
end
for k=1:1:size(D,2)
Zin_stb_oc(k,:)=Z0./(1j*tan(2*pi*Drel*D(2,k)));
% open circuit shunt stub input impedance
end
Zin=1./(ZinTL.^-1+Zin_stb_oc.^-1);
s11=(Zin-Z0)./(Zin+Z0);
s11_mod=abs(s11);
for k=1:1:size(s11_mod,1)
figure(12);plot(Drel,s11_mod(k,:));hold all;
end
grid on
title('TL + OC shunt stub |s11|');xlabel('Drel=[D/a a*D]')
legend('arc1','arc2','eq1','eq2','Location','northwest')
Complete overlap of frequency responses, between transmission lines and stub lengths obtained with the Smith chart and with the equations.
Error propagation: From Smith Chart reading error, to stub, Zin errors and frequency mismatch
% calculating stub lenght Dstub1
Z0=75; ZL=100+1j*80;sm1=smithchart; ax=gca; hold all;
gamma_ZL=(ZL-Z0)/(ZL+Z0);
plot(ax,real(gamma_ZL),imag(gamma_ZL),'o','Color',[1 0 0])
YL=1/ZL;gamma_YL=-gamma_ZL
gamma_YL_angle=angle(gamma_YL);
gamma_YL_mod=abs(gamma_YL)
if gamma_YL_angle<0
gamma_YL_angle=2*pi+gamma_YL_angle; end
if gamma_YL_angle>(2*pi)
gamma_YL_angle=gamma_YL_angle-2*pi; end
Smith_plotY(ax,YL,1/Z0)
Smith_plotRefLine2PhaseCircle(ax,YL,1/Z0,[.2 .6 .2])
[x_swr,y_swr]=Smith_plotGammaCircle(ax,ZL,Z0,[1 .6 .6])
[g1x,g1y]=pol2cart(gamma_YL_angle,gamma_YL_mod)
[xr1,yr1]=Smith_plotRcircle(ax,Z0,Z0,[0 0 1])
[xint,yint]=intersections(x_swr,y_swr,xr1,yr1); plot(ax,xint,yint,'go')
gb1=xint(1)+1j*yint(1);gb1_angle=angle(gb1);gb1_mod=abs(gb1)
if gb1_angle<0 gb1_angle=2*pi+gb1_angle; end
if gb1_angle>(2*pi) gb1_angle=gb1_angle-2*pi; end
yb_1=1/Z0*((1+gb1)/(1-gb1))^-1
1/yb_1 % check already on r=1
Smith_plotRefLine2PhaseCircle(ax,1/yb_1,Z0,[.2 .8 .2])
gstub=conj(gb1) % where should OC stub Zin be
plot(ax,real(gstub),imag(gstub),'bo')
Ybs=(1/Z0*(1-gstub)/(1+gstub)) % ^-1;
Smith_plotRefLine2PhaseCircle(ax,1/Ybs,Z0,[.2 .2 .8])
Smith_plotBarc(ax,Zbs,Z0,[.8 .2 .8])
da=1/1000;a_stub=[angle(gstub):-da:-pi];arc_stub1=da;
for k=1:1:numel(a_stub)
gamma_stub=.99*(cos(a_stub)+1j*sin(a_stub));
arc_stub1=arc_stub1+da;
plot(ax,real(gamma_stub),imag(gamma_stub),'bo','LineWidth',1.5);
end
erroneous reading, do not follow the line. but the arc, to correctly read reactances on the Smith Chart.
directly from the intersection points
Dstub1_lambda_err=abs(-pi-angle(gstub))*.25/pi
Dstub1_angle_rad_err=abs(-pi-angle(gstub))/2
% electric length of OC stub
Dstub1_angle_deg_err=abs(-pi-angle(gstub))*90/pi
% from the arc on Smith chart
arc_stub1_lambda_err=.25/pi*arc_stub1
% same as
Dstub1_lambda_err=arc_stub1/(4*pi)
Dstub1_angle_deg_err=arc_stub1/2*360/(2*pi)
While operating the equations, decision points keep showing up where signs have to be discerned.
Yet, reading the covered arc, from the intersection point to Y Smith chart Open Circuit -1+0*1j, it's simple and straight to get how long the stub has to be.
Dstub1_lambda_err = 0.339135205411930
Dstub1_angle_rad_err = 2.130849339791571
Dstub1_angle_deg_err = 1.220886739482949e+02
arc_stub1_lambda_err = 0.161542267238274
Dstub1_lambda_err = 0.161542267238274
Dstub1_angle_deg_err = 58.155216205778579
The error introduced by cutting OC shunt stubs a little bit shorter or longer is apparently a small angle error:
errD=Dstub-Dstub_err
errD_rad=errD*pi/.25
errD_deg=errD*pi/.25*180/pi
= -0.038992961057514 0.038197186342054
= -0.490000000000000 0.479999999999989
= -28.074931961410318 27.501974166278909
Yet when comparing frequency responses:
D_TL=[D1_TL_lambda D2_TL_lambda]
Dstub_err=[Dstub1_lambda_err Dstub2_lambda_err]
D=[D_TL D_TL_eq;Dstub_err Dstub_eq]
c0=2.998e8;
f0=2e9;
df=1e3;f1=1e9;f2=3e9;f=[f1:df:f2];
L=D*c0/f0
s11=zeros(size(D,2),numel(f));
ZinTL=zeros(size(D,2),numel(f));
Zin_stb_oc=zeros(size(D,2),numel(f));
Zin=zeros(size(D,2),numel(f));
for k=1:1:size(L,2)
ZinTL(k,:)=Z0*(ZL+1j*Z0*tan(2*pi*f/c0*L(1,k))) …
./(Z0+1j*ZL*tan(2*pi*f/c0*L(1,k)));
end
for k=1:1:size(D,2)
Zin_stb_oc(k,:)=Z0./(1j*tan(2*pi*L(2,k)*f/c0));
end
Zin=1./(ZinTL.^-1+Zin_stb_oc.^-1);
s11=(Zin-Z0)./(Zin+Z0);
s11_mod=abs(s11);
for k=1:1:size(s11_mod,1)
hf(100)=figure(100);plot(f,s11_mod(k,:));hold all;
end
grid on
title('TL + error 2nd decimal OC shunt stub |s11|');
xlabel('f [Hz]')
legend('arc1','arc2','eq1','eq2','Location','northwest')
Observation: On reading the wrong OC shunt stub input reactance on the Smith chart, despite both stubs being then a little bit too short, one OC stub pushes the deteriorated frequency notch to a slightly higher frequency , while the other, still being a bit shorter than it should be, it shifts the deteriorated frequency notch to a slightly lower frequency. So, for fine tuning, it's not always 'shorter' for higher frequencies or 'longer' for lower frequencies.
zip also available here: https://forum.allaboutcircuits.com/attachments/uw-eng_05_exercise_03-zip.159663/