{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Characterization of 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 complex systems 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." ] }, { "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(t)$ and $h_2(t)$, the output signal $y(t)$ of the second system is given as\n", "\n", "\\begin{equation}\n", "y(t) = x(t) * h_1(t) * h_2(t)\n", "\\end{equation}\n", "\n", "where $x(t)$ denotes the input signal of the first system. Laplace transformation of the respective signals and impulse responses, and repeated application of the convolution theorem yields\n", "\n", "\\begin{equation}\n", "Y(s) = \\underbrace{H_1(s) \\cdot H_2(s)}_{H(s)} \\cdot X(s)\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(s) = H_1(s) \\cdot H_2(s)$. 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(s)$\n", "\n", "\\begin{equation}\n", "H(s) = \\prod_{n=1}^{N} H_n(s)\n", "\\end{equation}\n", "\n", "Applications of concatenated systems include for instance the modeling of wireless transmission systems and cascaded filters." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\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*. This is illustrated at the [example of the second-order low-pass filter](../laplace_transform/network_analysis.ipynb#Example:-Second-Order-Low-Pass-Filter) introduced before. The transfer function $H_0(s)$ of the low-pass is given as\n", "\n", "\\begin{equation}\n", "H_0(s) = \\frac{1}{LC s^2 + RC s + 1}\n", "\\end{equation}\n", "\n", "where $R$, $L$ and $C$ denote the values of the resistor, capacitor and inductor. 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(s) = \\left( \\frac{1}{LC s^2 + RC s + 1} \\right)^N\n", "\\end{equation}\n", "\n", "The resulting transfer function is illustrated by its [Bode plot](../systems_spectral_domain/transfer_function.ipynb#Bode-Plots) for a varying number of cascaded filters using the normalized values $L = .5$, $R = 1$, $C = .4$. First the transfer function $H_N(s)$ is defined" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMQAAAAeCAYAAABzA7EiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHfklEQVR4Ae2bi3EUORCGb10OwJgMuAyMyQAyOHMRABmYIgIXl4HtCMDOwBCBD2eAM7jDGfj+T6cW0qw0+xjN7swyXSXP6NXqbvVL2vHs8fHxtwkmCeyyBGaz2Uvx916F5zvp/IXx6/s+qn6gcj6bDMJEMz13WQJS/FPx90LlpXT+Scyr77tW+/1e3DG9TxLYYQn8Lt7eqBzIAN42+HyKMdA2GURDMlN1ZyXwIKV/EHekS6RPWdjPto6oUdZO7vfBk/zMP9945kfEyURqXxKQjhwJ963HjzH8UNsf0pHrRt98hGCgCoePscBHMfbelxMR/a/Kt7EQ/6vTKV3jQNs3oM9fWMQ7SqKErRv66E8O1RiD2l5p0js6xwCimWsyaHYMq06U+K7yXG13Y+DhV6ZR+4X3xqm9apODjWsb4/u4RXLnARuruedqCzod6QhrojshhQopkwa51EOdzw3RSJ4w+vdIaJ3IbEhA+nYn3btSOdX7X43uUGWcKq1GEwbPv3B2CCBc91rvWg1ECedIrTNECA24UeOVBoc7Whs0pqf4gEnyQ24VJhiJBLRvFtUT5e1KvvASgZ5JHzCAAGq3TOIk7nMRwnceq2MpC9R4oglXV4yPGbgRjguPj9AVQhGUqN3ugknNAKyenL+KIQo/zIN7EFFuXTmJfpMV8iXHBfBkyBrZG5AKJBttHUN6+n25Ek2ksbG+xGSeq3KpwjmwCmhd5xyF7EHv91o7pNB6tyiRRAgOGSwOMeRxrt721DiU+od/HsRj1YYyQgTW/jbui9/Vx6Lf47au78KHxRPlEpq64l13vujoLCfWFvAHR5PsjdowfvpwJknfEOqiC8PFCNAtLjmgtbg39C0aswm+zCAgll/wioL1BKNwKHsbYwgAfISpOXxqt41cygBzOJptrKUSFMOvkV2/ObdZ11w8ctGYm+Obdc1lYzvLCbwCkxX5dU6WrFOUdW7OKm3C3UkWtpbw4Bygs6g3jBVgOGvL3tbr8tzz4QxiFh1Mv2rMsUpb2AMPXuFBRCUnfTo8WArAZnYG0Y8xYIRn8OL54aBNKrYOoNCUdaGWnFjfZJWG9Z+UHf587eWtqyxWJQodrJYyrbo44/dVEDr51QMNOZCSkQbhrTiAFMf5uSjiZ/+ee/xJo/CUNjk3p60Nr8LGJb89CH+4ZmubXLOvspwgzWQVcl+j1xs+e/JFvJacjw0fy5Ps4/U2icUg+OCpqOQSPB6YkIfRLHOAY3Pw2CVgE+c2uDSYdq9o//gxT/U8Ey2OZj2TD7X8mI0/epATPDiFbzLj1yIS80Fa1qO2yayJb0B19IJvjUitijrZJ70YBN4Vr14C87RtSh7mekayCi9GiUbA0tFBc0it+CXa4fQ4iFhGF/iGAEZPZznBTCQru3GimatkHBROh2hdkvNYZCY2EjA9hMcsb8noHioYxKFKW8i1K9KllbiFTrvWXer8IKVAMBz2Y+FwlYt3HBrUlBO8mazCL6+SB87rUsWMgnEJjExmCe2qWFRAJ7cCy0QII67NaALxbJqPEqEtenERQv0rGZdwYkAYAfmyKUqEdvVX4cSTW8SKETh+1W8eP+670/rZFEWDasqJNaEtuZzwcj0RbVzJfFBJfudRPcAqMutBFoGOFV8sQqw4re5wDqPhylJCT6731MdBR81pe66ucXjJo1wfbeBR+dbSz499yXWp6qRHzLNS7bo2R4fWgYfsNWduvLVpTjU5gVPAn7l9URtRItsX0VJFZlpnLVkYHfYUnmWvXYl88FbUIcPZ13NPiy8C583lRSB2EbwQoXF6E8ZrvnnjT6Fx/oUPrZJIpDrnh5mGEhmg5VS4UIqhQRU5wVQkq1xqaXIsetMRyay5h7avljo1+3uvYxAooBGSWxBvA1iO/H+t8VebyLizRnNctVQnmy5pPl4kKAD4VPC6DrTJ1dIlw1n5WUtOkGVpWe76mltBIMhGcjqiYYQyg+wYLO0sGns8uI/3fSG9VSEfzYIUkW8+2CC+SCSnTT7+UxuGwiaFq9AsIm9Qmj8XQdhIzcEg4itUPGFyY+PXuhCOrXmQAm/klJ3lJP5wTETi16V11B4MgTGaYxGD6qhkBsENgHd0bGv7SyqCEPHMT9oI8ZuF4jqi9QSwZPLcktdngy9VmOO8mJ7xbxlJu/CYZ2SjGR9vtqpOWIlB0lgTtC4Gzjmm+Cly23rryMnwaa5FGWviyTdfCc8ah6NAduxbcFJqryoz4esqCy5C0IFj/yQbwSHe5uTr+TqM9UBjNwru828Rwsd63GtnFXujFG15sa5KsGXyqy6/aVloPS54+II3cQBVmVqAbM/3k6tajr9gys53E663FrIHJt2NyULGQCQhwuXOTRsTi0UICPkqy4xz+I0RMS00SUAG4f6/ZpvpErsQ/8cc+d4nERTn+NNOTRLYiARkEFwWzF27b2TxaJHYIAhZRIlB/LdZROP0uuMS8NHhQLq31kVGTfEEgwCpCONWASvNfbZQc90J1yQBJwHpHLdlHKQHcYa1Q7UjTkSRLt2IyOZ1p+uf/kwS6EECON9w3d4D/pVQ/geIXmyQMkX0dwAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle \\left(C L s^{2} + C R s + 1\\right)^{- N}$" ], "text/plain": [ " -N\n", "⎛ 2 ⎞ \n", "⎝C⋅L⋅s + C⋅R⋅s + 1⎠ " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%matplotlib inline\n", "import sympy as sym\n", "sym.init_printing()\n", "\n", "s = sym.symbols('s', complex=True)\n", "w, R, L, C = sym.symbols('omega R L C', real=True)\n", "N = sym.symbols('N', integer=True)\n", "\n", "H0 = 1/(L*C*s**2 + R*C*s + 1)\n", "HN = H0**N\n", "HN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The bode plot for the transfer function $H_N(j \\omega)$ 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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IDEyIDAgUiA+PgplbmRvYmoKMTMgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDk2Ci9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL0l0YWxpY0FuZ2xlIDAgL01heFdpZHRoIDEzNTAgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjEyIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNTAgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyOCA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYg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bnJpZ2h0IDQ4IC96ZXJvIC9vbmUgL3R3byAvdGhyZWUgNTMgL2ZpdmUgMTAzIC9nIDEwOAovbCAxMTEgL28gMTI0IC9iYXIgXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDI0IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDIzIDAgUiA+PgplbmRvYmoKMjQgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoyMyAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyNiAwIG9iago8PCAvYmFyIDI3IDAgUiAvZml2ZSAyOCAwIFIgL2cgMjkgMCBSIC9sIDMwIDAgUiAvbyAzMiAwIFIgL29uZSAzMyAwIFIKL3BhcmVubGVmdCAzNCAwIFIgL3BhcmVucmlnaHQgMzUgMCBSIC90aHJlZSAzNiAwIFIgL3R3byAzNyAwIFIgL3plcm8gMzggMCBSCj4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyNSAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRGVqYVZ1U2Fucy1PYmxpcXVlLW9tZWdhIDIyIDAgUiAvRGVqYVZ1U2Fucy1taW51cyAzMSAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjM5IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA2MDQxNjIzMzArMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgNDAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTM2NjYgMDAwMDAgbiAKMDAwMDAxMzQwMyAwMDAwMCBuIAowMDAwMDEzNDQ2IDAwMDAwIG4gCjAwMDAwMTM1NDUgMDAwMDAgbiAKMDAwMDAxMzU2NiAwMDAwMCBuIAowMDAwMDEzNTg3IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5OSAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDQ5NzcgMDAwMDAgbiAKMDAwMDAwNzQyNiAwMDAwMCBuIAowMDAwMDA3MjE4IDAwMDAwIG4gCjAwMDAwMDY4NzMgMDAwMDAgbiAKMDAwMDAwODQ3OSAwMDAwMCBuIAowMDAwMDA0OTk4IDAwMDAwIG4gCjAwMDAwMDUzNDIgMDAwMDAgbiAKMDAwMDAwNTUwMiAwMDAwMCBuIAowMDAwMDA1OTAwIDAwMDAwIG4gCjAwMDAwMDYwNDcgMDAwMDAgbiAKMDAwMDAwNjI3MiAwMDAwMCBuIAowMDAwMDA2NTU4IDAwMDAwIG4gCjAwMDAwMTIxODUgMDAwMDAgbiAKMDAwMDAxMTk4NSAwMDAwMCBuIAowMDAwMDExNjAxIDAwMDAwIG4gCjAwMDAwMTMyMzggMDAwMDAgbiAKMDAwMDAwODU2MSAwMDAwMCBuIAowMDAwMDA4Njg3IDAwMDAwIG4gCjAwMDAwMDkwMDcgMDAwMDAgbiAKMDAwMDAwOTQxOCAwMDAwMCBuIAowMDAwMDA5NTM1IDAwMDAwIG4gCjAwMDAwMDk3MDUgMDAwMDAgbiAKMDAwMDAwOTk5MiAwMDAwMCBuIAowMDAwMDEwMTQ0IDAwMDAwIG4gCjAwMDAwMTAzNjQgMDAwMDAgbiAKMDAwMDAxMDU4NiAwMDAwMCBuIAowMDAwMDEwOTk3IDAwMDAwIG4gCjAwMDAwMTEzMTggMDAwMDAgbiAKMDAwMDAxMzcyNiAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDM5IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA0MCA+PgpzdGFydHhyZWYKMTM4ODAKJSVFT0YK\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" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from sympy.plotting.plot import MatplotlibBackend\n", "\n", "RLC = {R: 1, L: sym.Rational('.5'), C: sym.Rational('.4')}\n", "HNlog = 20*sym.log(sym.Abs(HN.subs(RLC).subs(s, 2*sym.pi*w)), 10)\n", "\n", "p1 = sym.plot(HNlog.subs(N, 1), (w, 0.1, 100), xlabel='$\\omega$', ylabel='$20 \\log_{10} | H_n(j \\omega) | in dB$', line_color='r', show=False);\n", "p2 = sym.plot(HNlog.subs(N, 2), (w, 0.1, 100), xlabel='$\\omega$', ylabel='$20 \\log_{10} | H_n(j \\omega) | in dB$', line_color='g', show=False);\n", "p3 = sym.plot(HNlog.subs(N, 3), (w, 0.1, 100), xlabel='$\\omega$', ylabel='$20 \\log_{10} | H_n(j \\omega) | in dB$', line_color='b', show=False);\n", "p1.extend(p2)\n", "p1.extend(p3)\n", "\n", "backend = MatplotlibBackend(p1)\n", "backend.process_series()\n", "backend.ax.spines['left'].set_position(('axes', 0))\n", "backend.ax.spines['bottom'].set_position(('axes', 0))\n", "plt.xscale('log')\n", "plt.grid(which='both')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Derive the magnitude $|H(s)|$ and phase $\\varphi(s)$ of a 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 the output signals are superimposed is called *parallel connection*. The overall output signal $y(t)$ is given as the superposition of the output signals of the individual systems\n", "\n", "\\begin{equation}\n", "y(t) = h_1(t) * x(t) + h_2(t) * x(t)\n", "\\end{equation}\n", "\n", "Laplace transformation of the respective signals and impulse responses, and application of the convolution theorem yields\n", "\n", "\\begin{equation}\n", "Y(s) = \\underbrace{\\left( H_1(s) + H_2(s) \\right)}_{H(s)} \\cdot X(s)\n", "\\end{equation}\n", "\n", "The overall transfer function $H(s)$ 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(s)$\n", "\n", "\\begin{equation}\n", "H(s) = \\sum_{n=1}^{N} H_n(s)\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(t)$ is given as\n", "\n", "\\begin{equation}\n", "y(t) = x(t) * h_1(t) + y(t) * h_2(t) * h_1(t)\n", "\\end{equation}\n", "\n", "Laplace transform of the signals and impulse responses, application of the convolution theorem and rearrangement of terms yields\n", "\n", "\\begin{equation}\n", "Y(s) = \\frac{H_1(s)}{1 - H_1(s) \\cdot H_2(s)} \\cdot X(s)\n", "\\end{equation}\n", "\n", "The overall transfer function $H(s)$ of the feedback loop is then given as \n", "\n", "\\begin{equation}\n", "H(s) = \\frac{H_1(s)}{1 - H_1(s) \\cdot H_2(s)}\n", "\\end{equation}\n", "\n", "This equivalence is depicted by the lower block diagram of above structure.\n", "\n", "Applications of feedback loops include [control systems](https://en.wikipedia.org/wiki/Control_system) and the design of amplifiers." ] }, { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "**Copyright**\n", "\n", "The notebooks are provided as [Open Educational Resource](https://de.wikipedia.org/wiki/Open_Educational_Resources). Feel free to use the notebooks for your own educational 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: *Lecture Notes on Signals and Systems* by Sascha Spors." ] } ], "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 }