{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Characterization of Systems in the Time 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": [ "## Convolution\n", "\n", "As shown in the previous Section, the convolution is an important operation in the theory of signals and systems. It also shows up in a wide range of other physical and mathematical problems. The [convolution operation](https://en.wikipedia.org/wiki/Convolution) is therefore of general interest and well known. The properties of the convolution are reviewed, followed by a widely used graphical interpretation of the operation.\n", "\n", "The convolution of two signals $x(t)$ and $h(t)$ is defined as\n", "\n", "\$$\n", "(x * h)(t) = x(t) * h(t) = \\int_{\\tau = -\\infty}^{\\tau=\\infty} x(\\tau) \\cdot h(t - \\tau) \\; d\\tau = \n", "\\int_{\\tau=-\\infty}^{\\tau=\\infty} x(t - \\tau) \\cdot h(\\tau) \\; d\\tau\n", "\$$\n", "\n", "where $*$ is a common short-hand notation of the convolution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Properties\n", "\n", "For the signals $x(t)$, $h(t)$, $g(t) \\in \\mathbb{C}$ the convolution shows the following properties \n", "\n", "1. The Dirac impulse is the [identity element](https://en.wikipedia.org/wiki/Identity_element) of the convolution\n", " \$$\n", " x(t) * \\delta(t) = x(t)\n", " \$$\n", "\n", "2. The convolution is [commutative](https://en.wikipedia.org/wiki/Commutative_property)\n", " \$$\n", " x(t) * h(t) = h(t) * x(t)\n", " \$$\n", "\n", "3. The convolution is [associative](https://en.wikipedia.org/wiki/Associative_property)\n", " \$$\n", " \\left[ x(t) * h(t) \\right] * g(t) = x(t) * \\left[ h(t) * g(t) \\right] \n", " \$$\n", "\n", "5. The convolution is [distributive](https://en.wikipedia.org/wiki/Distributive_property)\n", " \$$\n", " x(t) * \\left[ h(t) + g(t) \\right] = x(t) * h(t) + x(t) * g(t)\n", " \$$\n", "\n", "5. Multiplication with a scalar $a \\in \\mathbb{C}$\n", " \$$\n", " a \\cdot \\left[ x(t) * h(t) \\right] = \\left[ a \\cdot x(t) \\right] * h(t) = x(t) * \\left[ a \\cdot h(t) \\right]\n", " \$$\n", "\n", "6. Derivative of the convolution\n", " \$$\n", " \\frac{d}{dt} \\left[ x(t) * h(t) \\right] = \\frac{d x(t)}{dt} * h(t) = x(t) * \\frac{d h(t)}{dt}\n", " \$$\n", "\n", "The first property is a consequence of the sifting property of the Dirac pulse, the second to fifth property can be proven by considering the convolution integral and the sixth property follows from the properties of the derivative of the Dirac delta function." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Graphical Interpretation\n", "\n", "The convolution is commonly [interpreted in a graphical manner](https://en.wikipedia.org/wiki/Convolution#Visual_explanation). This interpretation provides valuable insights into its calculation and allows to derive a first estimate of the result. The calculation of the convolution integral\n", "\n", "\$$\n", "y(t) = \\int_{\\tau = -\\infty}^{\\tau = \\infty} x(\\tau) \\cdot h(t-\\tau) \\; d\\tau\n", "\$$\n", "\n", "\n", "can be decomposed into four subsequent operations:\n", "\n", "1. substitute $t$ by $\\tau$ in both $x(t)$ and $h(t)$,\n", "\n", "2. time-reverse $h(\\tau)$ (mirroring at vertical axis),\n", "\n", "3. shift $h(-\\tau)$ by $t$ to yield $h(t - \\tau)$, i.e. a shift to **right** for $t>0$ or a shift to **left** for $t<0$,\n", "\n", "4. check for which $t = -\\infty \\dots \\infty$ the mirrored & shifted $h(t - \\tau)$ overlaps with $x(\\tau)$, calculate the specific integral (i.e. the area of the overlap) for all these relevant $t$ to yield $y(t)$\n", "\n", "The graphical interpretation of the convolution is illustrated by means of the following example." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The convolution $y(t) = x(t) * h(t)$ is illustrated using the particular signals\n", "\n", "\\begin{align}\n", "h(t) &= e^{-t} \\\\\n", "x(t) &= \\frac{3}{4} \\cdot \\text{rect} \\left(t - \\frac{1}{2}\\right)\n", "\\end{align}\n", "\n", "Before proceeding, helper functions for the rectangular signal and plotting of the signals are defined" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "t, tau = sym.symbols('t tau', real=True)\n", "\n", "\n", "class rect(sym.Function):\n", "\n", " @classmethod\n", " def eval(cls, arg):\n", " return sym.Heaviside(arg + sym.S.Half) - sym.Heaviside(arg - sym.S.Half)\n", "\n", "\n", "def plot_signals(x_axis, x, h, ylabel, xlabel):\n", " p1 = sym.plot(x, (x_axis, -5, 5), show=False,\n", " line_color='C0', ylabel=ylabel, xlabel=xlabel)\n", " p2 = sym.plot(h, (x_axis, -5, 5), show=False, line_color='C1')\n", " p1.extend(p2)\n", " p1.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets define and plot the signals. In the following, the impulse response $h(t)$ is illustrated by the blue graph and the input signal $x(t)$ by the orange graph." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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pPJqmPF5U9XAklKU5c36f3c9x6sbugplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2Fucy1PYmxpcXVlIC9DaGFyUHJvY3MgMTUgMCBSCi9FbmNvZGluZyA8PCAvRGlmZmVyZW5jZXMgWyAxMDQgL2ggMTE2IC90IDEyMCAveCBdIC9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNSAwIG9iago8PCAvaCAxNiAwIFIgL3QgMTcgMCBSIC94IDE4IDAgUiA+PgplbmRvYmoKMjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA2NiA+PgpzdHJlYW0KeJwzNrRQMFAwN1fQNTQ0VTAyMlAwNDJRSDHkMjQ0BzNzuWCCOWCWiQGQYQgkwRpyuGBac8A6ILJQrTlcaQBN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c3BhY2UgNDAgL3BhcmVubGVmdCAvcGFyZW5yaWdodCA0NCAvY29tbWEgNDYgL3BlcmlvZCA0OCAvemVybyAvb25lCi90d28gNTIgL2ZvdXIgNTQgL3NpeCA1NiAvZWlnaHQgXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDIwIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDE5IDAgUiA+PgplbmRvYmoKMjAgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxOSAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMiAwIG9iago8PCAvY29tbWEgMjMgMCBSIC9laWdodCAyNCAwIFIgL2ZvdXIgMjUgMCBSIC9vbmUgMjcgMCBSIC9wYXJlbmxlZnQgMjggMCBSCi9wYXJlbnJpZ2h0IDI5IDAgUiAvcGVyaW9kIDMwIDAgUiAvc2l4IDMxIDAgUiAvc3BhY2UgMzIgMCBSIC90d28gMzMgMCBSCi96ZXJvIDM0IDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjEgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0YxLURlamFWdVNhbnMtbWludXMgMjYgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iagozNSAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjEwNDI3MTU1NzAyKzAyJzAwJykKL0NyZWF0b3IgKE1hdHBsb3RsaWIgdjMuMy40LCBodHRwczovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKE1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgdjMuMy40KSA+PgplbmRvYmoKeHJlZgowIDM2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDEwMDc2IDAwMDAwIG4gCjAwMDAwMDk4NDMgMDAwMDAgbiAKMDAwMDAwOTg4NiAwMDAwMCBuIAowMDAwMDA5OTg1IDAwMDAwIG4gCjAwMDAwMTAwMDYgMDAwMDAgbiAKMDAwMDAxMDAyNyAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTUgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDAyOTE4IDAwMDAwIG4gCjAwMDAwMDQxNzggMDAwMDAgbiAKMDAwMDAwMzk3MCAwMDAwMCBuIAowMDAwMDAzNjQwIDAwMDAwIG4gCjAwMDAwMDUyMzEgMDAwMDAgbiAKMDAwMDAwMjkzOSAwMDAwMCBuIAowMDAwMDAzMjI1IDAwMDAwIG4gCjAwMDAwMDM0NzYgMDAwMDAgbiAKMDAwMDAwODYxMiAwMDAwMCBuIAowMDAwMDA4NDEyIDAwMDAwIG4gCjAwMDAwMDgwMTYgMDAwMDAgbiAKMDAwMDAwOTY2NSAwMDAwMCBuIAowMDAwMDA1MjgzIDAwMDAwIG4gCjAwMDAwMDU0MjEgMDAwMDAgbiAKMDAwMDAwNTg4NiAwMDAwMCBuIAowMDAwMDA2MDQ4IDAwMDAwIG4gCjAwMDAwMDYyMTggMDAwMDAgbiAKMDAwMDAwNjM3MCAwMDAwMCBuIAowMDAwMDA2NTkwIDAwMDAwIG4gCjAwMDAwMDY4MTIgMDAwMDAgbiAKMDAwMDAwNjkzMyAwMDAwMCBuIAowMDAwMDA3MzIzIDAwMDAwIG4gCjAwMDAwMDc0MTIgMDAwMDAgbiAKMDAwMDAwNzczMyAwMDAwMCBuIAowMDAwMDEwMTM2IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gMzUgMCBSIC9Sb290IDEgMCBSIC9TaXplIDM2ID4+CnN0YXJ0eHJlZgoxMDI5MwolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n" ], "text/plain": [ "