{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"nbsphinx": "hidden"
},
"source": [
"# Realization of Recursive Filters\n",
"\n",
"*This jupyter notebook is part of a [collection of notebooks](../index.ipynb) on various topics of Digital Signal Processing. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cascaded Structures\n",
"\n",
"The realization of recursive filters with a high order may be subject to numerical issues. For instance, when the coefficients span a wide amplitude range, their quantization may require a small quantization step or may impose a large relative error for small coefficients. The basic concept of cascaded structures is to decompose a high order filter into a cascade of lower order filters, typically first and second order recursive filters."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Decomposition into Second-Order Sections\n",
"\n",
"The rational transfer function $H(z)$ of a linear time-invariant (LTI) recursive system can be [expressed by its zeros and poles](introduction.ipynb#Transfer-Function) as\n",
"\n",
"\\begin{equation}\n",
"H(z) = \\frac{b_M}{a_N} \\cdot \\frac{\\prod_{\\mu=1}^{P} (z - z_{0\\mu})^{m_\\mu}}{\\prod_{\\nu=1}^{Q} (z - z_{\\infty\\nu})^{n_\\nu}}\n",
"\\end{equation}\n",
"\n",
"where $z_{0\\mu}$ and $z_{\\infty\\nu}$ denote the $\\mu$-th zero and $\\nu$-th pole of degree $m_\\mu$ and $n_\\nu$ of $H(z)$, respectively. The total number of zeros and poles is denoted by $P$ and $Q$.\n",
"\n",
"The poles and zeros of a real-valued filter $h[k] \\in \\mathbb{R}$ are either single real valued or conjugate complex pairs. This motivates to split the transfer function into\n",
"\n",
"* first order filters constructed from a single pole and zero\n",
"* second order filters constructed from a pair of conjugated complex poles and zeros\n",
"\n",
"Decomposing the transfer function into these two types by grouping the poles and zeros into single poles/zeros and conjugate complex pairs of poles/zeros results in\n",
"\n",
"\\begin{equation}\n",
"H(z) = K \\cdot \\prod_{\\eta=1}^{S_1} \\frac{(z - z_{0\\eta})}{(z - z_{\\infty\\eta})} \n",
"\\cdot \\prod_{\\eta=1}^{S_2} \\frac{(z - z_{0\\eta}) (z - z_{0\\eta}^*)} {(z - z_{\\infty\\eta})(z - z_{\\infty\\eta}^*)}\n",
"\\end{equation}\n",
"\n",
"where $K$ denotes a constant and $S_1 + 2 S_2 = N$ with $N$ denoting the order of the system. The cascade of two systems results in a multiplication of their transfer functions. Above decomposition represents a cascade of first- and second-order recursive systems. The former can be treated as a special case of second-order recursive systems. The decomposition is therefore known as decomposition into second-order sections (SOSs) or [biquad filters](https://en.wikipedia.org/wiki/Digital_biquad_filter). Using a cascade of SOSs the transfer function of the recursive system can be rewritten as\n",
"\n",
"\\begin{equation}\n",
"H(z) = \\prod_{\\mu=1}^{S} \\frac{b_{0, \\mu} + b_{1, \\mu} \\, z^{-1} + b_{2, \\mu} \\, z^{-2}}{1 + a_{1, \\mu} \\, z^{-1} + a_{2, \\mu} \\, z^{-2}}\n",
"\\end{equation}\n",
"\n",
"where $S = \\lceil \\frac{N}{2} \\rceil$ denotes the total number of SOSs. These results state that any real valued system of order $N > 2$ can be decomposed into SOSs. This has a number of benefits\n",
"\n",
"* quantization effects can be reduced by sensible grouping of poles/zeros, e.g. such that the spanned amplitude range of the filter coefficients is limited\n",
"* A SOS may be extended by a gain factor to further reduce quantization effects by normalization of the coefficients\n",
"* efficient and numerically stable SOSs serve as generic building blocks for higher-order recursive filters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example - Cascaded second-order section realization of a lowpass\n",
"\n",
"The following example illustrates the decomposition of a higher-order recursive Butterworth lowpass filter into a cascade of second-order sections."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficients of the recursive part \n",
"\n",
"['1.00', '-5.39', '13.38', '-19.96', '19.62', '-13.14', '5.97', '-1.78', '0.31', '-0.02']\n",
"\n",
"\n",
"Coefficients of the recursive part of the individual SOS \n",
"\n",
"Section \t a1 \t\t a2\n",
"0 \t\t -0.50953 \t 0.00000\n",
"1 \t\t -1.04232 \t 0.28838\n",
"2 \t\t -1.11568 \t 0.37905\n",
"3 \t\t -1.25052 \t 0.54572\n",
"4 \t\t -1.46818 \t 0.81477\n"
]
},
{
"data": {
"application/pdf": "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+tP1jVqpX7+sP51cXIwbb/cv46QgVwplbmRzdHJlYW0KZW5kb2JqCjExIDAgb2JqCjEzNjYKZW5kb2JqCjE4IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggODEgPj4Kc3RyZWFtCnicNYzBDcAwCAP/TMEClQLBoQNVfSX7f2uh8sA6Webg0KGXMxCTl/qYmK3CI11ugafGAskMmk4INIRRsKU8HEy9q6Y8sl6GN/3qLe8Hsn8XtAplbmRzdHJlYW0KZW5kb2JqCjE2IDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2Fucy1PYmxpcXVlIC9DaGFyUHJvY3MgMTcgMCBSCi9FbmNvZGluZyA8PCAvRGlmZmVyZW5jZXMgWyAxMjIgL3ogXSAvVHlwZSAvRW5jb2RpbmcgPj4gL0ZpcnN0Q2hhciAwCi9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDE1IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTQgMCBSID4+CmVuZG9iagoxNSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTQgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTcgMCBvYmoK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IDk3IC9hIDEwMCAvZCAvZSAxMDggL2wgL20gL24gL28gMTE0IC9yIC9zIDExOCAvdiAxMjMgL2JyYWNlbGVmdAoxMjUgL2JyYWNlcmlnaHQgXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDIwIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDE5IDAgUiA+PgplbmRvYmoKMjAgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxOSAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMiAwIG9iago8PCAvSSAyMyAwIFIgL08gMjQgMCBSIC9QIDI1IDAgUiAvUiAyNiAwIFIgL1ogMjcgMCBSIC9hIDI4IDAgUgovYnJhY2VsZWZ0IDI5IDAgUiAvYnJhY2VyaWdodCAzMCAwIFIgL2QgMzEgMCBSIC9lIDMyIDAgUiAvZml2ZSAzMyAwIFIKL2h5cGhlbiAzNCAwIFIgL2wgMzUgMCBSIC9tIDM2IDAgUiAvbiAzOCAwIFIgL28gMzkgMCBSIC9vbmUgNDAgMCBSCi9wZXJpb2QgNDEgMCBSIC9yIDQyIDAgUiAvcyA0MyAwIFIgL3NwYWNlIDQ0IDAgUiAvdHdvIDQ1IDAgUiAvdiA0NiAwIFIKL3plcm8gNDcgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMSAwIFIgL0YyIDE2IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDAuOSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAwLjkgPj4KL0EzIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0E0IDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDAgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0YxLURlamFWdVNhbnMtbWludXMgMzcgMCBSIC9NMCAxMiAwIFIgL00xIDEzIDAgUiA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL0JCb3ggWyAtMTAgLTEwIDEwIDEwIF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMzIgL1N1YnR5cGUgL0Zvcm0KL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicbZBLDsMgDET3PsVcYBDEmIQrdNsjdFNV6v23Jao0IgobBPbj+VPwsYyHjYOBr5XkW8ulna8tRd+P3sGa6u6lHfAUHuEV1O1lylI/ApQpkAcUUEC8cMkmq5LCL8YYyFyDd54rLe/VOfXGf7ecB+BiQC43wcXKeHXzbPxt9rQfWetH4AplbmRzdHJlYW0KZW5kb2JqCjEzIDAgb2JqCjw8IC9CQm94IFsgLTEwIC0xMCAxMCAxMCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzYgL1N1YnR5cGUgL0Zvcm0KL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicM1TI4jJQ8OLSNVUAolwuUwVThRwQD8LRBfG4grkAjoMHBwplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjQ4IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTAxMjUxNDQyMzMrMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjIpID4+CmVuZG9iagp4cmVmCjAgNDkKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTI1MDggMDAwMDAgbiAKMDAwMDAxMTc1MCAwMDAwMCBuIAowMDAwMDExNzkzIDAwMDAwIG4gCjAwMDAwMTE5NzQgMDAwMDAgbiAKMDAwMDAxMTk5NSAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5OSAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDE4NDAgMDAwMDAgbiAKMDAwMDAxMjA4NyAwMDAwMCBuIAowMDAwMDEyMzQ2IDAwMDAwIG4gCjAwMDAwMDI1MzggMDAwMDAgbiAKMDAwMDAwMjMzMCAwMDAwMCBuIAowMDAwMDAyMDE0IDAwMDAwIG4gCjAwMDAwMDM1OTEgMDAwMDAgbiAKMDAwMDAwMTg2MSAwMDAwMCBuIAowMDAwMDEwMzk0IDAwMDAwIG4gCjAwMDAwMTAxOTQgMDAwMDAgbiAKMDAwMDAwOTczNyAwMDAwMCBuIAowMDAwMDExNDQ3IDAwMDAwIG4gCjAwMDAwMDM2MjMgMDAwMDAgbiAKMDAwMDAwMzc0NCAwMDAwMCBuIAowMDAwMDA0MDI5IDAwMDAwIG4gCjAwMDAwMDQyNjcgMDAwMDAgbiAKMDAwMDAwNDU2NyAwMDAwMCBuIAowMDAwMDA0NzE2IDAwMDAwIG4gCjAwMDAwMDUwOTMgMDAwMDAgbiAKMDAwMDAwNTQ0NSAwMDAwMCBuIAowMDAwMDA1Nzk0IDAwMDAwIG4gCjAwMDAwMDYwOTQgMDAwMDAgbiAKMDAwMDAwNjQxMiAwMDAwMCBuIAowMDAwMDA2NzMyIDAwMDAwIG4gCjAwMDAwMDY4NTYgMDAwMDAgbiAKMDAwMDAwNjk3MyAwMDAwMCBuIAowMDAwMDA3MzAxIDAwMDAwIG4gCjAwMDAwMDc0NzEgMDAwMDAgbiAKMDAwMDAwNzcwNSAwMDAwMCBuIAowMDAwMDA3OTkyIDAwMDAwIG4gCjAwMDAwMDgxNDQgMDAwMDAgbiAKMDAwMDAwODI2NSAwMDAwMCBuIAowMDAwMDA4NDk1IDAwMDAwIG4gCjAwMDAwMDg5MDAgMDAwMDAgbiAKMDAwMDAwODk4OSAwMDAwMCBuIAowMDAwMDA5MzEwIDAwMDAwIG4gCjAwMDAwMDk0NTQgMDAwMDAgbiAKMDAwMDAxMjU2OCAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDQ4IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA0OSA+PgpzdGFydHhyZWYKMTI3MjUKJSVFT0YK\n",
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"