{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Random Signals and LTI-Systems\n", "\n", "*This jupyter notebook is part of a [collection of notebooks](../index.ipynb) on various topics of Digital Signal Processing. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear Prediction\n", "\n", "In general, [predictive modeling](https://en.wikipedia.org/wiki/Predictive_modelling) aims at predicting outcomes using (statistical) models of the underlying processes. When applied to discrete-time signals, it refers to predicting future values from past ones. Different signal models are used for this purpose. Forward [linear prediction](https://en.wikipedia.org/wiki/Linear_prediction) aims at predicting the actual value $x[k]$ of a discrete random signal by a linear combination of its past values. It is frequently applied in lossless and lossy coding of signals. For instance, [linear predictive coding](https://en.wikipedia.org/wiki/Linear_predictive_coding) (LPC) is a major building block of many [speech coding](https://en.wikipedia.org/wiki/Speech_coding) and speech synthesis techniques." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Theory\n", "\n", "It is assumed that $x[k]$ is a real-valued discrete-time random signal. The prediction $\\hat{x}[k]$ of the current sample $x[k]$ is computed from a weighted superposition of the past $N$ samples\n", "\n", "\\begin{equation}\n", "\\hat{x}[k] = \\sum_{\\kappa = 1}^{N} h[\\kappa, k] \\, x[k - \\kappa]\n", "\\end{equation}\n", "\n", "where $N$ denotes the order of the predictor and $h[\\kappa, k]$ the weights of the past $N$ samples $x[k - \\kappa]$ at time-instant $k$. The weights might differ for different time-instants. This constitutes a [moving average](https://en.wikipedia.org/wiki/Moving-average_model) (MA) model or a linear filter with finite impulse response (FIR). Therefore the weights $h[\\kappa, k]$ can be interpreted as the filter coefficients of a time-variant non-recursive FIR filter.\n", "\n", "It is beneficial to express above sum as an inner product of vectors. Combining the $N$ filter coefficients and the samples of the signal into the $N \\times 1$ vectors (i.e. column vectors)\n", "\n", "\\begin{align}\n", "\\mathbf{x}[k] &= \\left[ x[k], x[k-1], \\dots, x[k-N+1] \\right]^T \\\\\n", "\\mathbf{h}[k] &= \\left[ h[1, k], h[2, k], \\dots, h[N, k] \\right]^T\n", "\\end{align}\n", "\n", "yields\n", "\n", "\\begin{equation}\n", "\\hat{x}[k] = \\mathbf{h}^T[k] \\, \\mathbf{x}[k-1]\n", "\\end{equation}\n", "\n", "for the above sum equation.\n", "\n", "The aim of linear prediction is to determine the filter coefficients such that the predicted signal $\\hat{x}[k]$ matches the signal $x[k]$ as close as possible. In order to quantify the deviation between the signal $x[k]$ and its predicted value $\\hat{x}[k]$ at time-instance $k$, the error signal\n", "\n", "\\begin{align}\n", "e[k] &= x[k] - \\hat{x}[k] \\\\\n", "&= x[k] - \\mathbf{h}^T[k] \\, \\mathbf{x}[k-1]\n", "\\end{align}\n", "\n", "is introduced. The error $e[k]$ equals zero, if the signal $x[k]$ is perfectly predicted. In general, this cannot be achieved by a finite predictor order $N$. The problem of determining suitable filter coefficients could be approached by directly minimizing the (average) error. However, this constitutes a non-convex optimization problem. Instead, the quadratic average of the error $e[k]$ is typically used. This measure is known as [*mean squared error*](https://en.wikipedia.org/wiki/Mean_squared_error) (MSE). It is defined as\n", "\n", "\\begin{align}\n", "J &= E \\left\\{ | e[k] |^2 \\right\\} \\\\\n", "&= E \\left\\{ | x[k] - \\mathbf{h}^T[k] \\, \\mathbf{x}[k-1] |^2 \\right\\}\n", "\\end{align}\n", "\n", "Above equation is referred to as [*cost function*](https://en.wikipedia.org/wiki/Loss_function) $J$ of the optimization problem. We aim at minimizing the cost function, hence minimizing the MSE between the signal $x[k]$ and its prediction $\\hat{x}[k]$. The solution of this [convex optimization](https://en.wikipedia.org/wiki/Convex_optimization) problem is referred to as [minimum mean squared error](https://en.wikipedia.org/wiki/Minimum_mean_square_error) (MMSE) solution. Minimizing the cost function is achieved by calculating its gradient with respect to the filter coefficients [[Haykin](../index.ipynb#Literature)] using results from [matrix calculus](https://en.wikipedia.org/wiki/Matrix_calculus)\n", "\n", "\\begin{align}\n", "\\nabla_\\mathbf{h} J &= -2 E \\left\\{ x[k-1] (x[k] - \\mathbf{h}^T[k] \\mathbf{x}[k-1]) \\right\\} \\\\\n", "&= - 2 \\mathbf{r}[k] + 2 \\mathbf{R}[k-1] \\mathbf{h}[k]\n", "\\end{align}\n", "\n", "where\n", "\n", "\\begin{align}\n", "\\mathbf{R}[k] &= E \\{ \\mathbf{x}[k] \\mathbf{x}^T[k] \\} \\\\\n", "\\mathbf{r}[k] &= E \\{ \\mathbf{x}[k-1] x[k] \\}\n", "\\end{align}\n", "\n", "denote the $N \\times N$ auto-correlation matrix and $N \\times 1$ cross-correlation vector, respectively. The elements of the auto-correlation matrix $\\mathbf{R}[k]$ can be interpreted by expanding the outer product $\\mathbf{x}[k] \\mathbf{x}^T[k]$ and using the definition of the auto-correlation function (ACF)\n", "\n", "\\begin{equation}\n", "\\mathbf{R}[k] = \\left[\n", "\\begin{matrix}\n", "\\varphi_{xx}[k,k] & \\varphi_{xx}[k,k-1] & \\dots & \\varphi_{xx}[k,k-N+1] \\\\\n", "\\varphi_{xx}[k-1,k] & \\varphi_{xx}[k-1,k-1] & \\dots & \\varphi_{xx}[k-1,k-N+1] \\\\\n", "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n", "\\varphi_{xx}[k-N+1,k] & \\varphi_{xx}[k-N+1,k-1] & \\dots & \\varphi_{xx}[k-N+1,k-N+1]\n", "\\end{matrix}\n", "\\right]\n", "\\end{equation}\n", "\n", "The matrix is composed from the values of the ACF $\\varphi_{xx}[k_1, k_2]$ for all combinations of time indexes. It is symmetric with respect to its main diagonal. The elements on the main diagonal constitute the quadratic means for the respective time indexes. The elements of the cross-correlation vector $\\mathbf{r}[k]$ are given as\n", "\n", "\\begin{equation}\n", "\\mathbf{r}[k] = \\left[\n", "\\begin{matrix}\n", "\\varphi_{xx}[k-1,k] \\\\\n", "\\varphi_{xx}[k-2,k] \\\\\n", "\\vdots \\\\\n", "\\varphi_{xx}[k-N,k]\n", "\\end{matrix}\n", "\\right]\n", "\\end{equation}\n", "\n", "As the MMSE solution constitutes a convex optimization problem, the minimum of the cost function is found by setting its gradient to zero, $\\nabla_\\mathbf{h} J = 0$. Rearranging terms this results in the *Wiener-Hopf* equation\n", "\n", "\\begin{equation}\n", "\\mathbf{R}[k-1] \\mathbf{h}[k] = \\mathbf{r}[k] \n", "\\end{equation}\n", "\n", "If $\\mathbf{R}[k-1]$ has full rank (which should hold due to the random signal assumption), the optimum filter coefficients in the MMSE sense are given as\n", "\n", "\\begin{equation}\n", "\\mathbf{h}[k] = \\mathbf{R}^{-1}[k-1] \\mathbf{r}[k], \n", "\\end{equation}\n", "\n", "i.e. solving the Wiener-Hopf equation by direct matrix inverse.\n", "\n", "Note that various alternative solutions to the Wiener-Hopf equation have been developed which avoid the direct inversion of the auto-correlation matrix. For instance the [least-mean squares (LMS) filter](https://en.wikipedia.org/wiki/Least_mean_squares_filter) which uses steepest gradient descent to solve for $\\mathbf{h}[k]$. This is also known as *Widrow-Hopf* solution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example - Linear Prediction of a Speech Signal\n", "\n", "In the following example, the principle of forward linear prediction is applied to the recording of a speech signal. The recording contains the stationary part of the vocal 'o'. This constitutes a random signal which can be considered reasonably well as wide-sense stationary (WSS). It follows from the properties of the ACF that\n", "\n", "\\begin{align}\n", "\\mathbf{R}[k] &= \\mathbf{R} \\\\\n", "\\mathbf{r}[k] &= \\mathbf{r} \\\\\n", "\\mathbf{h}[k] &= \\mathbf{h} = \\left[ h[1], h[2], \\dots, h[N] \\right]^T\n", "\\end{align}\n", "\n", "where $h[k]$ denote the time-invariant weights of the predictor. As we only have access to one recorded instance of the vocal, we inherently assume wide-sense ergodicity. The expectations are computed by averaging with respect to time." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Computation of prediction filter\n", "\n", "First the signal is loaded, conditioned and truncated" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.io import wavfile\n", "\n", "L = 32768 # total number of samples of signal\n", "N = 8 # order of predictor (number of FIR coefficients)\n", "\n", "# read and truncate audio file\n", "fs, x = wavfile.read(\"../data/vocal_o_8k.wav\")\n", "x = np.asarray(x, dtype=float) / 2**15 # 16 Bit integer -> float\n", "x = x[:L]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The auto-correlation matrix and the cross-correlation vector are estimated by averaging with respect to time. For instance\n", "\n", "\\begin{equation}\n", "\\mathbf{R} \\approx \\frac{1}{L-N+1} \\sum_{k = N}^{L} \\mathbf{x}[k-1] \\mathbf{x}^T[k-1]\n", "\\end{equation}\n", "\n", "where $L$ denotes the total number of samples of $x[k]$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "R = np.zeros(shape=(N, N))\n", "r = np.zeros(shape=(N, 1))\n", "\n", "for k in np.arange(N, L):\n", " xk = np.expand_dims(np.flip(x[k - N : k]), 1)\n", " R += 1 / (L + 2 - N) * xk * xk.T\n", " r += 1 / (L + 2 - N) * xk * x[k]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's inspect the estimated auto-correlation matrix by plotting its values within a surface plot" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/pdf": "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MDAgMzQ4IDQ1NiA1MjEgODM4IDY5NgoxMDAyIDg3MiAzMDYgNDU3IDQ1NyA1MjMgODM4IDM4MCA0MTUgMzgwIDM2NSA2OTYgNjk2IDY5NiA2OTYgNjk2IDY5NiA2OTYKNjk2IDY5NiA2OTYgNDAwIDQwMCA4MzggODM4IDgzOCA1ODAgMTAwMCA3NzQgNzYyIDczNCA4MzAgNjgzIDY4MyA4MjEgODM3CjM3MiAzNzIgNzc1IDYzNyA5OTUgODM3IDg1MCA3MzMgODUwIDc3MCA3MjAgNjgyIDgxMiA3NzQgMTEwMyA3NzEgNzI0IDcyNQo0NTcgMzY1IDQ1NyA4MzggNTAwIDUwMCA2NzUgNzE2IDU5MyA3MTYgNjc4IDQzNSA3MTYgNzEyIDM0MyAzNDMgNjY1IDM0MwoxMDQyIDcxMiA2ODcgNzE2IDcxNiA0OTMgNTk1IDQ3OCA3MTIgNjUyIDkyNCA2NDUgNjUyIDU4MiA3MTIgMzY1IDcxMiA4MzgKNjAwIDY5NiA2MDAgMzgwIDQzNSA2NTcgMTAwMCA1MDAgNTAwIDUwMCAxNDQwIDcyMCA0MTIgMTE2NyA2MDAgNzI1IDYwMCA2MDAKMzgwIDM4MCA2NTcgNjU3IDYzOSA1MDAgMTAwMCA1MDAgMTAwMCA1OTUgNDEyIDEwOTQgNjAwIDU4MiA3MjQgMzQ4IDQ1NiA2OTYKNjk2IDYzNiA2OTYgMzY1IDUwMCA1MDAgMTAwMCA1NjQgNjQ2IDgzOCA0MTUgMTAwMCA1MDAgNTAwIDgzOCA0MzggNDM4IDUwMAo3MzYgNjM2IDM4MCA1MDAgNDM4IDU2NCA2NDYgMTAzNSAxMDM1IDEwMzUgNTgwIDc3NCA3NzQgNzc0IDc3NCA3NzQgNzc0IDEwODUKNzM0IDY4MyA2ODMgNjgzIDY4MyAzNzIgMzcyIDM3MiAzNzIgODM4IDgzNyA4NTAgODUwIDg1MCA4NTAgODUwIDgzOCA4NTAgODEyCjgxMiA4MTIgODEyIDcyNCA3MzggNzE5IDY3NSA2NzUgNjc1IDY3NSA2NzUgNjc1IDEwNDggNTkzIDY3OCA2NzggNjc4IDY3OAozNDMgMzQzIDM0MyAzNDMgNjg3IDcxMiA2ODcgNjg3IDY4NyA2ODcgNjg3IDgzOCA2ODcgNzEyIDcxMiA3MTIg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TmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxOSAwIFIgPj4KZW5kb2JqCjIwIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTkgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjIgMCBvYmoKPDwgL0UgMjMgMCBSIC9hIDI0IDAgUiAvYyAyNSAwIFIgL2UgMjYgMCBSIC9mIDI3IDAgUiAvZml2ZSAyOCAwIFIKL2ZvdXIgMjkgMCBSIC9oIDMwIDAgUiAvaHlwaGVuIDMxIDAgUiAvaSAzMiAwIFIgL2wgMzMgMCBSIC9tIDM0IDAgUgovbiAzNSAwIFIgL28gMzYgMCBSIC9vbmUgMzcgMCBSIC9wIDM4IDAgUiAvcGVyaW9kIDM5IDAgUiAvciA0MCAwIFIKL3MgNDEgMCBSIC9zZXZlbiA0MiAwIFIgL3NpeCA0MyAwIFIgL3NwYWNlIDQ0IDAgUiAvdCA0NSAwIFIgL3RocmVlIDQ2IDAgUgovdHdvIDQ3IDAgUiAvdSA0OCAwIFIgL3ggNDkgMCBSIC96ZXJvIDUwIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjEgMCBSIC9GMiAxNiAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5k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MDAxNzMwIDAwMDAwIG4gCjAwMDAwMTI2ODkgMDAwMDAgbiAKMDAwMDAxNDE4OSAwMDAwMCBuIAowMDAwMDAyNTY0IDAwMDAwIG4gCjAwMDAwMDIzNTkgMDAwMDAgbiAKMDAwMDAwMjA1MCAwMDAwMCBuIAowMDAwMDAzNjI1IDAwMDAwIG4gCjAwMDAwMDE3NTEgMDAwMDAgbiAKMDAwMDAxMTA3MCAwMDAwMCBuIAowMDAwMDEwODcwIDAwMDAwIG4gCjAwMDAwMTA0MTggMDAwMDAgbiAKMDAwMDAxMjEyMyAwMDAwMCBuIAowMDAwMDAzNjU3IDAwMDAwIG4gCjAwMDAwMDM4MDggMDAwMDAgbiAKMDAwMDAwNDE4NSAwMDAwMCBuIAowMDAwMDA0NDg4IDAwMDAwIG4gCjAwMDAwMDQ4MDYgMDAwMDAgbiAKMDAwMDAwNTAxMiAwMDAwMCBuIAowMDAwMDA1MzMyIDAwMDAwIG4gCjAwMDAwMDU0OTQgMDAwMDAgbiAKMDAwMDAwNTczMCAwMDAwMCBuIAowMDAwMDA1ODU0IDAwMDAwIG4gCjAwMDAwMDU5OTQgMDAwMDAgbiAKMDAwMDAwNjExMSAwMDAwMCBuIAowMDAwMDA2NDM5IDAwMDAwIG4gCjAwMDAwMDY2NzMgMDAwMDAgbiAKMDAwMDAwNjk2MCAwMDAwMCBuIAowMDAwMDA3MTEyIDAwMDAwIG4gCjAwMDAwMDc0MjEgMDAwMDAgbiAKMDAwMDAwNzU0MiAwMDAwMCBuIAowMDAwMDA3NzcyIDAwMDAwIG4gCjAwMDAwMDgxNzcgMDAwMDAgbiAKMDAwMDAwODMxNyAwMDAwMCBuIAowMDAwMDA4NzA3IDAwMDAwIG4gCjAwMDAwMDg3OTYgMDAwMDAgbiAKMDAwMDAwOTAwMCAwMDAwMCBuIAowMDAwMDA5NDExIDAwMDAwIG4gCjAwMDAwMDk3MzIgMDAwMDAgbiAKMDAwMDAwOTk3NiAwMDAwMCBuIAowMDAwMDEwMTM1IDAwMDAwIG4gCjAwMDAwMTQxNjggMDAwMDAgbiAKMDAwMDAxNDgyOSAwMDAwMCBuIAowMDAwMDE0OTA5IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNTMgMCBSIC9Sb290IDEgMCBSIC9TaXplIDU0ID4+CnN0YXJ0eHJlZgoxNTA2NgolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:50.095911\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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=(3, 3))\n", "plt.matshow(R)\n", "plt.title(r\"Estimate of auto-correlation matrix $\\mathbf{R}$\")\n", "plt.colorbar(fraction=0.045)\n", "plt.xlabel(\"sample shift\")\n", "plt.ylabel(\"sample shift\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As expected, the elements on the main diagonal have the largest values. The values decay with an increasing distance of the minor diagonals. Hence, the statistical dependencies between samples at two different time instants of the signal $x[k]$ decrease with an increasing distance between the samples. These statistical dependencies are exploited for the prediction of the current signal value from past ones.\n", "\n", "Now the filter coefficients are computed and plotted." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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Zhi49Dgi6PQ9/zP+P5wOTjwKZW5kc3RyZWFtCmVuZG9iagoxOCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDg3ID4+CnN0cmVhbQp4nDWNwQ3AMAgD/5nCI8QQINmn6qvd/1tI1I99soyxWOhQS3EKwjsuNk7d+DaJQ09mAWUkjWWwUVQnh8QnZFqSsRazxb6dERCvDsV2osf+J0+7P7hOGcQKZW5kc3RyZWFtCmVuZG9iagoxNSAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE2IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTA0IC9oIDEwNyAvayBdIC9UeXBlIC9FbmNvZGluZyA+PiAvRmlyc3RDaGFyIDAKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTQgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMyAwIFIgPj4KZW5kb2JqCjE0IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMyAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNiAwIG9iago8PCAvaCAxNyAwIFIg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UiA+PgplbmRvYmoKMjAgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxOSAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMiAwIG9iago8PCAvZml2ZSAyMyAwIFIgL2ZvdXIgMjQgMCBSIC9vbmUgMjYgMCBSIC9zZXZlbiAyNyAwIFIgL3NpeCAyOCAwIFIKL3RocmVlIDI5IDAgUiAvdHdvIDMwIDAgUiAvemVybyAzMSAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDIxIDAgUiAvRjIgMTUgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8PCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9GMS1EZWphVnVTYW5zLW1pbnVzIDI1IDAgUiAvTTAgMTIgMCBSID4+CmVuZG9iagoxMiAwIG9iago8PCAvQkJveCBbIC04IC04IDggOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxIC9TdWJ0eXBlIC9Gb3JtCi9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nG2QQQ6EIAxF9z1FL/BJS0Vl69JruJlM4v23A3FATN000L48flH+kvBOpcD4JAlLTrPketOQ0rpMjBjm1bIox6BRLdbOdTioz9BwY3SLsRSm1NboeKOb6Tbekz/6sFkhRj8cDq+EexZDJlwpMQaH3wsv28P/EZ5e1MAfoo1+Y1pD/QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjMyIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMDEyMDcxMzUyNTArMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjEpID4+CmVuZG9iagp4cmVmCjAgMzMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDgxODggMDAwMDAgbiAKMDAwMDAwNzY5MCAwMDAwMCBuIAowMDAwMDA3NzMzIDAwMDAwIG4gCjAwMDAwMDc4MzIgMDAwMDAgbiAKMDAwMDAwNzg1MyAwMDAwMCBuIAowMDAwMDA3ODc0IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5OCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDE1MjggMDAwMDAgbiAKMDAwMDAwNzkzNCAwMDAwMCBuIAowMDAwMDAyNTI1IDAwMDAwIG4gCjAwMDAwMDIzMTcgMDAwMDAgbiAKMDAwMDAwMTk5NCAwMDAwMCBuIAowMDAwMDAzNTc4IDAwMDAwIG4gCjAwMDAwMDE1NDkgMDAwMDAgbiAKMDAwMDAwMTgzNSAwMDAwMCBuIAowMDAwMDA2NTEyIDAwMDAwIG4gCjAwMDAwMDYzMTIgMDAwMDAgbiAKMDAwMDAwNTk2OSAwMDAwMCBuIAowMDAwMDA3NTY1IDAwMDAwIG4gCjAwMDAwMDM2MjAgMDAwMDAgbiAKMDAwMDAwMzk0MCAwMDAwMCBuIAowMDAwMDA0MTAyIDAwMDAwIG4gCjAwMDAwMDQyNzIgMDAwMDAgbiAKMDAwMDAwNDQyNCAwMDAwMCBuIAowMDAwMDA0NTY0IDAwMDAwIG4gCjAwMDAwMDQ5NTQgMDAwMDAgbiAKMDAwMDAwNTM2NSAwMDAwMCBuIAowMDAwMDA1Njg2IDAwMDAwIG4gCjAwMDAwMDgyNDggMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzMiAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzMgPj4Kc3RhcnR4cmVmCjg0MDUKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:50.461392\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "h = np.linalg.inv(R) @ r\n", "h = np.squeeze(h)\n", "\n", "plt.figure(figsize=(8, 3))\n", "plt.stem(h, basefmt=\"C0:\")\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"$h_k$\")\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Forward prediction\n", "\n", "The value of the signal $x[k]$ at time-instant $k$ is predicted from its past $N$ values by evaluating the equation given above. This essentially constitutes a linear convolution $\\hat{x}[k] = x[k] \\ast h_{\\mathrm{fp}}[k]$ with the forward prediction filter\n", "\n", "\\begin{equation}\n", "h_{\\mathrm{fp}}[k] = \\begin{cases} 0 & \\text{for } k=0 \\\\ h[k] & \\text{for } 0 < k < N \\end{cases}\n", "\\end{equation}\n", "\n", "In order to evaluate the predictor, the predicted signal $\\hat{x}[k]$ is computed for all time instants $k$ and plotted in comparison with the signal $x[k]$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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PCAvRGlmZmVyZW5jZXMgWyAxMDcgL2sgMTIwIC94IF0gL1R5cGUgL0VuY29kaW5nID4+IC9GaXJzdENoYXIgMAovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250RGVzY3JpcHRvciAxMyAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDEyIDAgUiA+PgplbmRvYmoKMTMgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDk2Ci9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL0l0YWxpY0FuZ2xlIDAgL01heFdpZHRoIDEzNTAgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjEyIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNTAgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyOCA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTcgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxNyA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA4CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5OTUgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjE1IDAgb2JqCjw8IC9rIDE2IDAgUiAveCAxNyAwIFIgPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzA0ID4+CnN0cmVhbQp4nD2SO5LDMAxDe52CF8iM+JPk82Qnlff+7T4yyVaASYkAKC91mbKmPCBpJgn/0eHhYjvld9iezczAtUQvE8spz6ErxNxF+bKZjbqyOsWqwzCdW/SonIuGTZOa5ypLGbcLnsO1ieeWfcQPNzSoB3WNS8IN3dVoWQrNcHX/O71H2Xc1PBebVOrUF48XURXm+SFPoofpSuJ8PCghXHswRhYS5FPRQI6zXK3yXkL2DrcassJBaknnsyc82HV6Ty5uF80QD2S5VPhOUezt0DO+7EoJPRK24VjufTuasekamzjsfu9G1sqMrmghfshXJ+slYNxTJkUSZE62WG6L1Z7uoSimc4ZzGSDq2YqGUuZiV6t/DDtvLC/ZLMiUzAsyRqdNnjh4yH6NmvR5led4/QFs83M7CmVuZHN0cmVhbQplbmRvYmoKMjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA3MSA+PgpzdHJlYW0KeJwztjRQMFCwMFPQNTQ2VDCyNFYwNzNQSDHkAgqBWLlcMLEcMMvMEsQyNDdDYumaGUJlkVgg43K4YAbnwMzL4UoDAPG0FiMKZW5kc3RyZWFtCmVuZG9iagoyNCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDY3ID4+CnN0cmVhbQp4nDO2NFAwULA0V9A1NDZUMDYwUTA3M1BIMeSCMXPBLLBsDhdMHYRlBmIYGZogscyAxoEl4QyQGTlw03K40gDOgxXTCmVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyMzAgPj4Kc3RyZWFtCnicNVFJbsMwDLzrFfOBAOIuv8dBT+3/rx3SCWBgaEuczREbGxF4icHPQeTGW9aMmvibyV3xuzwVHgm3gidRBF6Ge9kJLm8Yl/04zHzwXlo5kxpPMiAX2fTwRMhgl0DowOwa1GGbaSf6hoTPjkg1G1lOX0vQS6sQKE/ZfqcLSrSt6s/tsy607WtPONntqSeVTyCeW7ICl41XTBZjGfRE5S7F9EGqs4WehPKifA6y+aghEl2inIEnBgejQDuw57afiVeFoHV1n7aNoRopHU//NjQ1SSLkEyWc2dK4W/j+nnv9/AOmVFOfCmVuZHN0cmVhbQplbmRvYmoKMjYgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyMjcgPj4Kc3RyZWFtCnicNU87sgMhDOs5hS6QGYxtYM+zmVQv92+fZLINEv5I8vRERyZe5sgIrNnxthYZiBn4FlPxrz3tw4TqPbiHCOXiQphhJJw167ibp+PFv13lM9bBuw2+YpYXBLYwk/WVxZnLdsFYGidxTrIbY9dEbGNd6+kU1hFMKAMhne0wJcgcFSl9sqOMOTpO5InnYqrFLr/vYX3BpjGiwhxXBU/QZFCWPe8moB0X9N/Vjd9JNIteAjKRYGGdJObOWU741WtHx1GLIjEnpBnkMhHSnK5iCqEJxTo7CioVBZfqc8rdPv9oXVtNCmVuZHN0cmVhbQplbmRvYmoKMjcgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyNDUgPj4Kc3RyZWFtCnicRVC7jUMxDOs9BRcIYP0se553SJXbvz1KRnCFIVo/kloSmIjASwyxlG/iR0ZBPQu/F4XiM8TPF4VBzoSkQJz1GRCZeIbaRm7odnDOvMMzjDkCF8VacKbTmfZc2OScBycQzm2U8YxCuklUFXFUn3FM8aqyz43XgaW1bLPTkewhjYRLSSUml35TKv+0KVsq6NpFE7BI5IGTTTThLD9DkmLMoJRR9zC1jvRxspFHddDJ2Zw5LZnZ7qftTHwPWCaZUeUpnecyPiep81xOfe6zHdHkoqVV+5z93pGW8iK126HV6VclUZmN1aeQuDz/jJ/x/gOOoFk+CmVuZHN0cmVhbQplbmRvYmoKMjggMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyNDcgPj4Kc3RyZWFtCnicTVG7bUQxDOvfFFzgAOtreZ4LUl32b0PJCJDCIKEvKaclFvbGSwzhB1sPvuSRVUN/Hj8x7DMsPcnk1D/muclUFL4VqpuYUBdi4f1oBLwWdC8iK8oH349lDHPO9+CjEJdgJjRgrG9JJhfVvDNkwomhjsNBm1QYd00ULK4VzTPI7VY3sjqzIGx4JRPixgBEBNkXkM1go4yxlZDFch6oCpIFWmDX6RtRi4IrlNYJdKLWxLrM4Kvn9nY3Qy/y4Ki6eH0M60uwwuileyx8rkIfzPRMO3dJI73wphMRZg8FUpmdkZU6PWJ9t0D/n2Ur+PvJz/P9CxUoXCoKZW5kc3RyZWFtCmVuZG9iagoyOSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDkwID4+CnN0cmVhbQp4nE2NQRLAIAgD77wiT1BE0P90etL/X6vUDr3ATgKJFkWC9DVqSzDuuDIVa1ApmJSXwFUwXAva7qLK/jJJTJ2G03u3A4Oy8XGD0kn79nF6AKv9egbdD9IcIlgKZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMzOCA+PgpzdHJlYW0KeJxFUktyxTAI2+cUXCAz5mfj87xOV+n9t5VwOt089AwICTI9ZUim3DaWZITkHPKlV2SI1ZCfRo5ExBDfKaHArvK5vJbEXMhuiUrxoR0/l6U3Ms2u0Kq3R6c2i0Y1KyPnIEOEelbozO5R22TD63Yh6TpTFodwLP9DBbKUdcoplARtQd/YI+hvFjwR3Aaz5nKzuUxu9b/uWwue1zpbsW0HQAmWc95gBgDEwwnaAMTc2t4WKSgfVbqKScKt8lwnO1C20Kp0vDeAGQcYOWDDkq0O12hvAMM+D/SiRsX2FaCoLCD+ztlmwd4xyUiwJ+YGTj1xOsWRcEk4xgJAiq3iFLrxHdjiLxeuiJrwCXU6ZU28wp7a4sdCkwjvUnEC8CIbbl0dRbVsT+cJtD8qkjNipB7E0QmR1JLOERSXBvXQGvu4iRmvjcTmnr7dP8I5n+v7Fxa4g+AKZW5kc3RyZWFtCmVuZG9iagozMSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDY4ID4+CnN0cmVhbQp4nDMyt1AwULA0ARKGFiYK5mYGCimGXEC+qYm5Qi4XSAzEygGzDIC0JZyCiFtCNEGUglgQpWYmZhBJOAMilwYAybQV5QplbmRzdHJlYW0KZW5kb2JqCjMyIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggNDUgPj4Kc3RyZWFtCnicMzK3UDBQsDQBEoYWJgrmZgYKKYZclhBWLhdMLAfMAtGWcAoingYAn30MtQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8IC9CQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM3Ci9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nOMyNDBTMDY1VcjlMjc2ArNywCwjcyMgCySLYEFk0wABXwoKCmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNjEgPj4Kc3RyZWFtCnicRZBLEsMgDEP3nEJH8EcGfJ50ukrvv60hTbOAp7FABncnBKm1BRPRBS9tS7oLPlsJzsZ46DZuNRLkBHWAVqTjaJRSfbnFaZV08Wg2cysLrRMdZg56lKMZoBA6Fd7touRypu7O+Udw9V/1R7HunM3EwGTlDoRm9SnufJsdUV3dZH/SY27Wa38V9qqwtKyl5YTbzl0zoATuqRzt/QWpczqECmVuZHN0cmVhbQplbmRvYmoKMzUgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA4MCA+PgpzdHJlYW0KeJxFjLsNwDAIRHumYAR+JmafKJWzfxsgStxwT7p7uDoSMlPeYYaHBJ4MLIZT8QaZo2A1uEZSjZ3so7BuX3WB5npTq/X3BypPdnZxPc3LGfQKZW5kc3RyZWFtCmVuZG9iagozNiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDIzNiA+PgpzdHJlYW0KeJxNUEtuRCEM23OKXOBJJCEBzkPVVef+27HDVO0qhhh/SA/pslUe61NidYns8qVNl8oyeRWo5U/b/1EMAm7/0MhBtLeMnWLmEtbFwiQ85TQjGyfXLB+PO08bZoXGxI3jnS4ZYJ8WATVblc2BOW06N0C6kBq3qrPeZFAMIupCzQeTLpyn0ZeIOZ6oYEp3JrWQG1w+1aEDcVq9Crlji5NvxBxZocBh0Exx1l8B1qjJslnIIEmGIc59o3uUCo2oynkrFcIPk6ER9YbVoAaVuYWiqeWS/B3aAjAFtox16QxKgaoAwd8qp32/ASSNXVMKZW5kc3RyZWFtCmVuZG9iagozNyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDQ5ID4+CnN0cmVhbQp4nDM2tFAwUDA0MAeSRoZAlpGJQoohF0gAxMzlggnmgFkGQBqiOAeuJocrDQDG6A0mCmVuZHN0cmVhbQplbmRvYmoKMzggMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNTcgPj4Kc3RyZWFtCnicRZC5EUMxCERzVUEJErAI6rHH0Xf/qRf5SrRvAC2HryVTqh8nIqbc12j0MHkOn00lVizYJraTGnIbFkFKMZh4TjGro7ehmYfU67ioqrh1ZpXTacvKxX/zaFczkz3CNeon8E3o+J88tKnoW6CvC5R9QLU4nUlQMX2vYoGjnHZ/IpwY4D4ZR5kpI3Fibgrs9xkAZr5XuMbjBd0BN3kKZW5kc3RyZWFtCmVuZG9iagozOSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMzMiA+PgpzdHJlYW0KeJwtUjmOJDEMy/0KfmAA6/Lxnh5M1Pv/dElVBQWqbMs85HLDRCV+LJDbUWvi10ZmoMLwr6vMhe9I28g6iGvIRVzJlsJnRCzkMcQ8xILv2/gZHvmszMmzB8Yv2fcZVuypCctCxosztMMqjsMqyLFg6yKqe3hTpMOpJNjji/8+xXMXgha+I2jAL/nnqyN4vqRF2j1m27RbD5ZpR5UUloPtac7L5EvrLFfH4/kg2d4VO0JqV4CiMHfGeS6OMm1lRGthZ4OkxsX25tiPpQRd6MZlpDgC+ZkqwgNKmsxsoiD+yOkhpzIQpq7pSie3URV36slcs7m8nUkyW/dFis0UzuvCmfV3mDKrzTt5lhOlTkX4GXu2BA2d4+rZa5mFRrc5wSslfDZ2enLyvZpZD8mpSEgV07oKTqPIFEvYlviaiprS1Mvw35f3GX//ATPifAEKZW5kc3RyZWFtCmVuZG9iago0MCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMxNyA+PgpzdHJlYW0KeJw1UktyQzEI279TcIHOmL99nnSyau6/rYQnK7AtQEIuL1nSS37UJdulw+RXH/clsUI+j+2azFLF9xazFM8tr0fPEbctCgRREz34MicVItTP1Og6eGGXPgOvEE4pFngHkwAGr+FfeJROg8A7GzLeEZORGhAkwZpLi01IlD1J/Cvl9aSVNHR+Jitz+XtyqRRqo8kIFSBYudgHpCspHiQTPYlIsnK9N1aI3pBXksdnJSYZEN0msU20wOPclbSEmZhCBeZYgNV0s7r6HExY47CE8SphFtWDTZ41qYRmtI5jZMN498JMiYWGwxJQm32VCaqXj9PcCSOmR0127cKyWzbvIUSj+TMslMHHKCQBh05jJArSsIARgTm9sIq95gs5FsCIZZ2aLAxtaCW7eo6FwNCcs6Vhxtee1/P+B0Vbe6MKZW5kc3RyZWFtCmVuZG9iago0MSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDE3ID4+CnN0cmVhbQp4nDM2tFAwgMMUQy4AGpQC7AplbmRzdHJlYW0KZW5kb2JqCjQyIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxID4+CnN0cmVhbQp4nEWPyw0EIQxD71ThEvIZPqmH1Z7Y/q/rMJpBQvhBIjvxMAis8/I20MXw0aLDN/421atjlSwfunpSVg/pkIe88hVQaTBRxIVZTB1DYc6YysiWMrcb4bZNg6xslVStg3Y8Bg+2p2WrCH6pbWHqLPEMwlVeuMcNP5BLrXe9Vb5/QlMwlwplbmRzdHJlYW0KZW5kb2JqCjQzIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzM4ID4+CnN0cmVhbQp4nDVSOa7dQAzrfQpdIIB2zZznBal+7t+GlF8KQ7RWipqOFpVp+WUhVS2TLr/tSW2JG/L3yQqJE5JXJdqlDJFQ+TyFVL9ny7y+1pwRIEuVCpOTksclC/4Ml94uHOdjaz+PI3c9emBVjIQSAcsUE6NrWTq7w5qN/DymAT/iEXKuWLccYxVIDbpx2hXvQ/N5yBogZpiWigpdVokWfkHxoEetffdYVFgg0e0cSXCMjVCRgHaB2kgMObMWu6gv+lmUmAl07Ysi7qLAEknMnGJdOvoPPnQsqL8248uvjkr6SCtrTNp3o0lpzCKTrpdFbzdvfT24QPMuyn9ezSBBU9YoaXzQqp1jKJoZZYV3HJoMNMcch8wTPIczEpT0fSh+X0smuiiRPw4NoX9fHqOMnAZvAXPRn7aKAxfx2WGvHGCF0sWa5H1AKhN6YPr/1/h5/vwDHLaAVAplbmRzdHJlYW0KZW5kb2JqCjQ0IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjQ4ID4+CnN0cmVhbQp4nC1ROZIDQQjL5xV6QnPT77HLkff/6QrKAYOGQyA6LXFQxk8Qlive8shVtOHvmRjBd8Gh38p1GxY5EBVI0hhUTahdvB69B3YcZgLzpDUsgxnrAz9jCjd6cXhMxtntdRk1BHvXa09mUDIrF3HJxAVTddjImcNPpowL7VzPDci5EdZlGKSblcaMhCNNIVJIoeomqTNBkASjq1GjjRzFfunLI51hVSNqDPtcS9vXcxPOGjQ7Fqs8OaVHV5zLycULKwf9vM3ARVQaqzwQEnC/20P9nOzkN97SubPF9Phec7K8MBVY8ea1G5BNtfg3L+L4PePr+fwDqKVbFgplbmRzdHJlYW0KZW5kb2JqCjQ1IDAgb2JqCjw8IC9CQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDcyCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nOPSNbIwVbAwMFDI5dI1MjQGM3O4dC2NFcwMzUAsQzNDGNPIxFLB3BjMNDY2h4maGJjCFUDNgqo1NYMYC2XmcKUBAJODFU4KZW5kc3RyZWFtCmVuZG9iago0NiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDIxMCA+PgpzdHJlYW0KeJw1UMsNQzEIu2cKFqgUAoFknla9df9rbdA7YRH/QljIlAh5qcnOKelLPjpMD7Yuv7EiC611JezKmiCeK++hmbKx0djiYHAaJl6AFjdg6GmNGjV04YKmLpVCgcUl8Jl8dXvovk8ZeGoZcnYEEUPJYAlquhZNWLQ8n5BOAeL/fsPuLeShkvPKnhv5G5zt8DuzbuEnanYi0XIVMtSzNMcYCBNFHjx5RaZw4rPWd9U0EtRmC06WAa5OP4wOAGAiXlmA7K5EOUvSjqWfb7zH9w9AAFO0CmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwgL0Jhc2VGb250IC9EZWphVnVTYW5zIC9DaGFyUHJvY3MgMjEgMCBSCi9FbmNvZGluZyA8PAovRGlmZmVyZW5jZXMgWyAzMiAvc3BhY2UgNDYgL3BlcmlvZCA0OCAvemVybyAvb25lIC90d28gL3RocmVlIC9mb3VyIC9maXZlIC9zaXggOTEKL2JyYWNrZXRsZWZ0IDkzIC9icmFja2V0cmlnaHQgOTcgL2EgOTkgL2MgL2QgL2UgMTAzIC9nIDEwNSAvaSAxMDggL2wgMTEwIC9uCjExMiAvcCAxMTQgL3IgL3MgL3QgXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDE5IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDE4IDAgUiA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxOCAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMSAwIG9iago8PCAvYSAyMiAwIFIgL2JyYWNrZXRsZWZ0IDIzIDAgUiAvYnJhY2tldHJpZ2h0IDI0IDAgUiAvYyAyNSAwIFIgL2QgMjYgMCBSCi9lIDI3IDAgUiAvZml2ZSAyOCAwIFIgL2ZvdXIgMjkgMCBSIC9nIDMwIDAgUiAvaSAzMSAwIFIgL2wgMzIgMCBSIC9uIDM0IDAgUgovb25lIDM1IDAgUiAvcCAzNiAwIFIgL3BlcmlvZCAzNyAwIFIgL3IgMzggMCBSIC9zIDM5IDAgUiAvc2l4IDQwIDAgUgovc3BhY2UgNDEgMCBSIC90IDQyIDAgUiAvdGhyZWUgNDMgMCBSIC90d28gNDQgMCBSIC96ZXJvIDQ2IDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjAgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EzIDw8IC9DQSAwLjggL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTQgPDwgL0NBIDAuOCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAwLjggPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0YxLURlamFWdVNhbnMtbWludXMgMzMgMCBSIC9GMS1EZWphVnVTYW5zLXVuaTAzMDIgNDUgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iago0NyAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjAxMjA3MTM1MjUwKzAyJzAwJykKL0NyZWF0b3IgKE1hdHBsb3RsaWIgdjMuMy4xLCBodHRwczovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKE1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgdjMuMy4xKSA+PgplbmRvYmoKeHJlZgowIDQ4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDE5MTY2IDAwMDAwIG4gCjAwMDAwMTg4MTkgMDAwMDAgbiAKMDAwMDAxODg2MiAwMDAwMCBuIAowMDAwMDE5MDQ1IDAwMDAwIG4gCjAwMDAwMTkwNjYgMDAwMDAgbiAKMDAwMDAxOTA4NyAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDA0MDAgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDA4NTg1IDAwMDAwIG4gCjAwMDAwMDk0NjAgMDAwMDAgbiAKMDAwMDAwOTI1MiAwMDAwMCBuIAowMDAwMDA4OTI5IDAwMDAwIG4gCjAwMDAwMTA1MTMgMDAwMDAgbiAKMDAwMDAwODYwNiAwMDAwMCBuIAowMDAwMDA4NzY1IDAwMDAwIG4gCjAwMDAwMTc0NjUgMDAwMDAgbiAKMDAwMDAxNzI2NSAwMDAwMCBuIAowMDAwMDE2ODA5IDAwMDAwIG4gCjAwMDAwMTg1MTggMDAwMDAgbiAKMDAwMDAxMDU1NSAwMDAwMCBuIAowMDAwMDEwOTMyIDAwMDAwIG4gCjAwMDAwMTEwNzUgMDAwMDAgbiAKMDAwMDAxMTIxNCAwMDAwMCBuIAowMDAwMDExNTE3IDAwMDAwIG4gCjAwMDAwMTE4MTcgMDAwMDAgbiAKMDAwMDAxMjEzNSAwMDAwMCBuIAowMDAwMDEyNDU1IDAwMDAwIG4gCjAwMDAwMTI2MTcgMDAwMDAgbiAKMDAwMDAxMzAyOCAwMDAwMCBuIAowMDAwMDEzMTY4IDAwMDAwIG4gCjAwMDAwMTMyODUgMDAwMDAgbiAKMDAwMDAxMzQ1NSAwMDAwMCBuIAowMDAwMDEzNjg5IDAwMDAwIG4gCjAwMDAwMTM4NDEgMDAwMDAgbiAKMDAwMDAxNDE1MCAwMDAwMCBuIAowMDAwMDE0MjcxIDAwMDAwIG4gCjAwMDAwMTQ1MDEgMDAwMDAgbiAKMDAwMDAxNDkwNiAwMDAwMCBuIAowMDAwMDE1Mjk2IDAwMDAwIG4gCjAwMDAwMTUzODUgMDAwMDAgbiAKMDAwMDAxNTU4OSAwMDAwMCBuIAowMDAwMDE2MDAwIDAwMDAwIG4gCjAwMDAwMTYzMjEgMDAwMDAgbiAKMDAwMDAxNjUyNiAwMDAwMCBuIAowMDAwMDE5MjI2IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNDcgMCBSIC9Sb290IDEgMCBSIC9TaXplIDQ4ID4+CnN0YXJ0eHJlZgoxOTM4MwolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:50.750195\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "hfp = np.concatenate(([0], h))\n", "xp = np.convolve(x, hfp)[:L]\n", "\n", "plt.figure(figsize=(8, 4))\n", "plt.plot(x, label=r\"signal $x[k]$\", linestyle=\"--\")\n", "plt.plot(xp, label=r\"predicted signal $\\hat{x}[k]$\", alpha=0.8)\n", "plt.xlabel(r\"$k$\")\n", "plt.axis([10000, 10500, -0.6, 0.6])\n", "plt.legend()\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As the difference between the actual signal and its prediction is quite low, the error $e[k]$ is computed and plotted for inspection. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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PIsdwZuc2C3o55CsQgYtNmHqLF2v8Dnnff1+ACo9fUYKZW5kc3RyZWFtCmVuZG9iagoxNyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDg3ID4+CnN0cmVhbQp4nDWNwQ3AMAgD/5nCI8QQINmn6qvd/1tI1I99soyxWOhQS3EKwjsuNk7d+DaJQ09mAWUkjWWwUVQnh8QnZFqSsRazxb6dERCvDsV2osf+J0+7P7hOGcQKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTAxIC9lIDEwNyAvayBdIC9UeXBlIC9FbmNvZGluZyA+PiAvRmlyc3RDaGFyIDAKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNSAwIG9i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b3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTggMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjEgMCBvYmoKPDwgL2JyYWNrZXRsZWZ0IDIyIDAgUiAvYnJhY2tldHJpZ2h0IDIzIDAgUiAvZml2ZSAyNCAwIFIgL2ZvdXIgMjUgMCBSCi9vbmUgMjcgMCBSIC9wZXJpb2QgMjggMCBSIC90aHJlZSAyOSAwIFIgL3R3byAzMCAwIFIgL3plcm8gMzEgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMCAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1taW51cyAyNiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjMyIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMDEyMDcxMzUyNTErMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjEpID4+CmVuZG9iagp4cmVmCjAgMzMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTIzNzMgMDAwMDAgbiAKMDAwMDAxMjE0MCAwMDAwMCBuIAowMDAwMDEyMTgzIDAwMDAwIG4gCjAwMDAwMTIyODIgMDAwMDAgbiAKMDAwMDAxMjMwMyAwMDAwMCBuIAowMDAwMDEyMzI0IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDU5MjkgMDAwMDAgbiAKMDAwMDAwNzA0MCAwMDAwMCBuIAowMDAwMDA2ODMyIDAwMDAwIG4gCjAwMDAwMDY1MDkgMDAwMDAgbiAKMDAwMDAwODA5MyAwMDAwMCBuIAowMDAwMDA1OTUwIDAwMDAwIG4gCjAwMDAwMDYzNTAgMDAwMDAgbiAKMDAwMDAxMDkzMiAwMDAwMCBuIAowMDAwMDEwNzMyIDAwMDAwIG4gCjAwMDAwMTAzNTcgMDAwMDAgbiAKMDAwMDAxMTk4NSAwMDAwMCBuIAowMDAwMDA4MTM1IDAwMDAwIG4gCjAwMDAwMDgyNzggMDAwMDAgbiAKMDAwMDAwODQxNyAwMDAwMCBuIAowMDAwMDA4NzM3IDAwMDAwIG4gCjAwMDAwMDg4OTkgMDAwMDAgbiAKMDAwMDAwOTA2OSAwMDAwMCBuIAowMDAwMDA5MjIxIDAwMDAwIG4gCjAwMDAwMDkzNDIgMDAwMDAgbiAKMDAwMDAwOTc1MyAwMDAwMCBuIAowMDAwMDEwMDc0IDAwMDAwIG4gCjAwMDAwMTI0MzMgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzMiAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzMgPj4Kc3RhcnR4cmVmCjEyNTkwCiUlRU9GCg==\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:51.119711\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "e = x - xp\n", "\n", "plt.figure(figsize=(8, 4))\n", "plt.plot(e)\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"$e[k]$\")\n", "plt.axis([10000, 10500, -0.015, 0.015])\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The amplitude of the error is much lower than the amplitude of the signal. This shows that the signal can be well predicted by the computed predictor. In order to quantify this, the variance of the signal and the error is computed as measure of their average power. Note, both signals are assumed to be zero-mean." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variance of signal 0.060221\n", "Variance of error 0.000011\n" ] } ], "source": [ "print(\"Variance of signal {:2.6f}\".format(np.var(x)))\n", "print(\"Variance of error {:2.6f}\".format(np.var(e)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Prediction from residual error\n", "\n", "The error signal may be rewritten as\n", "\n", "\\begin{align}\n", "e[k] &= x[k] - \\mathbf{h}^T \\, \\mathbf{x}[k-1] \\\\\n", "&= h_{\\mathrm{pe}}[k] \\ast x[k]\n", "\\end{align}\n", "\n", "where\n", "\n", "\\begin{equation}\n", "h_{\\mathrm{pe}}[k] = \\begin{cases} 1 & \\text{for } k=0 \\\\ - h[k] & \\text{for } 0 < k < N \\end{cases}\n", "\\end{equation}\n", "\n", "denotes the prediction-error filter. Taking the $z$-transform of the error signal yields\n", "\n", "\\begin{equation}\n", "E(z) = H_{\\mathrm{pe}}(z) \\cdot X(z)\n", "\\end{equation}\n", "\n", "where for instance $E(z) = \\mathcal{Z} \\{ e[k] \\}$. From this result it can be concluded that the signal $x[k]$ can be computed from the error signal $e[k]$ by inverse filtering with the prediction-error filter\n", "\n", "\\begin{equation}\n", "x[k] = \\underbrace{\\mathcal{Z}^{-1} \\left\\{ \\frac{1}{H_{\\mathrm{pe}}(z)} \\right\\}}_{h_{\\mathrm{pe}}^{-1}[k]} \\ast e[k]\n", "\\end{equation}\n", "\n", "The inverse of the prediction-error filter $h_{\\mathrm{pe}}^{-1}[k]$ constitutes an pole-only (recursive) filter as the prediction filter is a zero-only (non-recursive) filter. In the following, the signal $x[k]$ is computed from the error signal $e[k]$ and plotted." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4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amFWdVNhbnMgL0NoYXJQcm9jcyAyMSAwIFIKL0VuY29kaW5nIDw8Ci9EaWZmZXJlbmNlcyBbIDMyIC9zcGFjZSA0NiAvcGVyaW9kIDQ4IC96ZXJvIC9vbmUgL3R3byAvdGhyZWUgL2ZvdXIgL2ZpdmUgL3NpeCA5MQovYnJhY2tldGxlZnQgOTMgL2JyYWNrZXRyaWdodCA5NyAvYSA5OSAvYyAxMDEgL2UgL2YgL2cgL2ggL2kgMTA4IC9sIDExMCAvbgoxMTIgL3AgMTE0IC9yIC9zIC90IF0KL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250RGVzY3JpcHRvciAxOSAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxOCAwIFIgPj4KZW5kb2JqCjE5IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTggMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjEgMCBvYmoKPDwgL2EgMjIgMCBSIC9icmFja2V0bGVmdCAyMyAwIFIgL2JyYWNrZXRyaWdodCAyNCAwIFIgL2MgMjUgMCBSIC9lIDI2IDAgUgovZiAyNyAwIFIgL2ZpdmUgMjggMCBSIC9mb3VyIDI5IDAgUiAvZyAzMCAwIFIgL2ggMzEgMCBSIC9pIDMyIDAgUiAvbCAzMyAwIFIKL24gMzUgMCBSIC9vbmUgMzYgMCBSIC9wIDM3IDAgUiAvcGVyaW9kIDM4IDAgUiAvciAzOSAwIFIgL3MgNDAgMCBSCi9zaXggNDEgMCBSIC9zcGFjZSA0MiAwIFIgL3QgNDMgMCBSIC90aHJlZSA0NCAwIFIgL3R3byA0NSAwIFIgL3plcm8gNDYgMCBSCj4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMCAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1taW51cyAzNCAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjQ3IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMDEyMDcxMzUyNTErMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjEpID4+CmVuZG9iagp4cmVmCjAgNDgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTU3MjcgMDAwMDAgbiAKMDAwMDAxNTQ5NCAwMDAwMCBuIAowMDAwMDE1NTM3IDAwMDAwIG4gCjAwMDAwMTU2MzYgMDAwMDAgbiAKMDAwMDAxNTY1NyAwMDAwMCBuIAowMDAwMDE1Njc4IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDUzMTQgMDAwMDAgbiAKMDAwMDAwNjE4OSAwMDAwMCBuIAowMDAwMDA1OTgxIDAwMDAwIG4gCjAwMDAwMDU2NTggMDAwMDAgbiAKMDAwMDAwNzI0MiAwMDAwMCBuIAowMDAwMDA1MzM1IDAwMDAwIG4gCjAwMDAwMDU0OTQgMDAwMDAgbiAKMDAwMDAxNDEzMCAwMDAwMCBuIAowMDAwMDEzOTMwIDAwMDAwIG4gCjAwMDAwMTM0NzUgMDAwMDAgbiAKMDAwMDAxNTE4MyAwMDAwMCBuIAowMDAwMDA3Mjg0IDAwMDAwIG4gCjAwMDAwMDc2NjEgMDAwMDAgbiAKMDAwMDAwNzgwNCAwMDAwMCBuIAowMDAwMDA3OTQzIDAwMDAwIG4gCjAwMDAwMDgyNDYgMDAwMDAgbiAKMDAwMDAwODU2NCAwMDAwMCBuIAowMDAwMDA4NzcwIDAwMDAwIG4gCjAwMDAwMDkwOTAgMDAwMDAgbiAKMDAwMDAwOTI1MiAwMDAwMCBuIAowMDAwMDA5NjYzIDAwMDAwIG4gCjAwMDAwMDk4OTkgMDAwMDAgbiAKMDAwMDAxMDAzOSAwMDAwMCBuIAowMDAwMDEwMTU2IDAwMDAwIG4gCjAwMDAwMTAzMjYgMDAwMDAgbiAKMDAwMDAxMDU2MCAwMDAwMCBuIAowMDAwMDEwNzEyIDAwMDAwIG4gCjAwMDAwMTEwMjEgMDAwMDAgbiAKMDAwMDAxMTE0MiAwMDAwMCBuIAowMDAwMDExMzcyIDAwMDAwIG4gCjAwMDAwMTE3NzcgMDAwMDAgbiAKMDAwMDAxMjE2NyAwMDAwMCBuIAowMDAwMDEyMjU2IDAwMDAwIG4gCjAwMDAwMTI0NjAgMDAwMDAgbiAKMDAwMDAxMjg3MSAwMDAwMCBuIAowMDAwMDEzMTkyIDAwMDAwIG4gCjAwMDAwMTU3ODcgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyA0NyAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgNDggPj4Kc3RhcnR4cmVmCjE1OTQ0CiUlRU9GCg==\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:51.558769\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "from scipy.signal import lfilter\n", "\n", "hpe = np.concatenate(([1], -h))\n", "xe = lfilter([1], hpe, e)\n", "\n", "plt.figure(figsize=(8, 4))\n", "plt.plot(xe)\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"artifical speech signal $x[k]$\")\n", "plt.axis([10000, 10500, -0.6, 0.6])\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Application - Speech synthesis using an artificial glottal signal\n", "\n", "Linear prediction is used as [linear predictive coding](https://en.wikipedia.org/wiki/Linear_predictive_coding) (LPC) in the coding and synthesis of speech signals. The latter application is briefly presented in the sequel. It bases on the [source-filter model](https://en.wikipedia.org/wiki/Source%E2%80%93filter_model) of human speech production. Here speech production is modeled as a sound source filtered by a linear acoustic filter. In the case of vocals, this sound source are the [vocal cords](https://en.wikipedia.org/wiki/Vocal_cords) which generate the periodic glottal signal. The [vocal tract](https://en.wikipedia.org/wiki/Vocal_tract) may be interpreted as an acoustic filter. Vocals are articulated by changing the air flow through the vocal cords, their state as well as the configuration of the vocal tract. Due to its acoustical properties, the vocal tract can be represented as a pole-only filter.\n", "\n", "The basic idea of LPC-based speech synthesis is, that the inverse of the prediction-error filter is an pole-only filter. When interpreting the error signal $e[k]$ as glottal signal in the source-filter model, the inverse of the prediction-error filter can be used to generate the speech signal $x[k]$. A synthetic vocal may be generated by using a synthetic glottal signal. A simple model for the glottal signal is a mean-free periodic rectangular signal with a duty cycle of 1:10. The signal is generated and plotted for illustration." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTMgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5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NjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjIgMCBvYmoKPDwgL2EgMjMgMCBSIC9icmFja2V0bGVmdCAyNCAwIFIgL2JyYWNrZXRyaWdodCAyNSAwIFIgL2VpZ2h0IDI2IDAgUgovZml2ZSAyNyAwIFIgL2ZvdXIgMjggMCBSIC9nIDI5IDAgUiAvaSAzMCAwIFIgL2wgMzEgMCBSIC9uIDMzIDAgUiAvbyAzNCAwIFIKL29uZSAzNSAwIFIgL3BlcmlvZCAzNiAwIFIgL3MgMzcgMCBSIC9zaXggMzggMCBSIC9zcGFjZSAzOSAwIFIgL3QgNDAgMCBSCi90aHJlZSA0MSAwIFIgL3R3byA0MiAwIFIgL3plcm8gNDMgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMSAwIFIgL0YyIDE1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1taW51cyAzMiAwIFIgL00wIDEyIDAgUiA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL0JCb3ggWyAtOCAtOCA4IDggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDEzMSAvU3VidHlwZSAvRm9ybQovVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJxtkEEOhCAMRfc9RS/wSUtFZevSa7iZTOL9twNxQEzdNNC+PH5R/pLwTqXA+CQJS06z5HrTkNK6TIwY5tWyKMegUS3WznU4qM/QcGN0i7EUptTW6Hijm+k23pM/+rBZIUY/HA6vhHsWQyZcKTEGh98LL9vD/xGeXtTAH6KNfmNaQ/0KZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iago0NCAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjAxMjA3MTM1MjUxKzAyJzAwJykKL0NyZWF0b3IgKE1hdHBsb3RsaWIgdjMuMy4xLCBodHRwczovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKE1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgdjMuMy4xKSA+PgplbmRvYmoKeHJlZgowIDQ1CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDEyNTYzIDAwMDAwIG4gCjAwMDAwMTIwNjUgMDAwMDAgbiAKMDAwMDAxMjEwOCAwMDAwMCBuIAowMDAwMDEyMjA3IDAwMDAwIG4gCjAwMDAwMTIyMjggMDAwMDAgbiAKMDAwMDAxMjI0OSAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTMgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDAyNDcxIDAwMDAwIG4gCjAwMDAwMTIzMDkgMDAwMDAgbiAKMDAwMDAwMzY1NCAwMDAwMCBuIAowMDAwMDAzNDQ2IDAwMDAwIG4gCjAwMDAwMDMxMjMgMDAwMDAgbiAKMDAwMDAwNDcwNyAwMDAwMCBuIAowMDAwMDAyNDkyIDAwMDAwIG4gCjAwMDAwMDI5NjQgMDAwMDAgbiAKMDAwMDAxMDczNyAwMDAwMCBuIAowMDAwMDEwNTM3IDAwMDAwIG4gCjAwMDAwMTAwOTAgMDAwMDAgbiAKMDAwMDAxMTc5MCAwMDAwMCBuIAowMDAwMDA0NzQ5IDAwMDAwIG4gCjAwMDAwMDUxMjYgMDAwMDAgbiAKMDAwMDAwNTI2OSAwMDAwMCBuIAowMDAwMDA1NDA4IDAwMDAwIG4gCjAwMDAwMDU4NzMgMDAwMDAgbiAKMDAwMDAwNjE5MyAwMDAwMCBuIAowMDAwMDA2MzU1IDAwMDAwIG4gCjAwMDAwMDY3NjYgMDAwMDAgbiAKMDAwMDAwNjkwNiAwMDAwMCBuIAowMDAwMDA3MDIzIDAwMDAwIG4gCjAwMDAwMDcxOTMgMDAwMDAgbiAKMDAwMDAwNzQyNyAwMDAwMCBuIAowMDAwMDA3NzE0IDAwMDAwIG4gCjAwMDAwMDc4NjYgMDAwMDAgbiAKMDAwMDAwNzk4NyAwMDAwMCBuIAowMDAwMDA4MzkyIDAwMDAwIG4gCjAwMDAwMDg3ODIgMDAwMDAgbiAKMDAwMDAwODg3MSAwMDAwMCBuIAowMDAwMDA5MDc1IDAwMDAwIG4gCjAwMDAwMDk0ODYgMDAwMDAgbiAKMDAwMDAwOTgwNyAwMDAwMCBuIAowMDAwMDEyNjIzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNDQgMCBSIC9Sb290IDEgMCBSIC9TaXplIDQ1ID4+CnN0YXJ0eHJlZgoxMjc4MAolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:51.820812\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "from scipy.signal import square\n", "\n", "\n", "def glottal_signal(f0):\n", " \"\"\"Generates a synthetic glottal signal with fundamental frequency f0 in Hertz.\"\"\"\n", " w0 = 2 * np.pi * f0\n", " t = 1 / fs * np.arange(L)\n", " g = 1 / 2 * (1 + square(w0 * t, duty=1 / 10))\n", "\n", " return -g + 0.1\n", "\n", "\n", "g = 0.0055 * glottal_signal(100)\n", "\n", "plt.figure(figsize=(8, 4))\n", "plt.stem(g[:100])\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"glottal signal $g[k]$\")\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spectral contents of the error signal $e[k]$ and the synthetic glottal signal $g[k]$ are compared by estimating their power spectral densities (PSDs) using the [Welch technique](../spectral_estimation_random_signals/welch_method.ipynb)." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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eCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2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MjAgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxOSAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMiAwIG9iago8PCAvSCAyMyAwIFIgL2EgMjYgMCBSIC9jIDI3IDAgUiAvZSAyOCAwIFIgL2VpZ2h0IDI5IDAgUiAvZiAzMCAwIFIKL2ZvdXIgMzEgMCBSIC9nIDMyIDAgUiAvaCAzMyAwIFIgL2kgMzQgMCBSIC9sIDM1IDAgUiAvbiAzNyAwIFIgL28gMzggMCBSCi9vbmUgMzkgMCBSIC9wYXJlbmxlZnQgNDAgMCBSIC9wYXJlbnJpZ2h0IDQxIDAgUiAvcSA0MiAwIFIgL3IgNDMgMCBSCi9zIDQ0IDAgUiAvc2l4IDQ1IDAgUiAvc3BhY2UgNDYgMCBSIC90IDQ3IDAgUiAvdHdvIDQ4IDAgUiAvdSA0OSAwIFIKL3kgNTEgMCBSIC96IDUyIDAgUiAvemVybyA1MyAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDIxIDAgUiAvRjIgMTQgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8PCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMyA8PCAvQ0EgMC44IC9UeXBlIC9FeHRHU3RhdGUgL2NhIDAuOCA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1PbWVnYSAyNCAwIFIgL0YxLURlamFWdVNhbnMtUGhpIDI1IDAgUgovRjEtRGVqYVZ1U2Fucy1taW51cyAzNiAwIFIgL0YxLURlamFWdVNhbnMtdW5pMDMwMiA1MCAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjU0IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMDEyMDcxMzUyNTIrMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjEpID4+CmVuZG9iagp4cmVmCjAgNTUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTYzNDIgMDAwMDAgbiAKMDAwMDAxNTk4MiAwMDAwMCBuIAowMDAwMDE2MDI1IDAwMDAwIG4gCjAwMDAwMTYxNjcgMDAwMDAgbiAKMDAwMDAxNjE4OCAwMDAwMCBuIAowMDAwMDE2MjA5IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5NyAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDMyMzEgMDAwMDAgbiAKMDAwMDAwNDg4NyAwMDAwMCBuIAowMDAwMDA0Njc5IDAwMDAwIG4gCjAwMDAwMDQzNDkgMDAwMDAgbiAKMDAwMDAwNTk0MCAwMDAwMCBuIAowMDAwMDAzMjUyIDAwMDAwIG4gCjAwMDAwMDM2NTIgMDAwMDAgbiAKMDAwMDAwNDEyNCAwMDAwMCBuIAowMDAwMDE0NjAwIDAwMDAwIG4gCjAwMDAwMTQ0MDAgMDAwMDAgbiAKMDAwMDAxMzk0MiAwMDAwMCBuIAowMDAwMDE1NjUzIDAwMDAwIG4gCjAwMDAwMDU5OTIgMDAwMDAgbiAKMDAwMDAwNjE0MSAwMDAwMCBuIAowMDAwMDA2NTEyIDAwMDAwIG4gCjAwMDAwMDY4ODQgMDAwMDAgbiAKMDAwMDAwNzI2MSAwMDAwMCBuIAowMDAwMDA3NTY0IDAwMDAwIG4gCjAwMDAwMDc4ODIgMDAwMDAgbiAKMDAwMDAwODM0NyAwMDAwMCBuIAowMDAwMDA4NTUzIDAwMDAwIG4gCjAwMDAwMDg3MTUgMDAwMDAgbiAKMDAwMDAwOTEyNiAwMDAwMCBuIAowMDAwMDA5MzYyIDAwMDAwIG4gCjAwMDAwMDk1MDIgMDAwMDAgbiAKMDAwMDAwOTYxOSAwMDAwMCBuIAowMDAwMDA5Nzg5IDAwMDAwIG4gCjAwMDAwMTAwMjMgMDAwMDAgbiAKMDAwMDAxMDMxMCAwMDAwMCBuIAowMDAwMDEwNDYyIDAwMDAwIG4gCjAwMDAwMTA2ODIgMDAwMDAgbiAKMDAwMDAxMDkwNCAwMDAwMCBuIAowMDAwMDExMjE0IDAwMDAwIG4gCjAwMDAwMTE0NDQgMDAwMDAgbiAKMDAwMDAxMTg0OSAwMDAwMCBuIAowMDAwMDEyMjM5IDAwMDAwIG4gCjAwMDAwMTIzMjggMDAwMDAgbiAKMDAwMDAxMjUzMiAwMDAwMCBuIAowMDAwMDEyODUzIDAwMDAwIG4gCjAwMDAwMTMwOTcgMDAwMDAgbiAKMDAwMDAxMzMwMiAwMDAwMCBuIAowMDAwMDEzNTEzIDAwMDAwIG4gCjAwMDAwMTM2NTkgMDAwMDAgbiAKMDAwMDAxNjQwMiAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDU0IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA1NSA+PgpzdGFydHhyZWYKMTY1NTkKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:52.160501\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "from scipy.signal import welch\n", "\n", "f, Pee = welch(e, fs, nperseg=1024)\n", "f, Pgg = welch(g, fs, nperseg=1024)\n", "plt.plot(f, Pee, label=r\"$\\hat{\\Phi}_{ee}(e^{j \\Omega})$ error signal\")\n", "plt.plot(f, Pgg, label=r\"$\\hat{\\Phi}_{gg}(e^{j \\Omega})$ synthetic glottal signal\")\n", "\n", "plt.xlim([0, 1000])\n", "plt.xlabel(\"frequency in Hertz\")\n", "plt.legend()\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spectra of both signals constitute line-like spectra due to their periodicity. However, the levels of the spectral lines differ. This becomes most prominent around 600 Hertz. The synthetic glottal signal is now filtered with the inverse prediction-error filter in order to generate the synthetic speech signal." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNTAgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyOCA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTcgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxNyA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA4CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5OTUgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjE1IDAg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jA4AYCJeWYDsrkQ5S9KOpZ9vvMf3D0AAU7QKZW5kc3RyZWFtCmVuZG9iagoyMCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMgL0NoYXJQcm9jcyAyMSAwIFIKL0VuY29kaW5nIDw8Ci9EaWZmZXJlbmNlcyBbIDMyIC9zcGFjZSA0NiAvcGVyaW9kIDQ4IC96ZXJvIC9vbmUgL3R3byAvdGhyZWUgL2ZvdXIgL2ZpdmUgNTUgL3NldmVuIDkxCi9icmFja2V0bGVmdCA5MyAvYnJhY2tldHJpZ2h0IDk3IC9hIDk5IC9jIDEwMSAvZSAxMDMgL2cgL2ggL2kgMTA4IC9sIDExMCAvbgoxMTUgL3MgL3QgMTIxIC95IF0KL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250RGVzY3JpcHRvciAxOSAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxOCAwIFIgPj4KZW5kb2JqCjE5IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTggMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjEgMCBvYmoKPDwgL2EgMjIgMCBSIC9icmFja2V0bGVmdCAyMyAwIFIgL2JyYWNrZXRyaWdodCAyNCAwIFIgL2MgMjUgMCBSIC9lIDI2IDAgUgovZml2ZSAyNyAwIFIgL2ZvdXIgMjggMCBSIC9nIDI5IDAgUiAvaCAzMCAwIFIgL2kgMzEgMCBSIC9sIDMyIDAgUiAvbiAzNCAwIFIKL29uZSAzNSAwIFIgL3BlcmlvZCAzNiAwIFIgL3MgMzcgMCBSIC9zZXZlbiAzOCAwIFIgL3NwYWNlIDM5IDAgUiAvdCA0MCAwIFIKL3RocmVlIDQxIDAgUiAvdHdvIDQyIDAgUiAveSA0MyAwIFIgL3plcm8gNDQgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMCAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1taW51cyAzMyAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjQ1IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMDEyMDcxMzUyNTIrMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjEpID4+CmVuZG9iagp4cmVmCjAgNDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTQ4ODEgMDAwMDAgbiAKMDAwMDAxNDY0OCAwMDAwMCBuIAowMDAwMDE0NjkxIDAwMDAwIG4gCjAwMDAwMTQ3OTAgMDAwMDAgbiAKMDAwMDAxNDgxMSAwMDAwMCBuIAowMDAwMDE0ODMyIDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDUyNjcgMDAwMDAgbiAKMDAwMDAwNjE0MiAwMDAwMCBuIAowMDAwMDA1OTM0IDAwMDAwIG4gCjAwMDAwMDU2MTEgMDAwMDAgbiAKMDAwMDAwNzE5NSAwMDAwMCBuIAowMDAwMDA1Mjg4IDAwMDAwIG4gCjAwMDAwMDU0NDcgMDAwMDAgbiAKMDAwMDAxMzMwMiAwMDAwMCBuIAowMDAwMDEzMTAyIDAwMDAwIG4gCjAwMDAwMTI2NDQgMDAwMDAgbiAKMDAwMDAxNDM1NSAwMDAwMCBuIAowMDAwMDA3MjM3IDAwMDAwIG4gCjAwMDAwMDc2MTQgMDAwMDAgbiAKMDAwMDAwNzc1NyAwMDAwMCBuIAowMDAwMDA3ODk2IDAwMDAwIG4gCjAwMDAwMDgxOTkgMDAwMDAgbiAKMDAwMDAwODUxNyAwMDAwMCBuIAowMDAwMDA4ODM3IDAwMDAwIG4gCjAwMDAwMDg5OTkgMDAwMDAgbiAKMDAwMDAwOTQxMCAwMDAwMCBuIAowMDAwMDA5NjQ2IDAwMDAwIG4gCjAwMDAwMDk3ODYgMDAwMDAgbiAKMDAwMDAwOTkwMyAwMDAwMCBuIAowMDAwMDEwMDczIDAwMDAwIG4gCjAwMDAwMTAzMDcgMDAwMDAgbiAKMDAwMDAxMDQ1OSAwMDAwMCBuIAowMDAwMDEwNTgwIDAwMDAwIG4gCjAwMDAwMTA5ODUgMDAwMDAgbiAKMDAwMDAxMTEyNSAwMDAwMCBuIAowMDAwMDExMjE0IDAwMDAwIG4gCjAwMDAwMTE0MTggMDAwMDAgbiAKMDAwMDAxMTgyOSAwMDAwMCBuIAowMDAwMDEyMTUwIDAwMDAwIG4gCjAwMDAwMTIzNjEgMDAwMDAgbiAKMDAwMDAxNDk0MSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDQ1IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA0NiA+PgpzdGFydHhyZWYKMTUwOTgKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2020-12-07T13:52:52.484086\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "xa = lfilter([1], hpe, g)\n", "\n", "plt.figure(figsize=(8, 4))\n", "plt.plot(xa)\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"synthetic signal $x[k]$\")\n", "plt.axis([10000, 10500, -1, 1])\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visual comparison with the recorded speech signal shown above yields that the coarse structure of both is quite similar. The differences are a consequence of the simple glottal signal used. Both signals may also be compared aurally by listening to them." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "wavfile.write(\"artificial_vocal.wav\", fs, np.int16(xa * 2**15))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Recorded vocal**\n", "\n", "[../data/vocal_o_8k.wav](../data/vocal_o_8k.wav)\n", "\n", "**Synthesized vocal**\n", "\n", "[./artificial_vocal.wav](./artificial_vocal.wav)" ] }, { "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, Digital Signal Processing - Lecture notes featuring computational examples*." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.13" } }, "nbformat": 4, "nbformat_minor": 1 }