Lorentzian signal fit

A plot showing two S21 peaks through a resonator is given below:

As you can see, the first resonance peak occurs at 4.43GHz. The fit applied to this peak is given below.

$$y = A - 10 \log_{10} {\left[ 1.0 + \left( 4Q^2 \left(1-\frac{\omega_d}{\omega_0}\right)^2\right) \right]}$$

This fit gives a nice curve and physically sensible values of $A$, $Q$ and $\omega_0$.

The second peak occurs at a frequency close to 4.99GHz. This peak is different to the first, it is a peak sharply followed by a trough.

In the case of the second resonance peak at 4.99GHz, are there any tricks for fitting such a peak properly? My main concern is determining the true $A$, $Q$ and $\omega_0$ values for this peak.

Cheers for any ideas.

Also, if anybody has any ideas why such a resonance peak takes the form of that at 4.99GHz, please share.

• What kind of system is this? What is resonating? – Jazzmaniac Jul 25 '14 at 16:24
• It is a lamda/2 superconducting coplanar waveguide resonator. (Resonator is defined by two capacitors along the coplanar waveguide) – user10619 Jul 25 '14 at 17:59

What you have for your 2nd 'resonance' is actually a vibrational mode with a transfer function of the form ('s' being the Laplace variable)

H(s) = (s^2 + 2*zeta1*omega1*s + omega1^2) / (s^2 + 2*zeta2*omega2*s + omega2^2)

The denominator 'omega2' term corresponds to the peak at 4.99GHz, and the numerator 'omega1' term corresponds to the deep trough that follows the peak at 4.99 GHz.

One can demonstrate this behavior in Matlab very simply using the code below

zeta1 = .01; omega1 = 1.02; zeta2 = .011; omega2 = 1.0;

num = [1 2*zeta1*omega1 omega1^2];

den = [1 2*zeta2*omega2 omega2^2];

freqs(num,den)

The frequency response is shown in the figure below which mimics your 2nd 'resonance'.

What you need to do for your 2nd 'resonance' is to estimate 4 (not 2) parameters, viz., omega2 and zeta2 (for the peak) and omega1 and zeta1 (for the trough). Depending on your data a nonlinear least squares optimization scheme should do. As a start, you could assume zeta1 and zeta2 to be equal (say zeta) and get an initial estimate of the terms 'omega1' and 'omega2' from your graph (or data). This leaves you with solving for just 'zeta'. Then you could iterate the model to get zeta1 and zeta2, etc., etc.

Note that the 'Q' term that you used is directly related to the quantity 'zeta' in my exposition here.