{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Characterization of Discrete Systems in the Spectral Domain\n", "\n", "*This Jupyter notebook is part of a [collection of notebooks](../index.ipynb) in the bachelors module Signals and Systems, Communications Engineering, Universität Rostock. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Combination of Systems\n", "\n", "The representation of systems with a complex structure as combination of simpler systems is often convenient for their analysis or synthesis. This section discusses three of the most common combinations, the series and parallel connection of systems as well as feedback loops. The latter is very important in control engineering." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Concatenation\n", "\n", "When two linear time-invariant (LTI) systems are combined in series by connecting the output of the first system to the input of a second system this is termed as *concatenation* of two systems. Denoting the impulse responses of the two systems by $h_1[k]$ and $h_2[k]$, the output signal $y[k]$ of the second system is given as\n", "\n", "\\begin{equation}\n", "y[k] = x[k] * h_1[k] * h_2[k]\n", "\\end{equation}\n", "\n", "where $x[k]$ denotes the input signal of the first system. Applying a $z$-transform to the left- and right-hand side, and repeated application of the convolution theorem yields\n", "\n", "\\begin{equation}\n", "Y(z) = \\underbrace{H_1(z) \\cdot H_2(z)}_{H(z)} \\cdot X(z)\n", "\\end{equation}\n", "\n", "It can be concluded that the concatenation of two systems can be regarded as one LTI system with the transfer function $H(z) = H_1(z) \\cdot H_2(z)$. Hence, the following structures are equivalent\n", "\n", "![Concatenation of two systems](concatenation.png)\n", "\n", "The extension to a concatenation of $N$ systems is straightforward. The overall transfer function is given by multiplication of all the individual transfer functions $H_n(z)$\n", "\n", "\\begin{equation}\n", "H(z) = \\prod_{n=1}^{N} H_n(z)\n", "\\end{equation}\n", "\n", "Applications of concatenated systems include for instance the modeling of electroacoustic systems, wireless transmission systems and cascaded filters." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example - Concatenation of second-order sections**\n", "\n", "Concatenation of LTI systems can be used to construct higher-order filters from lower-order prototypes. Such filters are known as *cascaded filters*. In digital signal processing, typically second-order systems are used as building blocks for higher-order systems. These blocks are termed second-order sections or [biquad filters](https://en.wikipedia.org/wiki/Digital_biquad_filter).\n", "\n", "This is illustrated at the before introduced [second-order recursive LTI system](difference_equation.ipynb#Second-Order-System) with transfer function\n", "\n", "\\begin{equation}\n", "H_0(z) = \\frac{\\frac{1}{2}}{1 - z^{-1} + \\frac{1}{2} z^{-2}}\n", "\\end{equation}\n", "\n", "Note, the transfer function has been normalized for unit gain at $z = e^{j \\Omega} \\vert_{\\Omega = 0}$.\n", "Concatenation of $N$ second-order filters leads to a filter with order $2 N$. Its transfer function reads\n", "\n", "\\begin{equation}\n", "H_N(z) = \\left(\\frac{\\frac{1}{2}}{1 - z^{-1} + \\frac{1}{2} z^{-2}} \\right)^N\n", "\\end{equation}\n", "\n", "The resulting transfer function is illustrated by its logarithmic magnitude response for a varying number of cascaded filters. First the transfer function $H_N(s)$ is defined" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left(\\frac{1}{2 \\left(1 - \\frac{1}{z} + \\frac{1}{2 z^{2}}\\right)}\\right)^{N}$" ], "text/plain": [ " N\n", "⎛ 1 ⎞ \n", "⎜────────────────⎟ \n", "⎜ ⎛ 1 1 ⎞⎟ \n", "⎜2⋅⎜1 - ─ + ────⎟⎟ \n", "⎜ ⎜ z 2⎟⎟ \n", "⎝ ⎝ 2⋅z ⎠⎠ " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "%matplotlib inline\n", "\n", "z = sym.symbols('z', complex=True)\n", "W = sym.symbols('Omega', real=True)\n", "N = sym.symbols('N', integer=True)\n", "\n", "H0 = sym.Rational(1, 2) / (1 - z**(-1) + sym.Rational(1, 2)*z**(-2))\n", "HN = H0**N\n", "HN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The magnitude $|H_N(e^{j \\Omega})|$ of the transfer function is shown for $N = \\{1, 2, 3\\}$ (red, green, blue line)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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IDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNTAgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyOCA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTcgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxNyA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDcz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MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMyAwIG9iago8PCAvQiAyNCAwIFIgL2JhciAyNiAwIFIgL2QgMjcgMCBSIC9laWdodCAyOCAwIFIgL2ZvdXIgMjkgMCBSIC9pIDMwIDAgUgovbiAzMiAwIFIgL29uZSAzMyAwIFIgL3BhcmVubGVmdCAzNCAwIFIgL3BhcmVucmlnaHQgMzUgMCBSIC9zaXggMzYgMCBSCi9zcGFjZSAzNyAwIFIgL3RocmVlIDM4IDAgUiAvdHdvIDM5IDAgUiAvemVybyA0MCAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDIyIDAgUiAvRjIgMTQgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8PCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9EZWphVnVTYW5zLU9tZWdhIDI1IDAgUiAvRGVqYVZ1U2Fucy1taW51cyAzMSAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjQxIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA3MTExODA4MDcrMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgNDIKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTkzMzkgMDAwMDAgbiAKMDAwMDAxOTA4NCAwMDAwMCBuIAowMDAwMDE5MTI3IDAwMDAwIG4gCjAwMDAwMTkyMjYgMDAwMDAgbiAKMDAwMDAxOTI0NyAwMDAwMCBuIAowMDAwMDE5MjY4IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5MiAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMTAwNjIgMDAwMDAgbiAKMDAwMDAxMTY5OCAwMDAwMCBuIAowMDAwMDExNDkwIDAwMDAwIG4gCjAwMDAwMTExNTQgMDAwMDAgbiAKMDAwMDAxMjc1MSAwMDAwMCBuIAowMDAwMDEwMDgzIDAwMDAwIG4gCjAwMDAwMTAyNDMgMDAwMDAgbiAKMDAwMDAxMDY0MyAwMDAwMCBuIAowMDAwMDEwODY4IDAwMDAwIG4gCjAwMDAwMTc4MTYgMDAwMDAgbiAKMDAwMDAxNzYxNiAwMDAwMCBuIAowMDAwMDE3MjAxIDAwMDAwIG4gCjAwMDAwMTg4NjkgMDAwMDAgbiAKMDAwMDAxMjgxMyAwMDAwMCBuIAowMDAwMDEzMTQ1IDAwMDAwIG4gCjAwMDAwMTM1MTYgMDAwMDAgbiAKMDAwMDAxMzY0MiAwMDAwMCBuIAowMDAwMDEzOTQyIDAwMDAwIG4gCjAwMDAwMTQ0MDcgMDAwMDAgbiAKMDAwMDAxNDU2OSAwMDAwMCBuIAowMDAwMDE0NzA5IDAwMDAwIG4gCjAwMDAwMTQ4NzkgMDAwMDAgbiAKMDAwMDAxNTExMyAwMDAwMCBuIAowMDAwMDE1MjY1IDAwMDAwIG4gCjAwMDAwMTU0ODUgMDAwMDAgbiAKMDAwMDAxNTcwNyAwMDAwMCBuIAowMDAwMDE2MDk3IDAwMDAwIG4gCjAwMDAwMTYxODYgMDAwMDAgbiAKMDAwMDAxNjU5NyAwMDAwMCBuIAowMDAwMDE2OTE4IDAwMDAwIG4gCjAwMDAwMTkzOTkgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyA0MSAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgNDIgPj4Kc3RhcnR4cmVmCjE5NTUzCiUlRU9GCg==\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "HNa = 20*sym.log(sym.Abs(HN.subs(z, sym.exp(sym.I*W))))\n", "\n", "p1 = sym.plot(HNa.subs(N, 1), (W, -sym.pi, sym.pi), xlabel='$\\Omega$', ylabel='$| H_n(e^{j \\Omega}) |$ in dB', line_color='r', show=False);\n", "p2 = sym.plot(HNa.subs(N, 2), (W, -sym.pi, sym.pi), xlabel='$\\Omega$', ylabel='$| H_n(e^{j \\Omega}) |$ in dB', line_color='g', show=False);\n", "p3 = sym.plot(HNa.subs(N, 3), (W, -sym.pi, sym.pi), xlabel='$\\Omega$', ylabel='$| H_n(e^{j \\Omega}) |$ in dB', line_color='b', show=False);\n", "p1.extend(p2)\n", "p1.extend(p3)\n", "p1.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Compute the magnitude $|H_N(z)|$ and phase $\\varphi(z)$ of the concatenated system.\n", "* Using the result from the first exercise, how will the phase of the cascaded filter develop for an increasing number $N$ of cascaded filters?" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Parallel Connection\n", "\n", "A structure where two LTI systems share the same input signal and their output signals are superimposed is called *parallel connection*. The overall output signal $y[k]$ is given as the superposition of the output signals of the individual systems\n", "\n", "\\begin{equation}\n", "y[k] = h_1[k] * x[k] + h_2[k] * x[k]\n", "\\end{equation}\n", "\n", "Applying a $z$-transform to the left- and right-hand side, exploiting the superposition principle, and convolution theorem yields\n", "\n", "\\begin{equation}\n", "Y(z) = \\underbrace{\\left( H_1(z) + H_2(z) \\right)}_{H(z)} \\cdot X(z)\n", "\\end{equation}\n", "\n", "The overall transfer function $H(z)$ of a parallel connection of two systems is given as the superposition of the transfer functions of the individual systems. Hence, the following structures are equivalent\n", "\n", "![Parallel connection of two systems](parallel.png)\n", "\n", "The extension to a parallel connection of $N$ systems is straightforward. The overall transfer function is given by superposition of all individual transfer functions $H_n(z)$\n", "\n", "\\begin{equation}\n", "H(z) = \\sum_{n=1}^{N} H_n(z)\n", "\\end{equation}\n", "\n", "A prominent application of a parallel connection of systems are [filter banks](https://en.wikipedia.org/wiki/Filter_bank) as used in signal analysis and many lossy coding schemes." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Feedback\n", "\n", "The connection of two LTI systems, where the input of the second system is connected to the output of the first and the output of the second system is superimposed to the input of the first is called *feedback loop*. This structure is depicted in the following illustration (upper block diagram)\n", "\n", "![Two systems combined in a feedback loop](feedback.png)\n", "\n", "The output signal $y[k]$ is given as\n", "\n", "\\begin{equation}\n", "y[k] = x[k] * h_1[k] + y[k] * h_2[k] * h_1[k]\n", "\\end{equation}\n", "\n", "Applying a $z$-transform to the left- and right-hand side, exploiting the superposition principle and the convolution theorem, and rearrangement of terms yields\n", "\n", "\\begin{equation}\n", "Y(z) = \\frac{H_1(z)}{1 - H_1(z) \\cdot H_2(z)} \\cdot X(z)\n", "\\end{equation}\n", "\n", "The overall transfer function $H(z)$ of the feedback loop is then given as \n", "\n", "\\begin{equation}\n", "H(z) = \\frac{H_1(z)}{1 - H_1(z) \\cdot H_2(z)}\n", "\\end{equation}\n", "\n", "This equivalence is depicted by the lower block diagram of above structure. Applications of feedback loops include [digital control systems](https://en.wikipedia.org/wiki/Control_system)." ] }, { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "**Copyright**\n", "\n", "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources). Feel free to use the notebook for your own purposes. The text is licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/), the code of the IPython examples under the [MIT license](https://opensource.org/licenses/MIT). Please attribute the work as follows: *Sascha Spors, Continuous- and Discrete-Time Signals and Systems - Theory and Computational Examples*." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 1 }