ABCD To Z And Back
A little while back I was reminded of the ABCD matrix during a discussion
on the synthdiy mailing list. While they have been around for decades their power and simplicity is perfect for
design and analysis of passive filter networks. On this page I bring together
the theory of the ABCD matrix, and show how it can be used to solve seeminglycomplex
passive networks using nothing more than 2x2 matrices. And along the way we'll use
computers to do the tedious algebraic crunching.
A To D Via B And C
The ABCD Matrix (or Chain Matrix or Transmission Matrix) describes
a twoport network: a box with a twowire port on the left and a twowire port on the right.
One peculiarity of the ABCD matrix as compared to the other twoport networks is the
direction of the current flow on the second port is reversed (those familiar with
twoport networks would have spotted the "wrong" sign of I_{2} already).
The importance of this
subtle distinction comes to light when we cascade  or chain  two networks
whereupon the output current of the first network becomes the input current of the second
network without tedious signchanging to worry about.
The A, B, C and D refer to the names of the four components of the ABCD matrix. First
we write out the matrices in full:
$$
\left[
\begin{array}{c}
V_1 \\
I_1 \\
\end{array}
\right] =
\left[
\begin{array}{cc}
A & B \\
C & D \\
\end{array}
\right]
\left[
\begin{array}{c}
V_2 \\
I_2 \\
\end{array}
\right]
$$
From here we can write down the expressions for V_{1} and I_{1}:
$$
\begin{array}{rcl}
V_1 &=& AV_2 + BI_2 \\
I_1 &=& CV_2 + DI_2
\end{array}
$$
By setting V_{2} or I_{2} to zero (shortcircuit or opencircuit respectively)
we can derive simple expressions for the four terms:
$$
\begin{array}{cc}
A = \left.\frac{V_1}{V_2}\right_{I_2=0} & B = \left.\frac{V_1}{I_2}\right_{V_2=0}\\
C = \left.\frac{I_1}{V_2}\right_{I_2=0} & D = \left.\frac{I_1}{I_2}\right_{V_2=0}\\
\end{array}
$$
Components A and D are dimensionless ratios, B is in Ohms, and C is in Siemens.
A network is said to be symmetrical (input impedance equals output impedance) if A = D.
A network is reciprocal if AD  BC = 1; that is, the voltage at port 2 when a current is
applied to port 1 is the same as the voltage at port 1 when the same current is applied to port 2.
Chaining
Now consider two networks chained together:
Starting from the left side of the circuit we have
$$
\left[
\begin{array}{c}
V_1 \\
I_1 \\
\end{array}
\right] = \left[
\begin{array}{cc}
A_1 & B_1 \\
C_1 & D_1 \\
\end{array}
\right] \left[
\begin{array}{c}
V_2 \\
I_2 \\
\end{array}
\right]
$$
and then
$$
\left[
\begin{array}{c}
V_2 \\
I_2 \\
\end{array}
\right] = \left[
\begin{array}{cc}
A_2 & B_2 \\
C_2 & D_2 \\
\end{array}
\right] \left[
\begin{array}{c}
V_3 \\
I_3 \\
\end{array}
\right]
$$
Chaining the two together we get
$$
\left[
\begin{array}{c}
V_1 \\
I_1 \\
\end{array}
\right] = \left[
\begin{array}{cc}
A_1 & B_1 \\
C_1 & D_1 \\
\end{array}
\right] \left[
\begin{array}{cc}
A_2 & B_2 \\
C_2 & D_2 \\
\end{array}
\right] \left[
\begin{array}{c}
V_3 \\
I_3 \\
\end{array}
\right]
$$
Note that the order of multiplication is important in matrix math so make
sure you follow the order as described by the circuit.
Simple Networks
There are just two basic networks to consider  what we might call the canonical forms.
These are the series element and the shunt element.
Series Element
The series element has one impedance  Z  in series with two of the port connections.
The convention is as shown below although there is no reason it cannot be in the bottom
connection.
If we now consider the four matrix terms by examining the circuit with the
righthand port open and closecircuited then we find the corresponding matrix
to be:
$$
\left[
\begin{array}{cc}
1 & Z \\
0 & 1 \\
\end{array}
\right]
$$
Shunt Element
Similarly, the shunt element has one impedance connected across, or shunting,
the two sets of connections:
From which we can derive the matrix as:
$$
\left[
\begin{array}{cc}
1 & 0 \\
\frac{1}{Z} & 1 \\
\end{array}
\right]
$$
Worked Example: RC Low Pass Filter
To illustrate how ABCD matrices are applied we show how the transfer function
of the wellknown RC lowpass filter can be derived from a chain of a series resistor
and a shunt capacitor.
$$
\left[
\begin{array}{c}
V_{\textit{in}} \\
I_{\textit{in}} \\
\end{array}
\right] = \left[
\begin{array}{cc}
1 & R \\
0 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & 0 \\
sC & 1 \\
\end{array}
\right] \left[
\begin{array}{c}
V_{\textit{out}} \\
I_{\textit{out}} \\
\end{array}
\right]
$$
After matrix multiplication we get
$$
\left[
\begin{array}{c}
V_{\textit{in}} \\
I_{\textit{in}} \\
\end{array}
\right] = \left[
\begin{array}{cc}
1+sCR & R \\
sC & 1 \\
\end{array}
\right] \left[
\begin{array}{c}
V_{\textit{out}} \\
I_{\textit{out}} \\
\end{array}
\right]
$$
If we assume that the output of the resulting network connects to a highimpedance
circuit (e.g., opamp buffer) then we can use the A term as simply the inverse of the transfer
function of the network:
$$
\begin{array}{rcl}
H(s) &=& \frac{1}{A} \\
A &=& 1 + sCR \\
\therefore H(s) &=& \frac{1}{1 + sCR} \\
\end{array}
$$
which is the wellknown transfer function of an RC lowpass filter.
Running In Parallel
ABCD matrices work fine for chaining two or more networks in series, but are rather
difficult for parallel networks (e.g., twinT notch filter). The solution is to use
Y (admittance) networks as an intermediate step, converting the two ABCD matrices
into Y matrices, adding them, and then converting the resulting Y matrix back into an
ABCD matrix.
From
Frickey:
$$
\begin{array}{rcl}
Y_{11} &=& \frac{D}{B} \\
Y_{12} &=& \frac{(BCAD)}{B} \\
Y_{21} &=& \frac{1}{B} \\
Y_{22} &=& \frac{A}{B} \\
\end{array}
$$
and the inverses
$$
\begin{array}{rcl}
A &=& \frac{Y_{22}}{Y_{21}} \\
B &=& \frac{1}{Y_{21}} \\
C &=& \frac{(Y_{12}Y_{21}  Y_{11}Y_{22})}{Y_{21}} \\
D &=& \frac{Y_{11}}{Y_{21}} \\
\end{array}
$$
Practical Examples
4Stage RC Low Pass Filter
Given that we have just seen how the classic RC filter can be analysed with the
help of the ABCD matrix let's take a look at a more involved example.
Consider the 4stage unbuffered RC filter in the paper by Electronotes/Hutchins
(ELECTRONOTES 210 Vol. 22 May 2012).
The filter in question is reproduced below:
This circuit comprises four RC sections in cascade. According to the author:
I don't know how many times I have started out to actually solve the unbuffered case (A).
I always gave up, even after dropping back to the case where all the R's and all the C's were
equal. It clearly was not impossible  just excessively tedious.
We previously computed
the ABCD matrix for a single RC section, so the solution is the multiplication
of four RC sections:
$$
\left[
\begin{array}{c}
V_\textit{in} \\
I_\textit{in} \\
\end{array}
\right] = \left[
\begin{array}{cc}
1+sC_1R_1 & R_1 \\
sC_1 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1+sC_2R_2 & R_2 \\
sC_2 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1+sC_3R_3 & R_3 \\
sC_3 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1+sC_4R_4 & R_4 \\
sC_4 & 1 \\
\end{array}
\right] \left[
\begin{array}{c}
V_\textit{out} \\
I_\textit{out} \\
\end{array}
\right]
$$
Expanding out the multiplication would be rather tedious by hand, so we use
maxima to do the
algebraic gymnastics for us.
Setting all resistors equal and all capacitors equal simplifies the transfer
function to the following expression:
$$
\frac{1}{s^4C^4R^4 + 7s^3C^3R^3 + 15s^2C^2R^2 + 10sCR + 1}
$$
Factorising this we can determine the locations of the poles:
$$
\frac{1}{(sCR + 1)(s^3C^3R^3 + 6s^2C^2R^2 + 9sCR + 1)}
$$
The first term is the familiar RC lowpass filter we derived above. The second term is rather more complex.
If we rewrite the term substituting \(p = sCR\) then we have a simple cubic expression
\(p^3 + 6p^2 + 9p + 1\). Using any one of the
online cubic solvers
we find the three values for \(p = 0.121, 2.347, 3.532\).
Notice that they are all real, i.e., lie on the real axis.
We can now write down the three poles as: \((p + 0.121)(p + 2.347)(p + 3.532)\). Substituting back we get
\((sCR + 0.121)(sCR + 2.347)(sCR + 3.532)\). Finally we can write down the transfer function:
$$
\frac{1}{(sCR + 1)(sCR + 0.121)(sCR + 2.347)(sCR + 3.532)}
$$
For the plot below we set R to 1k0,
C to 100n and sweep over the range 1Hz to 100kHz.
To confirm these results an AC simulation was run in
LTSpice confirming the theoretical filter behaviour:
Some interesting observations can be made from the spice plot. Firstly, note that at around 2kHz
the phase (dashed line) reaches 180° of phase shift. In other words a 2kHz sine wave is inverted,
albeit reduced in amplitude by about 26dB (roughly 1/20th of the input level).
Secondly, the phase shift continues heading towards 360°  by
the time the frequency reaches around 1MHz the phase shift is very close to 360°, although
this far from the cutoff point the attenuation is around 200dB. Things get rather theoretical
down at this level!

A little while after publishing the above analysis Hutchins wrote a response published as
ENWN42. While taking a slightly
different route to the commonRC solution he arrives at the same point, and extends the work
by plotting the rootlocus of the filter in the presence of feedback.
TwinT Filter
The classic twinT filter is a purely RC circuit that can produce a very sharp
notch response. It (or its close cousin the bridgedT) is often used in audio analysers to remove
the fundamental signal. The circuit is remarkably simple, yet theoretically can achieve very
deep notches.
As can be seen the circuit comprises two Tsections (one RCR the other CRC) wired in parallel.
On one branch the current leads, and on the other the current lags. As the frequency approaches
the notch frequency the phase shifts approach ±90° effectively cancelling each other
out at the summing node. If all the components were ideal then the cancellation would be perfect.
Analysis proceeds by considering each of the Tsections in turn.
To facilitate the operations in Maxima I use these two definitions to convert between ABCD
and Y matrices:
abcd_to_y(m) := matrix([m[2,2]/m[1,2], (m[1,2]*m[2,1]  m[1,1]*m[2,2])/m[1,2]],[1/m[1,2], m[1,1]/m[1,2]]);
y_to_abcd(y) := matrix([y[2,2]/y[2,1],1/y[2,1]],[(y[1,2]*y[2,1]  y[1,1]*y[2,2])/y[2,1],y[1,1]/y[2,1]]);
The first section, comprising R1, C1 and R2, is described by three chained matrices:
$$
\left[
\begin{array}{c}
V_\textit{in} \\
I_\textit{in} \\
\end{array}
\right] = \left[
\begin{array}{cc}
1 & R_1 \\
0 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & 0 \\
sC_1 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & R_2 \\
0 & 1 \\
\end{array}
\right] \left[
\begin{array}{c}
V_\textit{out} \\
I_\textit{out} \\
\end{array}
\right]
$$
The second section, comprising C2, R3 and C3, produces
$$
\left[
\begin{array}{c}
V_\textit{in} \\
I_\textit{in} \\
\end{array}
\right] = \left[
\begin{array}{cc}
1 & \frac{1}{sC_2} \\
0 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & 0 \\
\frac{1}{R_3} & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & \frac{1}{sC_3} \\
0 & 1 \\
\end{array}
\right] \left[
\begin{array}{c}
V_\textit{out} \\
I_\textit{out} \\
\end{array}
\right]
$$
For the next step we compute the ABCD matrices for the two sections,
then use abcd_to_y() and y_to_abcd() :
$$
\begin{array}{rcl}
\textit{RCR} &=& \left[
\begin{array}{cc}
1 & R_1 \\
0 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & 0 \\
sC_1 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & R_2 \\
0 & 1 \\
\end{array}
\right] \\
\textit{CRC} &=& \left[
\begin{array}{cc}
1 & \frac{1}{sC_2} \\
0 & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & 0 \\
\frac{1}{R_3} & 1 \\
\end{array}
\right] \left[
\begin{array}{cc}
1 & \frac{1}{sC_3} \\
0 & 1 \\
\end{array}
\right] \\
Y_\textit{RCR} &=& \mathtt{abcd\_to\_y}(\textit{RCR}) \\
Y_\textit{CRC} &=& \mathtt{abcd\_to\_y}(\textit{CRC}) \\
Y_\textit{TT} &=& Y_\textit{RCR} + Y_\textit{CRC} \\
\textit{TT} &=& \mathtt{y\_to\_abcd}(Y_\textit{TT})
\end{array}
$$
The result is rather complicated, so we won't show it here.
What we are interested in is the transfer function, which is:
$$
\textit{TF}(s) = {{{{1}\over{{\it R_1}\,\left(1+s\,{\it C_1}\,{\it R_2}\right)+
{\it R_2}}}{{1}\over{{{1+{{1}\over{s\,{\it C_3}\,{\it R_3}}}}\over{
s\,{\it C_2}}}+{{1}\over{s\,{\it C_3}}}}}}\over{{{1+{{1}\over{s\,
{\it C_2}\,{\it R_3}}}}\over{{{1+{{1}\over{s\,{\it C_3}\,{\it R_3}}}
}\over{s\,{\it C_2}}}+{{1}\over{s\,{\it C_3}}}}}{{1+s\,{\it C_1}\,
{\it R_1}}\over{{\it R_1}\,\left(1+s\,{\it C_1}\,{\it R_2}\right)+
{\it R_2}}}}}
$$
Still quite a handful, so we apply the usual simplification setting
\(R1 = R, R2 = R, R3 = R/2\) and \(C1 = 2C, C2 = C, C3 = C\).
$${TF(s)}={{1+s^2\,C^2\,R^2}\over{s^2\,C^2\,R^2+4\,s\,C\,R+1}}$$
That looks more tractable. If we then expand out \(s = j\omega\) we get
$${TF(s)}={{1\omega^2\,C^2\,R^2}\over{\omega^2\,C^2\,R^2+4\,j\,\omega\,C\,R+1}}$$
For a notch filter (band reject) we are interested in the frequency
at which the transfer function is zero (infinite attenuation). For this
we need only find when the numerator is equal to zero:
$$1\omega^2\,C^2\,R^2=0$$
Finally we can determine the relationship between f, C, and R:
$$
\begin{array}{c}
\omega^2\,C^2\,R^2 = 1\\
\omega CR = 1 \\
\omega = \frac{1}{CR} \\
\end{array}
$$
Substituting \(\omega = 2\pi f\) leads us to
$$
f = \frac{1}{2 \pi CR}
$$
which is the expected result.
Conclusion
In this section we have seen how the ABCD matrices can be used together
with automated tools (maxima in this case) to analyse the behaviour
of passive component networks. While intermediate results may look
scary, in practice we are primarily interested in the transfer function
which is readily extracted from the ABCD matrix.
As an aside, there may be readers thinking "Ah yes, but what if there
is an inverting opamp on the output, so we can't assume that \(I_2\)
is zero. What then smartypants?". In that specific case you can model
the input resistance of the inverting amplifier stage as a final shunt
resistor and then you can either consider the output voltage, as before,
or determine the current through the resistor as the current into the
transimpedance (currentinvoltageout) amplifier.
