485 lines
12 KiB
HTML
485 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
|
|
original version by: Nikos Drakos, CBLU, University of Leeds
|
|
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
|
* with significant contributions from:
|
|
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
|
<HTML>
|
|
<HEAD>
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
|
|
<TITLE>Stretching the unit circle with rational functions</TITLE>
|
|
<META NAME="description" CONTENT="Stretching the unit circle with rational functions">
|
|
<META NAME="keywords" CONTENT="book">
|
|
<META NAME="resource-type" CONTENT="document">
|
|
<META NAME="distribution" CONTENT="global">
|
|
|
|
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
|
|
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
|
|
|
<LINK REL="STYLESHEET" HREF="book.css">
|
|
|
|
<LINK REL="next" HREF="node147.html">
|
|
<LINK REL="previous" HREF="node145.html">
|
|
<LINK REL="up" HREF="node139.html">
|
|
<LINK REL="next" HREF="node147.html">
|
|
</HEAD>
|
|
|
|
<BODY >
|
|
<!--Navigation Panel-->
|
|
<A ID="tex2html2758"
|
|
HREF="node147.html">
|
|
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
|
SRC="next.png"></A>
|
|
<A ID="tex2html2752"
|
|
HREF="node139.html">
|
|
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
|
SRC="up.png"></A>
|
|
<A ID="tex2html2746"
|
|
HREF="node145.html">
|
|
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
|
SRC="prev.png"></A>
|
|
<A ID="tex2html2754"
|
|
HREF="node4.html">
|
|
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
|
SRC="contents.png"></A>
|
|
<A ID="tex2html2756"
|
|
HREF="node201.html">
|
|
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
|
|
SRC="index.png"></A>
|
|
<BR>
|
|
<B> Next:</B> <A ID="tex2html2759"
|
|
HREF="node147.html">Butterworth band-pass filter</A>
|
|
<B> Up:</B> <A ID="tex2html2753"
|
|
HREF="node139.html">Designing filters</A>
|
|
<B> Previous:</B> <A ID="tex2html2747"
|
|
HREF="node145.html">Butterworth filters</A>
|
|
<B> <A ID="tex2html2755"
|
|
HREF="node4.html">Contents</A></B>
|
|
<B> <A ID="tex2html2757"
|
|
HREF="node201.html">Index</A></B>
|
|
<BR>
|
|
<BR>
|
|
<!--End of Navigation Panel-->
|
|
|
|
<H2><A ID="SECTION001237000000000000000">
|
|
Stretching the unit circle with rational functions</A>
|
|
</H2>
|
|
|
|
<P>
|
|
In Section <A HREF="node143.html#sect8.twopolebandpass">8.3.4</A> we saw a simple way to turn a low-pass
|
|
filter into a band-pass one. It is tempting to apply the same method to turn
|
|
our Butterworth low-pass filter into a higher-quality band-pass filter; but if
|
|
we wish to preserve the high quality of the Butterworth filter we must be more
|
|
careful than before in the design of the transformation used. In this section
|
|
we will prepare the way to making the Butterworth band-pass filter by
|
|
introducing a class of rational transformations of the complex plane which
|
|
preserve the unit circle.
|
|
|
|
<P>
|
|
This discussion is adapted from [<A
|
|
HREF="node202.html#r-parks87">PB87</A>], pp. 201-206 (I'm grateful
|
|
to Julius Smith for this pointer). There the transformation is carried out
|
|
in continuous time, but here we have adapted the method to operate in
|
|
discrete time, in order to make the discussion self-contained.
|
|
|
|
<P>
|
|
The idea is to start with any filter with a transfer function as before:
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
H(Z) = {
|
|
{
|
|
(1 - {Q_1}{Z^{-1}}) \cdots (1 - {Q_j}{Z^{-1}})
|
|
} \over {
|
|
(1 - {P_1}{Z^{-1}}) \cdots (1 - {P_k}{Z^{-1}})
|
|
}
|
|
}
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="263" HEIGHT="45" BORDER="0"
|
|
SRC="img889.png"
|
|
ALT="\begin{displaymath}
|
|
H(Z) = {
|
|
{
|
|
(1 - {Q_1}{Z^{-1}}) \cdots (1 - {Q_j}{Z^{-1}})
|
|
} \over {
|
|
(1 - {P_1}{Z^{-1}}) \cdots (1 - {P_k}{Z^{-1}})
|
|
}
|
|
}
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
whose frequency response (the gain at a frequency <IMG
|
|
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img27.png"
|
|
ALT="$\omega $">) is given by:
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
| H(\cos(\omega) + i \sin(\omega)) |
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="146" HEIGHT="28" BORDER="0"
|
|
SRC="img938.png"
|
|
ALT="\begin{displaymath}
|
|
\vert H(\cos(\omega) + i \sin(\omega)) \vert
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
|
|
<P>
|
|
Now suppose we can find a rational function, <IMG
|
|
WIDTH="40" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img939.png"
|
|
ALT="$R(Z)$">, which distorts the
|
|
unit circle in some desirable way. For <IMG
|
|
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img36.png"
|
|
ALT="$R$"> to be a rational function means
|
|
that it can be written as a quotient of two polynomials (for example, the
|
|
transfer function <IMG
|
|
WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img25.png"
|
|
ALT="$H$"> is a rational function). That <IMG
|
|
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img36.png"
|
|
ALT="$R$"> sends points on the
|
|
unit circle to other points on the unit circle is just the condition that
|
|
<IMG
|
|
WIDTH="78" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img940.png"
|
|
ALT="$\vert R(Z)\vert = 1$"> whenever <IMG
|
|
WIDTH="44" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img941.png"
|
|
ALT="$Z=1$">. It can easily be checked that any function of
|
|
the form
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
R(Z) = U \cdot
|
|
{{
|
|
{A_n}{Z^n} + {A_{n-1}}{Z^{n-1}} + \cdots + {A_0}
|
|
} \over {
|
|
\overline{A_0}{Z^n} + \overline{A_1}{Z^{n-1}} + \cdots + \overline{A_n}
|
|
}}
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="295" HEIGHT="45" BORDER="0"
|
|
SRC="img942.png"
|
|
ALT="\begin{displaymath}
|
|
R(Z) = U \cdot
|
|
{{
|
|
{A_n}{Z^n} + {A_{n-1}}{Z^{n-1}} + \cdot...
|
|
...}{Z^n} + \overline{A_1}{Z^{n-1}} + \cdots + \overline{A_n}
|
|
}}
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
(where <IMG
|
|
WIDTH="54" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img943.png"
|
|
ALT="$\vert U\vert=1$">) has this property. The same reasoning as in Section
|
|
<A HREF="node134.html#sect8.secondform">8.2.2</A> confirms that <IMG
|
|
WIDTH="78" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img940.png"
|
|
ALT="$\vert R(Z)\vert = 1$"> whenever <IMG
|
|
WIDTH="44" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img941.png"
|
|
ALT="$Z=1$">.
|
|
|
|
<P>
|
|
Once we have a suitable rational function <IMG
|
|
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img36.png"
|
|
ALT="$R$">, we can simply compose it with the
|
|
original transfer function <IMG
|
|
WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img25.png"
|
|
ALT="$H$"> to fabricate a new rational function,
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
J(Z) = H(R(Z))
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="117" HEIGHT="28" BORDER="0"
|
|
SRC="img944.png"
|
|
ALT="\begin{displaymath}
|
|
J(Z) = H(R(Z))
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
The gain of the new filter <IMG
|
|
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img945.png"
|
|
ALT="$J$"> at the frequency <IMG
|
|
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img27.png"
|
|
ALT="$\omega $"> is then equal to
|
|
that of <IMG
|
|
WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img25.png"
|
|
ALT="$H$"> at a different frequency <IMG
|
|
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img77.png"
|
|
ALT="$\phi$">, chosen so that:
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
\cos(\phi) + i \sin(\phi) = R(\cos(\omega) + i \sin(\omega))
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="270" HEIGHT="28" BORDER="0"
|
|
SRC="img946.png"
|
|
ALT="\begin{displaymath}
|
|
\cos(\phi) + i \sin(\phi) = R(\cos(\omega) + i \sin(\omega))
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
The function <IMG
|
|
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img36.png"
|
|
ALT="$R$"> moves points around on the unit
|
|
circle; <IMG
|
|
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img945.png"
|
|
ALT="$J$"> at any point equals <IMG
|
|
WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img25.png"
|
|
ALT="$H$"> on the point <IMG
|
|
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img36.png"
|
|
ALT="$R$"> moves it to.
|
|
|
|
<P>
|
|
For example, suppose we start with a one-zero, one-pole low-pass filter:
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
H(Z) =
|
|
{{
|
|
1 + {Z^{-1}}
|
|
} \over {
|
|
1 - g{Z^{-1}}
|
|
}}
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="127" HEIGHT="44" BORDER="0"
|
|
SRC="img947.png"
|
|
ALT="\begin{displaymath}
|
|
H(Z) =
|
|
{{
|
|
1 + {Z^{-1}}
|
|
} \over {
|
|
1 - g{Z^{-1}}
|
|
}}
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
and apply the function
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
R(Z) = -{Z^2} = -
|
|
{{
|
|
1 \cdot {Z^2} + 0 \cdot Z + 0
|
|
} \over {
|
|
0 \cdot {Z^2} + 0 \cdot Z + 1
|
|
}}
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="242" HEIGHT="42" BORDER="0"
|
|
SRC="img948.png"
|
|
ALT="\begin{displaymath}
|
|
R(Z) = -{Z^2} = -
|
|
{{
|
|
1 \cdot {Z^2} + 0 \cdot Z + 0
|
|
} \over {
|
|
0 \cdot {Z^2} + 0 \cdot Z + 1
|
|
}}
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
Geometrically, this choice of <IMG
|
|
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img36.png"
|
|
ALT="$R$"> stretches the unit circle uniformly to twice
|
|
its circumference and wraps it around itself twice. The points <IMG
|
|
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img262.png"
|
|
ALT="$1$"> and
|
|
<IMG
|
|
WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img401.png"
|
|
ALT="$-1$"> are both sent to the point <IMG
|
|
WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img401.png"
|
|
ALT="$-1$">, and the points <IMG
|
|
WIDTH="9" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img646.png"
|
|
ALT="$i$"> and <IMG
|
|
WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img949.png"
|
|
ALT="$-i$"> are sent
|
|
to the point <IMG
|
|
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img262.png"
|
|
ALT="$1$">. The resulting transfer
|
|
function is
|
|
<BR><P></P>
|
|
<DIV ALIGN="CENTER">
|
|
<!-- MATH
|
|
\begin{displaymath}
|
|
J(Z) =
|
|
{{
|
|
1 - {Z^{-2}}
|
|
} \over {
|
|
1 + g{Z^{-2}}
|
|
}}
|
|
=
|
|
{{
|
|
(1 - {Z^{-1}})(1 + {Z^{-1}})
|
|
} \over {
|
|
(1 - i\sqrt{g} {Z^{-1}})(1 + i\sqrt{g} {Z^{-1}})
|
|
}}
|
|
\end{displaymath}
|
|
-->
|
|
|
|
<IMG
|
|
WIDTH="339" HEIGHT="46" BORDER="0"
|
|
SRC="img950.png"
|
|
ALT="\begin{displaymath}
|
|
J(Z) =
|
|
{{
|
|
1 - {Z^{-2}}
|
|
} \over {
|
|
1 + g{Z^{-2}}
|
|
}}
|
|
=
|
|
...
|
|
... \over {
|
|
(1 - i\sqrt{g} {Z^{-1}})(1 + i\sqrt{g} {Z^{-1}})
|
|
}}
|
|
\end{displaymath}">
|
|
</DIV>
|
|
<BR CLEAR="ALL">
|
|
<P></P>
|
|
The pole-zero plots of <IMG
|
|
WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img25.png"
|
|
ALT="$H$"> and <IMG
|
|
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img945.png"
|
|
ALT="$J$"> are shown in Figure <A HREF="#fig08.19">8.19</A>. From
|
|
a low-pass filter we ended up with a band-pass filter. The points <IMG
|
|
WIDTH="9" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img646.png"
|
|
ALT="$i$"> and <IMG
|
|
WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img949.png"
|
|
ALT="$-i$">
|
|
which <IMG
|
|
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img36.png"
|
|
ALT="$R$"> sends to <IMG
|
|
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img262.png"
|
|
ALT="$1$"> (where the original filter's gain is highest) become
|
|
points of highest gain for the new filter.
|
|
|
|
<P>
|
|
|
|
<DIV ALIGN="CENTER"><A ID="fig08.19"></A><A ID="10765"></A>
|
|
<TABLE>
|
|
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 8.19:</STRONG>
|
|
One-pole, one-zero low-pass filter: (a) pole-zero plot; (b)
|
|
plot for the resulting filter after the transformation <IMG
|
|
WIDTH="92" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img51.png"
|
|
ALT="$R(Z) = -{Z^2}$">. The
|
|
result is a band-pass filter with center frequency <IMG
|
|
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
|
SRC="img5.png"
|
|
ALT="$\pi /2$">.
|
|
</CAPTION>
|
|
<TR><TD><IMG
|
|
WIDTH="467" HEIGHT="247" BORDER="0"
|
|
SRC="img951.png"
|
|
ALT="\begin{figure}\psfig{file=figs/fig08.19.ps}\end{figure}"></TD></TR>
|
|
</TABLE>
|
|
</DIV>
|
|
|
|
<P>
|
|
<HR>
|
|
<!--Navigation Panel-->
|
|
<A ID="tex2html2758"
|
|
HREF="node147.html">
|
|
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
|
SRC="next.png"></A>
|
|
<A ID="tex2html2752"
|
|
HREF="node139.html">
|
|
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
|
SRC="up.png"></A>
|
|
<A ID="tex2html2746"
|
|
HREF="node145.html">
|
|
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
|
SRC="prev.png"></A>
|
|
<A ID="tex2html2754"
|
|
HREF="node4.html">
|
|
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
|
SRC="contents.png"></A>
|
|
<A ID="tex2html2756"
|
|
HREF="node201.html">
|
|
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
|
|
SRC="index.png"></A>
|
|
<BR>
|
|
<B> Next:</B> <A ID="tex2html2759"
|
|
HREF="node147.html">Butterworth band-pass filter</A>
|
|
<B> Up:</B> <A ID="tex2html2753"
|
|
HREF="node139.html">Designing filters</A>
|
|
<B> Previous:</B> <A ID="tex2html2747"
|
|
HREF="node145.html">Butterworth filters</A>
|
|
<B> <A ID="tex2html2755"
|
|
HREF="node4.html">Contents</A></B>
|
|
<B> <A ID="tex2html2757"
|
|
HREF="node201.html">Index</A></B>
|
|
<!--End of Navigation Panel-->
|
|
<ADDRESS>
|
|
Miller Puckette
|
|
2006-12-30
|
|
</ADDRESS>
|
|
</BODY>
|
|
</HTML>
|