Look in the source code of nanoVNA-saver on github
Or if you only require perfect calibration standards use this:
plusJ=complex(0,1);
minJ=complex(0,-1);
one=complex(1,0);
two=complex(2,0);
gm1 = S; #Measured Short
gm2 = O; #Measured Open
gm3 = L; #Measured Load
s21m = T; #Measured Through
g1=complex(-1,0)
g2=complex(1,0);
g3=complex(0,0);
denominator = g1.*(g2 .- g3).*gm1;
denominator = denominator .+ g2.*g3.*gm2 .- g2.*g3.*gm3 .- (g2.*gm2 .- g3.*gm3).*g1;
e00 = - ((g2.*gm3 .- g3.*gm3).*g1.*gm2 .- (g2.*g3.*gm2 .- g2.*g3.*gm3 .- (g3.*gm2 .- g2.*gm3).*g1).*gm1) ./ denominator;
e11 = ((g2.-g3).*gm1.-g1.*(gm2.-gm3).+g3.*gm2.-g2.*gm3) ./ denominator;
deltaE = - ((g1.*(gm2.-gm3).-g2.*gm2.+g3.*gm3).*gm1.+(g2.*gm3.-g3.*gm3).*gm2) ./ denominator;
e10e32 = s21m .* (one - (e11.*e11));
ed = e00;
es = e11;
et = deltaE;
th = e10e32;
--
NanoVNA Wiki:
/g/nanovna-users/wiki/homeNanoVNA Files:
/g/nanovna-users/filesErik, PD0EK