I've recently come to suspect the effects of connectors on my measurements. I'm looking at several different ways of de-embedding their effects from measurements that I take with a network analyzer (20-30 GHz).

Here's the thru board I'm trying to deembed So Beautiful!!!!

I have 3 questions

1)Is S-parameter Bi-section a reasonable way to see the S-parameters for the DUT using measured data?

2) Given a T-matrix, Y-matrix, and Z-matrix method for solving for the symmetrical matrices, which produces the best result?

3) Given solving for a T-matrix, which of the 4 possible solutions should be used?

First Here's some background reading

Here are my doubts1 as well as here. These links discuss that with real data, S-parameter bisection the process begins to break down with excessive noise and other parasitics. Additionally, if insertion and return loss are too high the results are also inaccurate. Finally with the equations themselves there are several assumptions about symmetry that could ruin the results if symmetry is not kept.

I feel that the assumption of symmetry should work well with just 2 connectors and a trace, and insertion loss and return loss should be reasonable. I'm not sure if real world measurement noise would be an issue

Second, when I look at link 1, the method for bisection differs from 2 and 3. The methods introduced are using T-matrices, Y-matrices, and Z-matrices. Which of these produce the best result?

Finally after assuming that T-matrices (check out link 1) would work the best, I started solving the equations

[[T11,T12], [T21,T22]] * [[T22,T21],[T12,T11]] =  [[T11f,T12f],[T21f,T22f]]

after expanding this ( and assuming T12 = T21) out I get

T11f = T11*T22 + T12^2 
T12f = 2*(T11*T12)
T21f = 2*(T22*T12)
T22f = T11*T22 + T12^2

Solving for T12 (second equation) I get

T12  = T12f/(2*T11)

Solving for T22 (third equation)

T22 = T21f/(2*T12)

Finally plugging those into the first equation and solving for S11, I get

T11 = (T11f-T12^2) / T22
T11 = (T11f - T12f^2/4T11^2)/(T21f*T11/T12f)

This reduces down to

T11^4 - (T12f*T11f/T21f)*T11^2 + (T12^3/(4*T21f)) = 0

when I solve this equation I get 4 possible answers. Which should I use?

EDIT *****

I found this link that suggests an easy way to do things is to switch to abcd matrices, then to take the square root. here's some sample code I made using python

import numpy as np
import nport
import scipy
from nport import touchstone

// I imported some files that were saved in a matlab format 
// the names are freq and new_data
new_n = nport.NPort(np.array(freq),np.array(new_data),nport.S,50)
abcd2 = new_n.convert('ABCD')

new_abcd = []
for i,value in enumerate(abcd2):
    if not i:
        print("START HERE!!!")
    holder = scipy.linalg.sqrtm(value)
    if not i:


newest_n = nport.NPort(np.array(freq),np.array(new_abcd),nport.ABCD)

half = newest_n.convert('S', 50)

2 Answers 2


I wrote an application note talking about de-embedding techniques. In it, I compare various methods which might be employed. The AFR software from Copper Mountain Technologies is capable of performing a number of different de-embedding techniques but requires a CMT VNA. AFR will de-embed most fixturing as long as there are no huge discontinuities as described in the app note.

The App note also describes the mathematics behind the two gating methods.

Eliminating Fixture Effects


To answer (1), I would recommend de-embedding differently, namely "gating". Gating is done in the time domain. Most VNAs will gave a time gating option. The same holds true about noise and large impedance mismatches, but you should be ok here. For a really good paper on gating, read Joel Dunsmore Link

EDIT: I'll add a link to a short paper I wrote a few years ago that basically sums up the Dunsmore paper with examples time-domain gating

  • \$\begingroup\$ I don't think the VNA I'm using has a gating option. Any other suggestions? \$\endgroup\$ Commented Nov 10, 2015 at 0:45
  • \$\begingroup\$ Read the paper in the link. You can gate data in post processing. I've written a white paper on it. I'll try and find it \$\endgroup\$
    – johnnymopo
    Commented Nov 10, 2015 at 0:51
  • \$\begingroup\$ added a link to a quick paper I wrote with examples of data taken at 200 GHz based on the previously linked paper \$\endgroup\$
    – johnnymopo
    Commented Nov 10, 2015 at 1:23
  • \$\begingroup\$ Let me know if this sums up what you are suggesting. Convert S-parameters to Time-domain and identify signal of interest. Create a windowing function (you suggested a kaiser window with Beta=6, as opposed to a true gating function to compensate for distortion at the beginning and ending? ). transform this windowing function to time domain, then multiply the window with the data (both in time domain). Finally convert back to frequency domain \$\endgroup\$ Commented Nov 10, 2015 at 19:05
  • \$\begingroup\$ pretty much, except also add the post-gate renormalization. btw, this is not my original thought - this comes from Joel Dunsmore at Agilent. I just worked through his paper on the subject and forum responses about Agilent gating \$\endgroup\$
    – johnnymopo
    Commented Nov 10, 2015 at 19:10

Your Answer

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

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