I'm looking at the raw data from a VNA (HP 8720A) and I want to understand how to interpret it, and how to do after-the-fact calibration (ie: read raw data, then apply to it whatever corrections a calibration would apply, but outside the VNA).

To start, I have S11 recordings of an open and short and load at the VNA port directly (no cable, no calibration), they look like this:

enter image description here enter image description here enter image description here

These are the numbers as output by the VNA over GPIB, not converted to decibels or anything like that. The short data is (more or less) the negative of the open data; and both look like sine waves with 90 degree shift between real and imaginary. The load is pretty absorbing to 12GHz and goes a bit haywire after that. Does this look as expected?

If I had a device under test connected to the port, and took a reading from it in the same way, how would I calculate the calibrated S11 afterwards?

UPDATE I measured a load as well, and solved for e00, e01 and e11 using a system of three equations each of which has the form given in @Neil_UK's answer: $$ m00 = \frac{b0}{a0} = e00 + \frac{e10.e01.S11}{1-e11.S11} $$

Here m00 are the measured readings for open/short/load, S11 are the assumed values for the short 1+0j, for the open 0+1j, and for the load 0+0j, and e00, e01 and e11 are the unknowns (e10 is assumed to be equal to 1). I used sympy to solve the system of equations, it produces really long expressions, but at least the system does have a unique closed-form solution. The results look like this:

enter image description here enter image description here enter image description here

So, e00 looks identical to the load (as expected), e01 has the change in phase vs frequency, and e11 has the fast ripple. e11 is not especially close to 0 though. Does this look reasonable?

  • 1
    \$\begingroup\$ To calibrate a 1-port VNA you need three sets of reference measurements: open, short, and terminated in your characteristic impedance (e.g. 50 ohms). \$\endgroup\$
    – hobbs
    Aug 30, 2021 at 2:18
  • \$\begingroup\$ @hobbs Okay - assuming I had a 50 ohm measurement as well - what would the math be to convert a raw (uncalibrated) S11 measurement to a calibrated measurement using S11open, S11short and S11load? \$\endgroup\$
    – Alex I
    Aug 30, 2021 at 3:44
  • 1
    \$\begingroup\$ Here's the best resource I could find online with a few minutes of searching: De-Embedding and Embedding S-Parameter Networks Using a Vector Network Analyzer \$\endgroup\$
    – The Photon
    Aug 30, 2021 at 4:57
  • 1
    \$\begingroup\$ Here's another decent looking one: Network Analyzer Error Models and Calibration Methods. \$\endgroup\$
    – The Photon
    Aug 30, 2021 at 5:06

1 Answer 1


This seems to be about the most comprehensive resource found when searching for 'VNA SOLT calibration' (SOLT = Short Open Load Thru).

However, there seems to be very little on the basics around, so I'll try to summarise.

We model an imperfect VNA by assuming a perfect VNA with an error 2-port network at each port. We mathematically cascade the error networks with our calibration standards, invert the calibration measurements to fix the error block terms, then remove them from the DUT measurement.

The mathematics used to model VNA systems is the linear Signal Flow Graph to keep track of the forward and reverse waves though the devices, and their reflections at discontinuities. We cascade SGFs using Mason's Gain Formula

Consider a single port measurement, made by port 1 of a VNA, ax and bx being the transmit and receive signals at port x

a1   >>>
p1     S11             
b1   <<<

a0   >>>>>> e10 >>>>>>  a1  >>>
         v        ^            v
p0      e00      e11    p1    S11
         v        ^            v
b0   <<<<<< e01 <<<<<<  b1  <<<

The perfect analyser makes measurements at port 0

The real measurements at port 1 are corrupted by

  • e00 - port directivity
  • e10 - transmission gain
  • e01 - receive gain
  • e11 - port reflection (mismatch)

and the measurement mxx the analyser makes of the DUT S11 (combining terms using Mason Gain Formula) is

$$m00 = \frac{b0}{a0} = e00 + \frac{e10.e01.S11}{1-e11.S11}$$

Although it appear the error network has four unknowns, e10 the transmission gain never appears by itself, only in a product with the receive gain e01 (or e32 when making a 2 port measurement) so we can without loss of generality make either the transmission gains or the receive gains equal to unity.

When we make a measurement of a known calibration piece, S11 is known. We have a system with 3 complex unknowns, so we need to make 3 complex measurements, and then solve a system of 3 simultaneous equations.

There are various ways to do this. The general method is to write the three measurements in matrix form, and use the standard rules of linear algebra to solve them for exx, by direct inversion, Cramer's Method, or / in matlab or scipy. This will work for any three general calibration pieces, like 3 offset shorts.

However, the treatment most usually found in introductory literature is to assume the simplest calibration scheme of short, open and load, and solve by direct substitution. With a load, S11=0, which allows e00 to be found directly. This is now substituted back into the equations for the open and short measurements, which yields a pair of simultaneous equations, solvable by high school methods.

As you have only measured short and open, you will have to make a further measurement, or make some assumptions (like e11=0 or e00=0 for instance), to fully solve the system. Depending whether the open is shielded or open to free space, you will also need to make some assumptions about the true reflection coefficient of the open, both electrical length and magnitude.

I'll list photon's finds here, just in case comments get lost. I'll remove these if he posts an answer preserving these links.



  • \$\begingroup\$ Thank you! I agree, there isn't that much introductory material - it was a steep learning curve, and your answer was incredibly helpful. I've updated the question - I measured a load as well, and solved the system of three equations you gave using the three measurements (I can post the code somewhere if that helps people). A few clarifying questions: is the assumed true S11 for short 1, open 1j, and load 0? Is it okay that my apparent e11 is nonzero / pretty large? \$\endgroup\$
    – Alex I
    Sep 4, 2021 at 23:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.