{
"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": [
"## Impulse Response\n",
"\n",
"The concept of the so-called impulse response of discrete linear time-invariant (LTI) system and its connection to linear difference equations is introduced in the following."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Output Signal\n",
"\n",
"The response $y[k] = \\mathcal{H} \\{ x[k] \\}$ of an LTI system to an arbitrary input signal $x[k]$ is derived. By applying the [sifting-property of the discrete Dirac impulse](../discrete_signals/standard_signals.ipynb#Dirac-Impulse), the input signal can be represented as\n",
"\n",
"\\begin{equation}\n",
"x[k] = \\sum_{\\kappa = -\\infty}^{\\infty} x[\\kappa] \\cdot \\delta[k-\\kappa]\n",
"\\end{equation}\n",
"\n",
"The output signal of the system is given by\n",
"\n",
"\\begin{equation}\n",
"y[k] = \\mathcal{H} \\left\\{ \\sum_{\\kappa = -\\infty}^{\\infty} x[\\kappa] \\cdot \\delta[k-\\kappa] \\right\\}\n",
"\\end{equation}\n",
"\n",
"The summation and system response operator $\\mathcal{H}$ can be exchanged under the assumption that the system is linear\n",
"\n",
"\\begin{equation}\n",
"y[k] = \\sum_{\\kappa = -\\infty}^{\\infty} x[\\kappa] \\cdot \\mathcal{H} \\left\\{ \\delta[k-\\kappa] \\right\\}\n",
"\\end{equation}\n",
"\n",
"where $\\mathcal{H} \\{\\cdot\\}$ was only applied to the Dirac impulse, since $x[\\kappa]$ can be regarded as constant factor with respect to the index $k$.\n",
"\n",
"The response of a system to a Dirac impulse as input is termed [*impulse response*](https://en.wikipedia.org/wiki/Impulse_response). It is defined as\n",
"\n",
"\\begin{equation}\n",
"h[k] = \\mathcal{H} \\left\\{ \\delta[k] \\right\\}\n",
"\\end{equation}\n",
"\n",
"If the system is time-invariant, the response to a shifted Dirac impulse is $\\mathcal{H} \\left\\{ \\delta[k-\\kappa]) \\right\\} = h[k-\\kappa]$. Hence, for a discrete LTI system we finally get\n",
"\n",
"\\begin{equation}\n",
"y[k] = \\sum_{\\kappa = -\\infty}^{\\infty} x[\\kappa] \\cdot h[k-\\kappa] = y[k] = x[k] * h[k]\n",
"\\end{equation}\n",
"\n",
"This operation is termed as linear [*convolution*](https://en.wikipedia.org/wiki/Convolution) and commonly abbreviated by $*$. The properties of an LTI system are entirely characterized by its impulse response. The response $y[k]$ of a system to an arbitrary input signal $x[k]$ is given by the convolution of the input signal $x[k]$ with its impulse response $h[k]$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Relation to Difference Equation\n",
"\n",
"The impulse response $h[k] = \\mathcal{H} \\{ \\delta[k] \\}$ is the response of an LTI system to an Dirac impulse at the input. It can be derived from the coefficients of a [linear differential equation representing the LTI system](difference_equation.ipynb) by computing the output signal for the input signal $x[k] = \\delta[k]$. Introducing this into the [solution of the difference equation](difference_equation.ipynb#Computation-of-the-Output-Signal) yields\n",
"\n",
"\\begin{equation}\n",
"h[k] = \\frac{1}{a_0} \\left( \\sum_{m=0}^{M} b_m \\; \\delta[k-m] - \\sum_{n=1}^{N} a_n \\; h[k-n] \\right)\n",
"\\end{equation}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Finite Impulse Response\n",
"\n",
"Let's consider the case of a [non-recursive system](difference_equation.ipynb#Recursive-and-Non-Recursive-Systems) with $a_n = 0$ for $n > 0$. Without loss of generality it can be assumed that $a_0 = 1$, since $\\frac{1}{a_0}$ can be incorporated into the other coefficients by dividing them through $a_0$. The impulse response is given as\n",
"\n",
"\\begin{equation}\n",
"h[k] = \\sum_{m=0}^{M} b_m \\; \\delta[k-m] = \\begin{cases} b_k & \\text{for } 0 \\leq k < M \\\\ 0 & \\text{otherwise} \\end{cases}\n",
"\\end{equation}\n",
"\n",
"Note that the summation in above formula constitutes a convolution between the signal given by the samples $b_m$ and the Dirac impulse $\\delta[k]$. The impulse response of a non-recursive system is of finite length $M$. Its values are given by the coefficients $b_m$ of the linear difference equation characterizing the system. An impulse response of finite length is commonly termed [finite impulse response (FIR)](https://en.wikipedia.org/wiki/Finite_impulse_response). The term FIR (system) is used synonymously to non-recursive system. The former relates to the length of the impulse response and the latter to the structure of the system."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Example - Moving Average**\n",
"\n",
"According to above findings, the impulse response of the [moving average filter](difference_equation.ipynb#Moving-Average) is given as\n",
"\n",
"\\begin{equation}\n",
"h[k] = \\frac{1}{N} \\cdot \\text{rect}_N[k]\n",
"\\end{equation}\n",
"\n",
"As alternative to the [solution of the difference equation illustrated before](difference_equation.ipynb#Moving-Average), the output signal $y[k] = \\mathcal{H} \\{ y[k] \\}$ is computed by convolution of the (same) input signal."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"application/pdf": "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ZSAvQ2hhclByb2NzIDE3IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTA3IC9rIDEyMCAveCAveSBdIC9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTUgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxNCAwIFIgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxNCAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNyAwIG9iago8PCAvayAxOCAwIFIgL3ggMTkgMCBSIC95IDIwIDAgUiA+PgplbmRvYmoKMjUgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA3MSA+PgpzdHJlYW0KeJwztjRQMFCwMFPQNTQ2VDCyNFYwNzNQSDHkAgqBWLlcMLEcMMvMEsQyNDdDYumaGUJlkVgg43K4YAbnwMzL4UoDAPG0FiMKZW5kc3RyZWFtCmVuZG9iagoyNiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDY3ID4+CnN0cmVhbQp4nDO2NFAwULA0V9A1NDZUMDYwUTA3M1BIMeSCMXPBLLBsDhdMHYRlBmIYGZogscyAxoEl4QyQGTlw03K40gDOgxXTCmVuZHN0cmVhbQplbmRvYmoKMjcgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyNDcgPj4Kc3RyZWFtCnicTVG7bUQxDOvfFFzgAOtreZ4LUl32b0PJCJDCIKEvKaclFvbGSwzhB1sPvuSRVUN/Hj8x7DMsPcnk1D/muclUFL4VqpuYUBdi4f1oBLwWdC8iK8oH349lDHPO9+CjEJdgJjRgrG9JJhfVvDNkwomhjsNBm1QYd00ULK4VzTPI7VY3sjqzIGx4JRPixgBEBNkXkM1go4yxlZDFch6oCpIFWmDX6RtRi4IrlNYJdKLWxLrM4Kvn9nY3Qy/y4Ki6eH0M60uwwuileyx8rkIfzPRMO3dJI73wphMRZg8FUpmdkZU6PWJ9t0D/n2Ur+PvJz/P9CxUoXCoKZW5kc3RyZWFtCmVuZG9iagoyOCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDkwID4+CnN0cmVhbQp4nE2NQRLAIAgD77wiT1BE0P90etL/X6vUDr3ATgKJFkWC9DVqSzDuuDIVa1ApmJSXwFUwXAva7qLK/jJJTJ2G03u3A4Oy8XGD0kn79nF6AKv9egbdD9IcIlgKZW5kc3RyZWFtCmVuZG9iagoyOSAwIG9iago8PCAvQkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzNwovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJzjMjQwUzA2NVXI5TI3NgKzcsAsI3MjIAski2BBZNMAAV8KCgplbmRzdHJlYW0KZW5kb2JqCjMwIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggODAgPj4Kc3RyZWFtCnicRYy7DcAwCER7pmAEfiZmnyiVs38bIErccE+6e7g6EjJT3mGGhwSeDCyGU/EGmaNgNbhGUo2d7KOwbl91geZ6U6v19wcqT3Z2cT3Nyxn0CmVuZHN0cmVhbQplbmRvYmoKMzEgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0OSA+PgpzdHJlYW0KeJwzNrRQMFAwNDAHkkaGQJaRiUKKIRdIAMTM5YIJ5oBZBkAaojgHriaHKw0AxugNJgplbmRzdHJlYW0KZW5kb2JqCjMyIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzE3ID4+CnN0cmVhbQp4nDVSS3JDMQjbv1Nwgc6Yv32edLJq7r+thCcrsC1AQi4vWdJLftQl26XD5Fcf9yWxQj6P7ZrMUsX3FrMUzy2vR88Rty0KBFETPfgyJxUi1M/U6Dp4YZc+A68QTikWeAeTAAav4V94lE6DwDsbMt4Rk5EaECTBmkuLTUiUPUn8K+X1pJU0dH4mK3P5e3KpFGqjyQgVIFi52AekKykeJBM9iUiycr03VojekFeSx2clJhkQ3SaxTbTA49yVtISZmEIF5liA1XSzuvocTFjjsITxKmEW1YNNnjWphGa0jmNkw3j3wkyJhYbDElCbfZUJqpeP09wJI6ZHTXbtwrJbNu8hRKP5MyyUwccoJAGHTmMkCtKwgBGBOb2wir3mCzkWwIhlnZosDG1oJbt6joXA0JyzpWHG157X8/4HRVt7owplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzM4ID4+CnN0cmVhbQp4nDVSOa7dQAzrfQpdIIB2zZznBal+7t+GlF8KQ7RWipqOFpVp+WUhVS2TLr/tSW2JG/L3yQqJE5JXJdqlDJFQ+TyFVL9ny7y+1pwRIEuVCpOTksclC/4Ml94uHOdjaz+PI3c9emBVjIQSAcsUE6NrWTq7w5qN/DymAT/iEXKuWLccYxVIDbpx2hXvQ/N5yBogZpiWigpdVokWfkHxoEetffdYVFgg0e0cSXCMjVCRgHaB2kgMObMWu6gv+lmUmAl07Ysi7qLAEknMnGJdOvoPPnQsqL8248uvjkr6SCtrTNp3o0lpzCKTrpdFbzdvfT24QPMuyn9ezSBBU9YoaXzQqp1jKJoZZYV3HJoMNMcch8wTPIczEpT0fSh+X0smuiiRPw4NoX9fHqOMnAZvAXPRn7aKAxfx2WGvHGCF0sWa5H1AKhN6YPr/1/h5/vwDHLaAVAplbmRzdHJlYW0KZW5kb2JqCjM0IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjQ4ID4+CnN0cmVhbQp4nC1ROZIDQQjL5xV6QnPT77HLkff/6QrKAYOGQyA6LXFQxk8Qlive8shVtOHvmRjBd8Gh38p1GxY5EBVI0hhUTahdvB69B3YcZgLzpDUsgxnrAz9jCjd6cXhMxtntdRk1BHvXa09mUDIrF3HJxAVTddjImcNPpowL7VzPDci5EdZlGKSblcaMhCNNIVJIoeomqTNBkASjq1GjjRzFfunLI51hVSNqDPtcS9vXcxPOGjQ7Fqs8OaVHV5zLycULKwf9vM3ARVQaqzwQEnC/20P9nOzkN97SubPF9Phec7K8MBVY8ea1G5BNtfg3L+L4PePr+fwDqKVbFgplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjEwID4+CnN0cmVhbQp4nDVQyw1DMQi7ZwoWqBQCgWSeVr11/2tt0DthEf9CWMiUCHmpyc4p6Us+OkwPti6/sSILrXUl7MqaIJ4r76GZsrHR2OJgcBomXoAWN2DoaY0aNXThgqYulUKBxSXwmXx1e+i+Txl4ahlydgQRQ8lgCWq6Fk1YtDyfkE4B4v9+w+4t5KGS88qeG/kbnO3wO7Nu4SdqdiLRchUy1LM0xxgIE0UePHlFpnDis9Z31TQS1GYLTpYBrk4/jA4AYCJeWYDsrkQ5S9KOpZ9vvMf3D0AAU7QKZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMgL0NoYXJQcm9jcyAyNCAwIFIKL0VuY29kaW5nIDw8Ci9EaWZmZXJlbmNlcyBbIDQ2IC9wZXJpb2QgNDggL3plcm8gL29uZSAvdHdvIC90aHJlZSAvZm91ciAvZml2ZSAvc2l4IDkxIC9icmFja2V0bGVmdCA5MwovYnJhY2tldHJpZ2h0IF0KL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250RGVzY3JpcHRvciAyMiAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAyMSAwIFIgPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMjEgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjQgMCBvYmoKPDwgL2JyYWNrZXRsZWZ0IDI1IDAgUiAvYnJhY2tldHJpZ2h0IDI2IDAgUiAvZml2ZSAyNyAwIFIgL2ZvdXIgMjggMCBSCi9vbmUgMzAgMCBSIC9wZXJpb2QgMzEgMCBSIC9zaXggMzIgMCBSIC90aHJlZSAzMyAwIFIgL3R3byAzNCAwIFIKL3plcm8gMzUgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMyAwIFIgL0YyIDE2IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRGVqYVZ1U2Fucy1taW51cyAyOSAwIFIgL00wIDEyIDAgUiAvTTEgMTMgMCBSID4+CmVuZG9iagoxMiAwIG9iago8PCAvQkJveCBbIC0zLjUgLTMuNSAzLjUgMy41IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMzEKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicbZBBDoQgDEX3PUUv8ElLRWXr0mu4mUzi/bcDcUBM3TTQvjx+Uf6S8E6lwPgkCUtOs+R605DSukyMGObVsijHoFEt1s51OKjP0HBjdIuxFKbU1uh4o5vpNt6TP/qwWSFGPxwOr4R7FkMmXCkxBoffCy/bw/8Rnl7UwB+ijX5jWkP9CmVuZHN0cmVhbQplbmRvYmoKMTMgMCBvYmoKPDwgL0JCb3ggWyAtMy41IC0zLjUgMy41IDMuNSBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nG2QQQ6EIAxF9z1FL/BJS0Vl69JruJlM4v23A3FATN000L48flH+kvBOpcD4JAlLTrPketOQ0rpMjBjm1bIox6BRLdbOdTioz9BwY3SLsRSm1NboeKOb6Tbekz/6sFkhRj8cDq+EexZDJlwpMQaH3wsv28P/EZ5e1MAfoo1+Y1pD/QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjM2IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA3MDQxMTQ1MjUrMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgMzcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTIxODcgMDAwMDAgbiAKMDAwMDAxMTQxMSAwMDAwMCBuIAowMDAwMDExNDU0IDAwMDAwIG4gCjAwMDAwMTE1NTMgMDAwMDAgbiAKMDAwMDAxMTU3NCAwMDAwMCBuIAowMDAwMDExNTk1IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDQ4MDQgMDAwMDAgbiAKMDAwMDAxMTY2MyAwMDAwMCBuIAowMDAwMDExOTI1IDAwMDAwIG4gCjAwMDAwMDU4OTQgMDAwMDAgbiAKMDAwMDAwNTY4NiAwMDAwMCBuIAowMDAwMDA1MzYwIDAwMDAwIG4gCjAwMDAwMDY5NDcgMDAwMDAgbiAKMDAwMDAwNDgyNSAwMDAwMCBuIAowMDAwMDA0OTg0IDAwMDAwIG4gCjAwMDAwMDUxNDggMDAwMDAgbiAKMDAwMDAxMDE5MSAwMDAwMCBuIAowMDAwMDA5OTkxIDAwMDAwIG4gCjAwMDAwMDk2MTEgMDAwMDAgbiAKMDAwMDAxMTI0NCAwMDAwMCBuIAowMDAwMDA2OTk5IDAwMDAwIG4gCjAwMDAwMDcxNDIgMDAwMDAgbiAKMDAwMDAwNzI4MSAwMDAwMCBuIAowMDAwMDA3NjAxIDAwMDAwIG4gCjAwMDAwMDc3NjMgMDAwMDAgbiAKMDAwMDAwNzkzMyAwMDAwMCBuIAowMDAwMDA4MDg1IDAwMDAwIG4gCjAwMDAwMDgyMDYgMDAwMDAgbiAKMDAwMDAwODU5NiAwMDAwMCBuIAowMDAwMDA5MDA3IDAwMDAwIG4gCjAwMDAwMDkzMjggMDAwMDAgbiAKMDAwMDAxMjI0NyAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDM2IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSAzNyA+PgpzdGFydHhyZWYKMTI0MDEKJSVFT0YK\n",
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"from scipy import signal\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"\n",
"def rect(k, N):\n",
" return np.where((k >= 0) & (k < N), 1.0, 0.0)\n",
"\n",
"\n",
"np.random.seed(seed=0)\n",
"\n",
"N = 10\n",
"\n",
"k = np.arange(0, 60)\n",
"h = 1/N * rect(k, N)\n",
"x = np.cos(2*np.pi/30 * k) + .2 * np.random.normal(size=(len(k)))\n",
"y = np.convolve(x, h)\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[0:len(x)])\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",
"* Compare above output signal $y[k]$ derived by convolution with the output signal derived by [solution of the difference equation](difference_equation.ipynb#Moving-Average)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Infinite Impulse Response\n",
"\n",
"Now the general case of a [recursive system](difference_equation.ipynb#Recursive-and-Non-Recursive-Systems) is regarded. By inspection of above formula for the computation of the impulse response from the coefficients of a linear difference equation it becomes clear that the impulse response $h[k]$ for time-instant $k$ depends on the impulse response of past time instants $k-1, \\dots, k-N+1$. This feedback generally results in an impulse response of infinite length. Such an impulse response is commonly termed as [infinite impulse response (IIR)](https://en.wikipedia.org/wiki/Infinite_impulse_response). The term IIR (system) is used synonymously to recursive system. The former relates to the length of the impulse response and the latter to the structure of the system.\n",
"\n",
"For a finite-length input signal $x[k]$ the output signal of a recursive system cannot be computed by a linear convolution $y[k] = x[k] * h[k]$ in practice. This is due to the infinite length of its impulse response. As practical solution, the impulse response is often truncated to a finite length after its has decayed reasonably."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Example**\n",
"\n",
"The impulse response $h[k]$ of the previously introduced [second-order recursive LTI system](difference_equation.ipynb#Second-Order-System) with the difference equation\n",
"\n",
"\\begin{equation}\n",
"y[k] - y[k-1] + \\frac{1}{2} y[k-2] = x[k]\n",
"\\end{equation}\n",
"\n",
"is derived by solution of the difference equation for a Dirac impulse as input signal. As can be deduced from its difference equation, the second-order recursive system has an IIR. Its first 256 samples are computed and plotted in the following. Note, less samples have been shown for ease of illustration."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0, 25, -0.5, 1.2]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"application/pdf": "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MCAxMDY4IF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL0l0YWxpY0FuZ2xlIDAgL01heFdpZHRoIDEzNTAgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjEzIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNTAgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyOCA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTcgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxNyA5NjkgOTY5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MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIyIDAgb2JqCjw8IC9icmFja2V0bGVmdCAyMyAwIFIgL2JyYWNrZXRyaWdodCAyNCAwIFIgL2ZpdmUgMjUgMCBSIC9vbmUgMjcgMCBSCi9wZXJpb2QgMjggMCBSIC9zZXZlbiAyOSAwIFIgL3R3byAzMCAwIFIgL3plcm8gMzEgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMSAwIFIgL0YyIDE1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRGVqYVZ1U2Fucy1taW51cyAyNiAwIFIgL00wIDEyIDAgUiA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL0JCb3ggWyAtMy41IC0zLjUgMy41IDMuNSBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nG2QQQ6EIAxF9z1FL/BJS0Vl69JruJlM4v23A3FATN000L48flH+kvBOpcD4JAlLTrPketOQ0rpMjBjm1bIox6BRLdbOdTioz9BwY3SLsRSm1NboeKOb6Tbekz/6sFkhRj8cDq+EexZDJlwpMQaH3wsv28P/EZ5e1MAfoo1+Y1pD/QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjMyIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA3MDQxMTQ1MjUrMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgMzMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDc5NzggMDAwMDAgbiAKMDAwMDAwNzQ3NSAwMDAwMCBuIAowMDAwMDA3NTE4IDAwMDAwIG4gCjAwMDAwMDc2MTcgMDAwMDAgbiAKMDAwMDAwNzYzOCAwMDAwMCBuIAowMDAwMDA3NjU5IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5MyAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDE4MjQgMDAwMDAgbiAKMDAwMDAwNzcxNiAwMDAwMCBuIAowMDAwMDAyODIxIDAwMDAwIG4gCjAwMDAwMDI2MTMgMDAwMDAgbiAKMDAwMDAwMjI5MCAwMDAwMCBuIAowMDAwMDAzODc0IDAwMDAwIG4gCjAwMDAwMDE4NDUgMDAwMDAgbiAKMDAwMDAwMjEzMSAwMDAwMCBuIAowMDAwMDA2MjgwIDAwMDAwIG4gCjAwMDAwMDYwODAgMDAwMDAgbiAKMDAwMDAwNTcwNSAwMDAwMCBuIAowMDAwMDA3MzMzIDAwMDAwIG4gCjAwMDAwMDM5MTYgMDAwMDAgbiAKMDAwMDAwNDA1OSAwMDAwMCBuIAowMDAwMDA0MTk4IDAwMDAwIG4gCjAwMDAwMDQ1MTggMDAwMDAgbiAKMDAwMDAwNDY4OCAwMDAwMCBuIAowMDAwMDA0ODQwIDAwMDAwIG4gCjAwMDAwMDQ5NjEgMDAwMDAgbiAKMDAwMDAwNTEwMSAwMDAwMCBuIAowMDAwMDA1NDIyIDAwMDAwIG4gCjAwMDAwMDgwMzggMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzMiAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzMgPj4Kc3RhcnR4cmVmCjgxOTIKJSVFT0YK\n",
"image/svg+xml": [
"\n",
"\n",
"\n",
"