{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Characterization of Discrete 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, Comunications 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": [ "## Difference Equations\n", "\n", "The relation between input $x[k]$ and output $y[k] = \\mathcal{H} \\{ x[k] \\}$ of a discrete system can be described by relating actual and past samples of the input and output signal to each other. When restricting the relation to a linear superposition of these, this results in a [linear difference equation](https://en.wikipedia.org/wiki/Linear_difference_equation). The interconnection of difference equations to [linear time-invariant (LTI) systems](https://en.wikipedia.org/wiki/LTI_system_theory) is discussed in the following." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Difference Equations with Constant Coefficients\n", "\n", "The relation between the input $x[k] \\in \\mathbb{C}$ with $k \\in \\mathbb{Z}$ and output $y[k] \\in \\mathbb{C}$ of a system in terms of a linear difference equation with constant coefficients $a_n, b_m \\in \\mathbb{C}$ reads\n", "\n", "\\begin{equation}\n", "\\sum_{n = 0}^{N} a_n \\; y[k - n] = \\sum_{m = 0}^{M} b_m \\; x[k -m]\n", "\\end{equation}\n", "\n", "with $a_N \\neq 0$. The order of the difference equation is given by $N$. For a unique solution of the difference equation, $N$ initial conditions are required. Under the assumption that the input signal of the system $x[k] = 0$ for $k < 0$ these are given by $y[0], y[-1], \\dots, y[-N + 1]$. Other cases can be handled accordingly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Time-Invariant Systems\n", "\n", "LTI systems are an important class of systems. In order to show that linear difference equations with constant coefficients represent LTI systems, the linearity and time-invariance property has to be checked. A system is linear when the superposition principle holds\n", "\n", "\\begin{equation}\n", "\\mathcal{H} \\{ A x_1[k] + B x_2[k] \\} = A \\cdot \\mathcal{H} \\{ x_1[k] \\} + B \\cdot \\mathcal{H} \\{ x_2[k] \\}\n", "\\end{equation}\n", "\n", "for arbitraty signals $x_1[k], x_2[k] \\in \\mathbb{C}$ and coefficients $A, B \\in \\mathbb{C}$. Above condition is fulfilled by a linear difference equation, since the [summation](https://en.wikipedia.org/wiki/Summation) on left- and right-hand side is a linear operation. A system is time-invariant when\n", "\n", "\\begin{equation}\n", "y[k - \\kappa] = \\mathcal{H} \\{ x[k - \\kappa] \\}\n", "\\end{equation}\n", "\n", "with $y[k] = \\mathcal{H} \\{ x[k] \\}$ holds for $\\kappa \\in \\mathbb{Z}$. Substituting $k$ by $k -\\kappa$ in above linear difference equation shows that the time-invariance is fulfilled." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Computation of the Output Signal\n", "\n", "The solution of above difference equation is derived by extracting $y[k]$ from the sum on the left-hand-side and rearranging terms. This results in\n", "\n", "\\begin{equation}\n", "y[k] = \\frac{1}{a_0} \\left( \\sum_{m=0}^{M} b_m \\; x[k-m] - \\sum_{n=1}^{N} a_n \\; y[k-n] \\right)\n", "\\end{equation}\n", "\n", "for $a_0 \\neq 0$. The output signal is given by a weighted superposition of the actual and past samples of the input signal $x[k]$ and past samples of the output signal $y[k]$. The second sum is known as *recursive* part since it can be interpreted as a feedback of past output samples. The dependency on the input samples (the first sum) is known as *non-recursive* part.\n", "\n", "It can be concluded that linear difference equations with constant coefficients represent LTI systems. The coefficients together with the initial conditions characterize an LTI system fully. However, not all LTI systems can be described by linear difference equations of finite order $N$. Idealized systems may result in a linear difference equation of infinite order, for instance." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recursive and Non-Recursive Systems\n", "\n", "Above analysis of the solution of a linear difference equation revealed two contributions to the output signal $y[k]$: a non-recursive part which depends only on the current and past input samples $x[k]$ and a recursive part which depends on past output samples $y[k]$. A system is said to be\n", "\n", "* non-recursive if its output depends only on the input signal $x[k]$. This implies that $a_n = 0$ for $n > 0$.\n", "* recursive if its output depends on the input signal $x[k]$ and past output samples $y[k]$. This implies that at least one $a_n \\neq 0$ for $n > 0$.\n", "\n", "The classification into non-recursive and recursive systems has far reaching implications on the theory and practical realization of recursive systems. The feedback of past output samples in recursive systems for instance, may lead to instabilities and numerical issues. The former are discussed in detail later." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Examples\n", "\n", "Some examples for discrete systems defined by their input/output relation formulated in terms of a linear difference equation are given in the following." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Delay\n", "\n", "The output signal $y[k] = \\mathcal{H} \\{ x[k] \\}$ of a discrete system which delays the input $x[k]$ by $\\kappa \\in \\mathbb{N}$ samples is given as\n", "\n", "\\begin{equation}\n", "y[k] = x[k - \\kappa]\n", "\\end{equation}\n", "\n", "The order of the system is $N=0$. The coefficients of the linear difference equation read\n", "\n", "\\begin{align}\n", "a_0 &= 1 \\\\\n", "b_m &= \\begin{cases}\n", "1 & \\text{for } m=\\kappa \\\\\n", "0 & \\text{otherwise}\n", "\\end{cases}\n", "\\end{align}\n", "\n", "The system is non-recursive as can be deduced from its coefficients.\n", "\n", "The output signal $y[k]$ for a cosine signal at the input $x[k] = \\cos[\\Omega k]$ is computed by solving the difference equation for zero initial conditions and $\\kappa = 5$. The Python module [`scipy.signal`](http://docs.scipy.org/doc/scipy/reference/signal.html) offers various functionality for continuous and discrete systems. The function [`scipy.signal.filter`](http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.lfilter.html#scipy.signal.lfilter) implements above formula for the computation of the output signal $y[k]$ of a discrete LTI system given its coefficients and initial conditions. The coefficients $a_n$ and $b_m$ of the system are stored in the vectors `a` and `b`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy import signal\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "a = 1.0\n", "b = [0.0, 0.0, 0.0, 0.0, 1.0]\n", "\n", "k = np.arange(30)\n", "x = np.cos(2*np.pi/15 * k)\n", "y = signal.lfilter(b, a, x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The input $x[k]$ and output signal $y[k]$ are plotted for illustration." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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b250IC9XaWR0aHMgMTQgMCBSID4+CmVuZG9iagoxNSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTQgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0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aW5nIDw8Ci9EaWZmZXJlbmNlcyBbIDQ2IC9wZXJpb2QgNDggL3plcm8gL29uZSAvdHdvIC90aHJlZSA1MyAvZml2ZSA1NSAvc2V2ZW4gOTEgL2JyYWNrZXRsZWZ0CjkzIC9icmFja2V0cmlnaHQgXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDIyIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDIxIDAgUiA+PgplbmRvYmoKMjIgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoyMSAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyNCAwIG9iago8PCAvYnJhY2tldGxlZnQgMjUgMCBSIC9icmFja2V0cmlnaHQgMjYgMCBSIC9maXZlIDI3IDAgUiAvb25lIDI5IDAgUgovcGVyaW9kIDMwIDAgUiAvc2V2ZW4gMzEgMCBSIC90aHJlZSAzMiAwIFIgL3R3byAzMyAwIFIgL3plcm8gMzQgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMyAwIFIgL0YyIDE2IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRGVqYVZ1U2Fucy1taW51cyAyOCAwIFIgL00wIDEyIDAgUiAvTTEgMTMgMCBSID4+CmVuZG9iagoxMiAwIG9iago8PCAvQkJveCBbIC0zLjUgLTMuNSAzLjUgMy41IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMzEKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicbZBBDoQgDEX3PUUv8ElLRWXr0mu4mUzi/bcDcUBM3TTQvjx+Uf6S8E6lwPgkCUtOs+R605DSukyMGObVsijHoFEt1s51OKjP0HBjdIuxFKbU1uh4o5vpNt6TP/qwWSFGPxwOr4R7FkMmXCkxBoffCy/bw/8Rnl7UwB+ijX5jWkP9CmVuZHN0cmVhbQplbmRvYmoKMTMgMCBvYmoKPDwgL0JCb3ggWyAtMy41IC0zLjUgMy41IDMuNSBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nG2QQQ6EIAxF9z1FL/BJS0Vl69JruJlM4v23A3FATN000L48flH+kvBOpcD4JAlLTrPketOQ0rpMjBjm1bIox6BRLdbOdTioz9BwY3SLsRSm1NboeKOb6Tbekz/6sFkhRj8cDq+EexZDJlwpMQaH3wsv28P/EZ5e1MAfoo1+Y1pD/QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjM1IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA2MjAxMTI4MzMrMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgMzYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDk3MDkgMDAwMDAgbiAKMDAwMDAwODkzMyAwMDAwMCBuIAowMDAwMDA4OTc2IDAwMDAwIG4gCjAwMDAwMDkwNzUgMDAwMDAgbiAKMDAwMDAwOTA5NiAwMDAwMCBuIAowMDAwMDA5MTE3IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMiAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDI3NDcgMDAwMDAgbiAKMDAwMDAwOTE4NSAwMDAwMCBuIAowMDAwMDA5NDQ3IDAwMDAwIG4gCjAwMDAwMDM4MzcgMDAwMDAgbiAKMDAwMDAwMzYyOSAwMDAwMCBuIAowMDAwMDAzMzAzIDAwMDAwIG4gCjAwMDAwMDQ4OTAgMDAwMDAgbiAKMDAwMDAwMjc2OCAwMDAwMCBuIAowMDAwMDAyOTI3IDAwMDAwIG4gCjAwMDAwMDMwOTEgMDAwMDAgbiAKMDAwMDAwNzcyNCAwMDAwMCBuIAowMDAwMDA3NTI0IDAwMDAwIG4gCjAwMDAwMDcxNDIgMDAwMDAgbiAKMDAwMDAwODc3NyAwMDAwMCBuIAowMDAwMDA0OTQyIDAwMDAwIG4gCjAwMDAwMDUwODUgMDAwMDAgbiAKMDAwMDAwNTIyNCAwMDAwMCBuIAowMDAwMDA1NTQ0IDAwMDAwIG4gCjAwMDAwMDU3MTQgMDAwMDAgbiAKMDAwMDAwNTg2NiAwMDAwMCBuIAowMDAwMDA1OTg3IDAwMDAwIG4gCjAwMDAwMDYxMjcgMDAwMDAgbiAKMDAwMDAwNjUzOCAwMDAwMCBuIAowMDAwMDA2ODU5IDAwMDAwIG4gCjAwMDAwMDk3NjkgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzNSAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzYgPj4Kc3RhcnR4cmVmCjk5MjMKJSVFT0YK\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" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 4))\n", "plt.subplot(121)\n", "plt.stem(k, x)\n", "plt.xlabel('$k$')\n", "plt.ylabel(r'$x[k]$')\n", "plt.ylim([-1.1, 1.1])\n", "\n", "plt.subplot(122)\n", "plt.stem(k, y)\n", "plt.xlabel('$k$')\n", "plt.ylabel('$y[k]$')\n", "plt.ylim([-1.1, 1.1])\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Change the delay $\\kappa$ of the system and rerun the example." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Moving Average\n", "\n", "The [moving average](https://en.wikipedia.org/wiki/Moving_average) of a time-series is frequently used to smooth out short-term fluctuations in order to emphasize longer-term trends. A system which calculates the moving average of its input signal $x[k]$ is represented by\n", "\n", "\\begin{equation}\n", "y[k] = \\frac{1}{M} \\sum_{\\kappa = 0}^{M-1} x[k - \\kappa]\n", "\\end{equation}\n", "\n", "The order of the system is $N=0$. The coefficients of the linear difference equation read\n", "\n", "\\begin{align}\n", "a_0 &= 1 \\\\\n", "b_m &= \\begin{cases}\n", "\\frac{1}{M} & \\text{for } 0 \\leq m < M \\\\\n", "0 & \\text{otherwise}\n", "\\end{cases}\n", "\\end{align}\n", "\n", "The system is non-recursive as can be deduced from its coefficients. The output of the system for a cosine signal at the input superimposed with noise is computed as illustration of the functionality of the moving average." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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ZSAvQ2hhclByb2NzIDE3IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTA3IC9rIDEyMCAveCAveSBdIC9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTUgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxNCAwIFIgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxNCAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNyAwIG9iago8PCAvayAxOCAwIFIgL3ggMTkgMCBSIC95IDIwIDAgUiA+PgplbmRvYmoKMjUgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA3MSA+PgpzdHJlYW0KeJwztjRQMFCwMFPQNTQ2VDCyNFYwNzNQSDHkAgqBWLlcMLEcMMvMEsQyNDdDYumaGUJlkVgg43K4YAbnwMzL4UoDAPG0FiMKZW5kc3RyZWFtCmVuZG9iagoyNiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDY3ID4+CnN0cmVhbQp4nDO2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MCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAyMSAwIFIgPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMjEgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjQgMCBvYmoKPDwgL2JyYWNrZXRsZWZ0IDI1IDAgUiAvYnJhY2tldHJpZ2h0IDI2IDAgUiAvZml2ZSAyNyAwIFIgL2ZvdXIgMjggMCBSCi9vbmUgMzAgMCBSIC9wZXJpb2QgMzEgMCBSIC9zaXggMzIgMCBSIC90aHJlZSAzMyAwIFIgL3R3byAzNCAwIFIKL3plcm8gMzUgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMyAwIFIgL0YyIDE2IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRGVqYVZ1U2Fucy1taW51cyAyOSAwIFIgL00wIDEyIDAgUiAvTTEgMTMgMCBSID4+CmVuZG9iagoxMiAwIG9iago8PCAvQkJveCBbIC0zLjUgLTMuNSAzLjUgMy41IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMzEKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicbZBBDoQgDEX3PUUv8ElLRWXr0mu4mUzi/bcDcUBM3TTQvjx+Uf6S8E6lwPgkCUtOs+R605DSukyMGObVsijHoFEt1s51OKjP0HBjdIuxFKbU1uh4o5vpNt6TP/qwWSFGPxwOr4R7FkMmXCkxBoffCy/bw/8Rnl7UwB+ijX5jWkP9CmVuZHN0cmVhbQplbmRvYmoKMTMgMCBvYmoKPDwgL0JCb3ggWyAtMy41IC0zLjUgMy41IDMuNSBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nG2QQQ6EIAxF9z1FL/BJS0Vl69JruJlM4v23A3FATN000L48flH+kvBOpcD4JAlLTrPketOQ0rpMjBjm1bIox6BRLdbOdTioz9BwY3SLsRSm1NboeKOb6Tbekz/6sFkhRj8cDq+EexZDJlwpMQaH3wsv28P/EZ5e1MAfoo1+Y1pD/QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjM2IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA2MjAxMTI4MzQrMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgMzcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTIxODcgMDAwMDAgbiAKMDAwMDAxMTQxMSAwMDAwMCBuIAowMDAwMDExNDU0IDAwMDAwIG4gCjAwMDAwMTE1NTMgMDAwMDAgbiAKMDAwMDAxMTU3NCAwMDAwMCBuIAowMDAwMDExNTk1IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDQ4MDQgMDAwMDAgbiAKMDAwMDAxMTY2MyAwMDAwMCBuIAowMDAwMDExOTI1IDAwMDAwIG4gCjAwMDAwMDU4OTQgMDAwMDAgbiAKMDAwMDAwNTY4NiAwMDAwMCBuIAowMDAwMDA1MzYwIDAwMDAwIG4gCjAwMDAwMDY5NDcgMDAwMDAgbiAKMDAwMDAwNDgyNSAwMDAwMCBuIAowMDAwMDA0OTg0IDAwMDAwIG4gCjAwMDAwMDUxNDggMDAwMDAgbiAKMDAwMDAxMDE5MSAwMDAwMCBuIAowMDAwMDA5OTkxIDAwMDAwIG4gCjAwMDAwMDk2MTEgMDAwMDAgbiAKMDAwMDAxMTI0NCAwMDAwMCBuIAowMDAwMDA2OTk5IDAwMDAwIG4gCjAwMDAwMDcxNDIgMDAwMDAgbiAKMDAwMDAwNzI4MSAwMDAwMCBuIAowMDAwMDA3NjAxIDAwMDAwIG4gCjAwMDAwMDc3NjMgMDAwMDAgbiAKMDAwMDAwNzkzMyAwMDAwMCBuIAowMDAwMDA4MDg1IDAwMDAwIG4gCjAwMDAwMDgyMDYgMDAwMDAgbiAKMDAwMDAwODU5NiAwMDAwMCBuIAowMDAwMDA5MDA3IDAwMDAwIG4gCjAwMDAwMDkzMjggMDAwMDAgbiAKMDAwMDAxMjI0NyAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDM2IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSAzNyA+PgpzdGFydHhyZWYKMTI0MDEKJSVFT0YK\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "np.random.seed(seed=0)\n", "\n", "M = 10\n", "a = [1.0]\n", "b = 1/M * np.ones(M)\n", "\n", "k = np.arange(0, 60)\n", "x = np.cos(2*np.pi/30 * k) + .2 * np.random.normal(size=(len(k)))\n", "y = signal.lfilter(b, a, x)\n", "\n", "plt.figure(figsize=(10, 4))\n", "plt.subplot(121)\n", "plt.stem(k, x)\n", "plt.xlabel('$k$')\n", "plt.ylabel(r'$x[k]$')\n", "plt.ylim([-1.5, 1.5])\n", "\n", "plt.subplot(122)\n", "plt.stem(k, y)\n", "plt.xlabel('$k$')\n", "plt.ylabel('$y[k]$')\n", "plt.ylim([-1.5, 1.5])\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Change the length `M` of the moving average. How does the output of the system change?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Second-Order System\n", "\n", "The recursive LTI system with the following linear difference equation is given\n", "\n", "\\begin{equation}\n", "y[k] - y[k-1] + \\frac{1}{2} y[k-2] = x[k]\n", "\\end{equation}\n", "\n", "The order of the system is $N=2$. The coefficients of the system can be derived from its difference equation as $a_0 = 1$, $a_1 = -1$, $a_2 = \\frac{1}{2}$ and $b_0 = 1$. The output signal for a rectangular signal at the input $x[k] = \\text{rect}_{20}[k]$ is computed and plotted for zero initial conditions." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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L0Jhc2VGb250IC9EZWphVnVTYW5zLU9ibGlxdWUgL0NoYXJQcm9jcyAxNyAwIFIKL0VuY29kaW5nIDw8IC9EaWZmZXJlbmNlcyBbIDEwNyAvayAxMjAgL3ggL3kgXSAvVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDE1IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTQgMCBSID4+CmVuZG9iagoxNSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTQgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTcgMCBvYmoKPDwgL2sgMTggMCBSIC94IDE5IDAgUiAveSAyMCAwIFIgPj4KZW5kb2JqCjI1IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggNzEgPj4Kc3RyZWFtCnicM7Y0UDBQsDBT0DU0NlQwsjRWMDczUEgx5AIKgVi5XDCxHDDLzBLEMjQ3Q2LpmhlCZZFYIONyuGAG58DMy+FKAwDxtBYjCmVuZHN0cmVhbQplbmRvYmoKMjYgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNv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MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyNCAwIG9iago8PCAvYnJhY2tldGxlZnQgMjUgMCBSIC9icmFja2V0cmlnaHQgMjYgMCBSIC9maXZlIDI3IDAgUiAvZm91ciAyOCAwIFIKL29uZSAzMCAwIFIgL3BlcmlvZCAzMSAwIFIgL3RocmVlIDMyIDAgUiAvdHdvIDMzIDAgUiAvemVybyAzNCAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDIzIDAgUiAvRjIgMTYgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8PCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9EZWphVnVTYW5zLW1pbnVzIDI5IDAgUiAvTTAgMTIgMCBSIC9NMSAxMyAwIFIgPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9CQm94IFsgLTMuNSAtMy41IDMuNSAzLjUgXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDEzMQovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJxtkEEOhCAMRfc9RS/wSUtFZevSa7iZTOL9twNxQEzdNNC+PH5R/pLwTqXA+CQJS06z5HrTkNK6TIwY5tWyKMegUS3WznU4qM/QcGN0i7EUptTW6Hijm+k23pM/+rBZIUY/HA6vhHsWQyZcKTEGh98LL9vD/xGeXtTAH6KNfmNaQ/0KZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9iago8PCAvQkJveCBbIC0zLjUgLTMuNSAzLjUgMy41IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMzEKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicbZBBDoQgDEX3PUUv8ElLRWXr0mu4mUzi/bcDcUBM3TTQvjx+Uf6S8E6lwPgkCUtOs+R605DSukyMGObVsijHoFEt1s51OKjP0HBjdIuxFKbU1uh4o5vpNt6TP/qwWSFGPxwOr4R7FkMmXCkxBoffCy/bw/8Rnl7UwB+ijX5jWkP9CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKMzUgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDE5MDYyMDExMjgzNCswMicwMCcpCi9DcmVhdG9yIChtYXRwbG90bGliIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAobWF0cGxvdGxpYiBwZGYgYmFja2VuZCAzLjAuMykgPj4KZW5kb2JqCnhyZWYKMCAzNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAxMDAwOCAwMDAwMCBuIAowMDAwMDA5MjMyIDAwMDAwIG4gCjAwMDAwMDkyNzUgMDAwMDAgbiAKMDAwMDAwOTM3NCAwMDAwMCBuIAowMDAwMDA5Mzk1IDAwMDAwIG4gCjAwMDAwMDk0MTYgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk5IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwMzAzMiAwMDAwMCBuIAowMDAwMDA5NDg0IDAwMDAwIG4gCjAwMDAwMDk3NDYgMDAwMDAgbiAKMDAwMDAwNDEyMiAwMDAwMCBuIAowMDAwMDAzOTE0IDAwMDAwIG4gCjAwMDAwMDM1ODggMDAwMDAgbiAKMDAwMDAwNTE3NSAwMDAwMCBuIAowMDAwMDAzMDUzIDAwMDAwIG4gCjAwMDAwMDMyMTIgMDAwMDAgbiAKMDAwMDAwMzM3NiAwMDAwMCBuIAowMDAwMDA4MDI0IDAwMDAwIG4gCjAwMDAwMDc4MjQgMDAwMDAgbiAKMDAwMDAwNzQ0OSAwMDAwMCBuIAowMDAwMDA5MDc3IDAwMDAwIG4gCjAwMDAwMDUyMjcgMDAwMDAgbiAKMDAwMDAwNTM3MCAwMDAwMCBuIAowMDAwMDA1NTA5IDAwMDAwIG4gCjAwMDAwMDU4MjkgMDAwMDAgbiAKMDAwMDAwNTk5MSAwMDAwMCBuIAowMDAwMDA2MTYxIDAwMDAwIG4gCjAwMDAwMDYzMTMgMDAwMDAgbiAKMDAwMDAwNjQzNCAwMDAwMCBuIAowMDAwMDA2ODQ1IDAwMDAwIG4gCjAwMDAwMDcxNjYgMDAwMDAgbiAKMDAwMDAxMDA2OCAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDM1IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSAzNiA+PgpzdGFydHhyZWYKMTAyMjIKJSVFT0YK\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" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def rect(k, N):\n", " return np.where((k >= 0) & (k < N), 1.0, 0.0)\n", "\n", "\n", "a = [1.0, -1.0, 1/2]\n", "b = [1.0]\n", "\n", "k = np.arange(0, 40)\n", "x = rect(k, 20)\n", "y = signal.lfilter(b, a, x)\n", "\n", "plt.figure(figsize=(10, 4))\n", "plt.subplot(121)\n", "plt.stem(k, x)\n", "plt.xlabel('$k$')\n", "plt.ylabel(r'$x[k]$')\n", "plt.ylim([-0.7, 2.6])\n", "\n", "plt.subplot(122)\n", "plt.stem(k, y)\n", "plt.xlabel('$k$')\n", "plt.ylabel('$y[k]$')\n", "plt.ylim([-0.7, 2.6])\n", "plt.tight_layout()" ] }, { "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 }