{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Random Signals\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": [ "## Superposition of Random Signals\n", "\n", "The superposition of two random signals \n", "\n", "\\begin{equation}\n", "y[k] = x[k] + n[k]\n", "\\end{equation}\n", "\n", "is a frequently applied operation in statistical signal processing. For instance, to model a measurement procedure or communication channel as superposition of the desired signal with noise. We assume that the statistical properties of the real-valued signals $x[k]$ and $n[k]$ are known. We are interested in the statistical properties of $y[k]$, as well as the joint statistical properties between the signals and their superposition $y[k]$. It is assumed for the following that $x[k]$ and $n[k]$ are drawn from wide-sense stationary (WSS) real-valued random processes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cumulative Distribution and Probability Density Function\n", "\n", "The cumulative distribution function (CDF) $P_y(\\theta)$ of $y[k]$ is given by rewriting it in terms of the joint probability density function (PDF) $p_{xn}(\\theta_x, \\theta_n)$\n", "\n", "\\begin{equation}\n", "P_y(\\theta) = \\Pr \\{ y[k] \\leq \\theta \\} = \\Pr \\{ (x[k] + n[k]) \\leq \\theta \\} =\n", "\\int\\limits_{-\\infty}^{\\infty} \\int\\limits_{-\\infty}^{\\theta - \\theta_n} p_{xn}(\\theta_x, \\theta_n) \\; \\mathrm{d}\\theta_x\\,\\mathrm{d}\\theta_n\n", "\\end{equation}\n", "\n", "Its PDF is computed by introducing above result into the [definition](distributions.ipynb#Univariate-Probability-Density-Function) of the PDF\n", "\n", "\\begin{equation}\n", "p_y(\\theta) = \\frac{\\mathrm{d} P_y(\\theta)}{\\mathrm{d}\\theta} = \\int\\limits_{-\\infty}^{\\infty} p_{xn}(\\theta - \\theta_n, \\theta_n) \\; \\mathrm{d}\\theta_n\n", "\\end{equation}\n", "\n", "since the inner integral on the right hand side of $P_y(\\theta)$ can be interpreted as the inverse operation to the derivation with respect to $\\theta$.\n", "\n", "An important special case is that $x[k]$ and $n[k]$ are uncorrelated. Under this assumption, the joint PDF $p_{xn}(\\theta_x, \\theta_n)$ can be written as $p_{xn}(\\theta_x, \\theta_n) = p_x(\\theta_x) \\cdot p_n(\\theta_n)$. Introducing this into above result yields\n", "\n", "\\begin{align}\n", "p_y(\\theta) &= \\int\\limits_{-\\infty}^{\\infty} p_x(\\theta - \\theta_n) \\cdot p_n(\\theta_n) \\; \\mathrm{d}\\theta_n \\\\\n", "&= p_x(\\theta) * p_n(\\theta)\n", "\\end{align}\n", "\n", "Hence, the PDF of the superposition of two uncorrelated signals is given by the convolution of the PDFs of both signals." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example - PDF of a superposition of two uncorrelated signals\n", "\n", "The following example estimates the PDF of a superposition of two uncorrelated signals drawn from random processes generating samples according to the [uniformly distributed](important_distributions.ipynb#Uniform-Distribution) white noise model with $a= - \\frac{1}{2}$ and $b = \\frac{1}{2}$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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sR9AAmxs/J6coit8/28Px0kKxGhBu+DDIGCrWdLRpMBrx0fJaoBd8COTBlYTaLeEVqB1KaE4aOmsIxBtW9S7H/S6TuKRS8WSqj3U+qaI5e7QK0a3aQGPnjnZu0Kbg8s1GQWZOClPWYdO0vTZZB5QiySXcWvPQ/P9Z9KXzj8YAS5NCmVuZHN0cmVhbQplbmRvYmoKMTUgMCBvYmoKPDwgL0Jhc2VGb250IC9EZWphVnVTYW5zLU9ibGlxdWUgL0NoYXJQcm9jcyAxNiAwIFIKL0VuY29kaW5nIDw8IC9EaWZmZXJlbmNlcyBbIDExMiAvcCAxMjEgL3kgXSAvVHlwZSAvRW5jb2RpbmcgPj4gL0ZpcnN0Q2hhciAwCi9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDE0IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTMgMCBSID4+CmVuZG9iagoxNCAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTMgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTYgMCBvYmoKPDwgL3AgMTcgMCBSIC95IDE5IDAgUiA+PgplbmRvYmoKMjQgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVE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L2ZpdmUgL3NpeCAvc2V2ZW4gL2VpZ2h0IDY4IC9EIC9FIC9GIDgwIC9QIDk3IC9hIDEwMCAvZCAvZSAxMDUgL2kgMTA5Ci9tIDExNSAvcyAvdCBdCi9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udERlc2NyaXB0b3IgMjEgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMjAgMCBSID4+CmVuZG9iagoyMSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjIwIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIzIDAgb2JqCjw8IC9EIDI0IDAgUiAvRSAyNSAwIFIgL0YgMjYgMCBSIC9QIDI3IDAgUiAvYSAyOCAwIFIgL2QgMjkgMCBSIC9lIDMwIDAgUgovZWlnaHQgMzEgMCBSIC9maXZlIDMyIDAgUiAvZm91ciAzMyAwIFIgL2kgMzQgMCBSIC9tIDM1IDAgUiAvb25lIDM3IDAgUgovcGFyZW5sZWZ0IDM4IDAgUiAvcGFyZW5yaWdodCAzOSAwIFIgL3BlcmlvZCA0MCAwIFIgL3MgNDEgMCBSIC9zZXZlbiA0MiAwIFIKL3NpeCA0MyAwIFIgL3NwYWNlIDQ0IDAgUiAvdCA0NSAwIFIgL3R3byA0NiAwIFIgL3plcm8gNDggMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMiAwIFIgL0YyIDE1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1taW51cyAzNiAwIFIgL0YxLURlamFWdVNhbnMtdW5pMDMwMiA0NyAwIFIKL0YyLURlamFWdVNhbnMtT2JsaXF1ZS10aGV0YSAxOCAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMSAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjQ5IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTEyMDExMTAxMzUrMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My40LjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My40LjMpID4+CmVuZG9iagp4cmVmCjAgNTAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTQ3NDkgMDAwMDAgbiAKMDAwMDAxNDQ1MCAwMDAwMCBuIAowMDAwMDE0NDkzIDAwMDAwIG4gCjAwMDAwMTQ1OTIgMDAwMDAgbiAKMDAwMDAxNDYxMyAwMDAwMCBuIAowMDAwMDE0NjM0IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMCAwMDAwMCBuIAowMDAwMDAzNjM4IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwMzYxNyAwMDAwMCBuIAowMDAwMDA1MTc4IDAwMDAwIG4gCjAwMDAwMDQ5NzAgMDAwMDAgbiAKMDAwMDAwNDY0NyAwMDAwMCBuIAowMDAwMDA2MjMxIDAwMDAwIG4gCjAwMDAwMDM2NTggMDAwMDAgbiAKMDAwMDAwNDA2NCAwMDAwMCBuIAowMDAwMDA0NDMzIDAwMDAwIG4gCjAwMDAwMTMwOTYgMDAwMDAgbiAKMDAwMDAxMjg5NiAwMDAwMCBuIAowMDAwMDEyNDQ1IDAwMDAwIG4gCjAwMDAwMTQxNDkgMDAwMDAgbiAKMDAwMDAwNjI3MyAwMDAwMCBuIAowMDAwMDA2NTEwIDAwMDAwIG4gCjAwMDAwMDY2NjMgMDAwMDAgbiAKMDAwMDAwNjgxMSAwMDAwMCBuIAowMDAwMDA3MDU0IDAwMDAwIG4gCjAwMDAwMDc0MzQgMDAwMDAgbiAKMDAwMDAwNzczOCAwMDAwMCBuIAowMDAwMDA4MDYwIDAwMDAwIG4gCjAwMDAwMDg1MjggMDAwMDAgbiAKMDAwMDAwODg1MCAwMDAwMCBuIAowMDAwMDA5MDE2IDAwMDAwIG4gCjAwMDAwMDkxNjAgMDAwMDAgbiAKMDAwMDAwOTQ5MSAwMDAwMCBuIAowMDAwMDA5NjYzIDAwMDAwIG4gCjAwMDAwMDk4MTggMDAwMDAgbiAKMDAwMDAxMDA0MSAwMDAwMCBuIAowMDAwMDEwMjY1IDAwMDAwIG4gCjAwMDAwMTAzODggMDAwMDAgbiAKMDAwMDAxMDc5NSAwMDAwMCBuIAowMDAwMDEwOTM3IDAwMDAwIG4gCjAwMDAwMTEzMzAgMDAwMDAgbiAKMDAwMDAxMTQyMCAwMDAwMCBuIAowMDAwMDExNjI2IDAwMDAwIG4gCjAwMDAwMTE5NTAgMDAwMDAgbiAKMDAwMDAxMjE1NyAwMDAwMCBuIAowMDAwMDE0ODA5IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNDkgMCBSIC9Sb290IDEgMCBSIC9TaXplIDUwID4+CnN0YXJ0eHJlZgoxNDk2NgolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-12-01T11:01:35.785283\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.4.3, 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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "K = 100000 # length of random signals\n", "\n", "# generate random signals\n", "np.random.seed(2)\n", "x = np.random.uniform(low=-1 / 2, high=1 / 2, size=K)\n", "n = np.random.uniform(low=-1 / 2, high=1 / 2, size=K)\n", "y = x + n\n", "\n", "# plot estimated pdf\n", "plt.figure(figsize=(10, 6))\n", "plt.hist(y, 100, density=True)\n", "plt.title(\"Estimated PDF\")\n", "plt.xlabel(r\"$\\theta$\")\n", "plt.ylabel(r\"$\\hat{p}_y(\\theta)$\")\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Check the result of the numerical simulation by calculating the theoretical PDF of $y[k]$\n", "* What PDF will results if you sum up an infinite number of independent uniformly distributed random signals?\n", "\n", "Solution: The PDF of both signals $x[k]$ and $n[k]$ is given as $p_x(\\theta) = p_n(\\theta) = \\text{rect}(\\theta)$, according to the assumptions stated above. The PDF of $y[k] = x[k] + n[k]$ is consequently given by $p_y(\\theta) = \\text{rect}(\\theta) * \\text{rect}(\\theta)$. The convolution of two rectangular signals results in a triangular signal. Hence\n", "\n", "\\begin{equation}\n", "p_y(\\theta) = \n", "\\begin{cases}\n", "1 - |\\theta| & \\text{for } -1 < \\theta < 1 \\\\\n", "0 & \\text{otherwise}\n", "\\end{cases}\n", "\\end{equation}\n", "\n", "The [central limit theorem](https://en.wikipedia.org/wiki/Central_limit_theorem) states that a superposition of independent random variables tends towards a normal distribution for an increasing number of superpositions. Numerical simulation for a high but finite number of independent uniformly distributed random signals yields" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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YmxpcXVlIC9DaGFyUHJvY3MgMTYgMCBSCi9FbmNvZGluZyA8PCAvRGlmZmVyZW5jZXMgWyAxMTIgL3AgMTIxIC95IF0gL1R5cGUgL0VuY29kaW5nID4+IC9GaXJzdENoYXIgMAovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250RGVzY3JpcHRvciAxNCAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDEzIDAgUiA+PgplbmRvYmoKMTQgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDk2Ci9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL0l0YWxpY0FuZ2xlIDAgL01heFdpZHRoIDEzNTAgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjEzIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMg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dENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDIwIDAgUiA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoyMCAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMyAwIG9iago8PCAvRCAyNCAwIFIgL0UgMjUgMCBSIC9GIDI2IDAgUiAvUCAyNyAwIFIgL2EgMjggMCBSIC9kIDI5IDAgUiAvZSAzMCAwIFIKL2ZvdXIgMzEgMCBSIC9pIDMyIDAgUiAvbSAzMyAwIFIgL29uZSAzNSAwIFIgL3BhcmVubGVmdCAzNiAwIFIKL3BhcmVucmlnaHQgMzcgMCBSIC9wZXJpb2QgMzggMCBSIC9zIDM5IDAgUiAvc3BhY2UgNDAgMCBSIC90IDQxIDAgUgovdGhyZWUgNDIgMCBSIC90d28gNDMgMCBSIC96ZXJvIDQ1IDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjIgMCBSIC9GMiAxNSAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0YxLURlamFWdVNhbnMtbWludXMgMzQgMCBSIC9GMS1EZWphVnVTYW5zLXVuaTAzMDIgNDQgMCBSCi9GMi1EZWphVnVTYW5zLU9ibGlxdWUtdGhldGEgMTggMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTEgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iago0NiAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjExMjAxMTEwMTM3KzAyJzAwJykKL0NyZWF0b3IgKE1hdHBsb3RsaWIgdjMuNC4zLCBodHRwczovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKE1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgdjMuNC4zKSA+PgplbmRvYmoKeHJlZgowIDQ3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDEzNTk1IDAwMDAwIG4gCjAwMDAwMTMyOTYgMDAwMDAgbiAKMDAwMDAxMzMzOSAwMDAwMCBuIAowMDAwMDEzNDM4IDAwMDAwIG4gCjAwMDAwMTM0NTkgMDAwMDAgbiAKMDAwMDAxMzQ4MCAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDA0MDEgMDAwMDAgbiAKMDAwMDAwMzQ1NiAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDM0MzUgMDAwMDAgbiAKMDAwMDAwNDk5NiAwMDAwMCBuIAowMDAwMDA0Nzg4IDAwMDAwIG4gCjAwMDAwMDQ0NjUgMDAwMDAgbiAKMDAwMDAwNjA0OSAwMDAwMCBuIAowMDAwMDAzNDc2IDAwMDAwIG4gCjAwMDAwMDM4ODIgMDAwMDAgbiAKMDAwMDAwNDI1MSAwMDAwMCBuIAowMDAwMDExOTgxIDAwMDAwIG4gCjAwMDAwMTE3ODEgMDAwMDAgbiAKMDAwMDAxMTM1MSAwMDAwMCBuIAowMDAwMDEzMDM0IDAwMDAwIG4gCjAwMDAwMDYwOTEgMDAwMDAgbiAKMDAwMDAwNjMyOCAwMDAwMCBuIAowMDAwMDA2NDgxIDAwMDAwIG4gCjAwMDAwMDY2MjkgMDAwMDAgbiAKMDAwMDAwNjg3MiAwMDAwMCBuIAowMDAwMDA3MjUyIDAwMDAwIG4gCjAwMDAwMDc1NTYgMDAwMDAgbiAKMDAwMDAwNzg3OCAwMDAwMCBuIAowMDAwMDA4MDQ0IDAwMDAwIG4gCjAwMDAwMDgxODggMDAwMDAgbiAKMDAwMDAwODUxOSAwMDAwMCBuIAowMDAwMDA4NjkxIDAwMDAwIG4gCjAwMDAwMDg4NDYgMDAwMDAgbiAKMDAwMDAwOTA2OSAwMDAwMCBuIAowMDAwMDA5MjkzIDAwMDAwIG4gCjAwMDAwMDk0MTYgMDAwMDAgbiAKMDAwMDAwOTgyMyAwMDAwMCBuIAowMDAwMDA5OTEzIDAwMDAwIG4gCjAwMDAwMTAxMTkgMDAwMDAgbiAKMDAwMDAxMDUzMiAwMDAwMCBuIAowMDAwMDEwODU2IDAwMDAwIG4gCjAwMDAwMTEwNjMgMDAwMDAgbiAKMDAwMDAxMzY1NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDQ2IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA0NyA+PgpzdGFydHhyZWYKMTM4MTIKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-12-01T11:01:37.266847\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.4.3, 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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "N = 1000 # number of independent random signals\n", "\n", "# generate random signals\n", "np.random.seed(2)\n", "y = np.sum(np.random.uniform(low=-1 / 2, high=1 / 2, size=(N, K)), axis=0)\n", "\n", "# plot estimated pdf\n", "plt.figure(figsize=(10, 6))\n", "plt.hist(y, 100, density=True)\n", "plt.title(\"Estimated PDF\")\n", "plt.xlabel(r\"$\\theta$\")\n", "plt.ylabel(r\"$\\hat{p}_y(\\theta)$\")\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Mean\n", "\n", "The linear mean $\\mu_y$ of the superposition is derived by introducing $y[k] = x[k] + n[k]$ into the [definition of the linear mean](ensemble_averages.ipynb#Linear-mean) and exploiting the [linearity of the expectation operator](ensemble_averages.ipynb#Properties) as\n", "\n", "\\begin{equation}\n", "\\mu_y[k] = E \\{ x[k] + n[k] \\} = \\mu_x[k] + \\mu_n[k]\n", "\\end{equation}\n", "\n", "The linear mean of the superposition of two random signals is the superposition of its linear means." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Auto-Correlation Function and Power Spectral Density\n", "\n", "The ACF is computed in the same manner as the linear mean by inserting the superposition into the [definition](correlation_functions.ipynb#Auto-Correlation-Function) of the ACF and rearranging terms\n", "\n", "\\begin{align}\n", "\\varphi_{yy}[\\kappa] &= E\\{ y[k] \\cdot y[k-\\kappa] \\} \\\\\n", "&= E\\{ (x[k] + n[k]) \\cdot (x[k-\\kappa] + n[k-\\kappa]) \\} \\\\\n", "&= \\varphi_{xx}[\\kappa] + \\varphi_{xn}[\\kappa] + \\varphi_{nx}[\\kappa] + \\varphi_{nn}[\\kappa] \n", "\\end{align}\n", "\n", "The ACF of the superposition of two random signals is given as the superposition of all auto- and cross-correlation functions (CCFs) of the two random signals. The power spectral density (PSD) is derived by performing a discrete-time Fourier transform (DTFT) of the ACF\n", "\n", "\\begin{equation}\n", "\\Phi_{yy}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) = \\Phi_{xx}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) + \\Phi_{xn}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) + \\Phi_{nx}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) + \\Phi_{nn}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega})\n", "\\end{equation}\n", "\n", "This can be simplified further by exploiting the symmetry property of the CCFs $\\varphi_{xn}[\\kappa] = \\varphi_{nx}[-\\kappa]$ and the DTFT for real-valued signals as\n", "\n", "\\begin{equation}\n", "\\Phi_{yy}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) = \\Phi_{xx}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) + 2\\,\\Re \\{ \\Phi_{xn}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) \\} + \\Phi_{nn}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega})\n", "\\end{equation}\n", "\n", "where $\\Re \\{ \\cdot \\}$ denotes the real part of its argument." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cross-Correlation Function and Cross Power Spectral Density\n", "\n", "The CCF $\\varphi_{ny}[\\kappa]$ between the random signal $n[k]$ and the superposition $y[k]$ is derived again by introducing the superposition into the [definition of the CCF](correlation_functions.ipynb#Cross-Correlation-Function)\n", "\n", "\\begin{equation}\n", "\\varphi_{ny}[\\kappa] = E\\{ n[k] \\cdot (x[k-\\kappa] + n[k-\\kappa]) \\} = \\varphi_{nx}[\\kappa] + \\varphi_{nn}[\\kappa]\n", "\\end{equation}\n", "\n", "It is given as the superposition of the CCF between the two random signals and the ACF of $n[k]$. The cross PSD is derived by applying the DTFT to $\\varphi_{ny}[\\kappa]$\n", "\n", "\\begin{equation}\n", "\\Phi_{ny}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) = \\Phi_{nx}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) + \\Phi_{nn}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega})\n", "\\end{equation}\n", "\n", "The CCF $\\varphi_{xy}[\\kappa]$ and cross PSD $\\Phi_{xy}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega})$ can be derived by exchanging the signals $n[k]$ and $x[k]$\n", "\n", "\\begin{equation}\n", "\\varphi_{xy}[\\kappa] = E\\{ x[k] \\cdot (x[k-\\kappa] + n[k-\\kappa]) \\} = \\varphi_{xx}[\\kappa] + \\varphi_{xn}[\\kappa]\n", "\\end{equation}\n", "\n", "and\n", "\n", "\\begin{equation}\n", "\\Phi_{xy}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) = \\Phi_{xx}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega}) + \\Phi_{xn}(\\mathrm{e}^{\\,\\mathrm{j}\\,\\Omega})\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Additive White Gaussian Noise\n", "\n", "In order to model the effect of distortions, it is often assumed that a random signal $x[k]$ is distorted by additive normal distributed white noise $n[k]$ resulting in the observed signal $y[k] = x[k] + n[k]$. It is furthermore assumed that the noise $n[k]$ is uncorrelated to the signal $x[k]$. This model is known as [additive white Gaussian noise](https://en.wikipedia.org/wiki/Additive_white_Gaussian_noise) (AWGN) model. \n", "\n", "For zero-mean random processes and from the properties of the AWGN model, it follows that $\\varphi_{xn}[\\kappa] = \\varphi_{nx}[\\kappa] = 0$ and $\\varphi_{nn}[\\kappa] = N_0 \\cdot \\delta[\\kappa]$. Introducing this into above results for additive random signals yields the following relations for the AWGN model\n", "\n", "\\begin{align}\n", "\\varphi_{yy}[\\kappa] &= \\varphi_{xx}[\\kappa] + N_0 \\cdot \\delta[\\kappa] \\\\\n", "\\varphi_{ny}[\\kappa] &= N_0 \\cdot \\delta[\\kappa] \\\\\n", "\\varphi_{xy}[\\kappa] &= \\varphi_{xx}[\\kappa]\n", "\\end{align}\n", "\n", "The PSDs are given as the DTFTs of the ACF/CCFs. The AWGN model is frequently assumed in communications as well as in the measurement of physical quantities to cope for background, sensor and amplifier noise." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example - Estimating the Period of a Noisy Periodic Signal\n", "\n", "For the following numerical example, the disturbance of a harmonic signal $x[k] = \\cos(\\Omega_0 k)$ by unit variance AWGN $n[k]$ is considered. The observed signal is given as\n", "\n", "\\begin{equation}\n", "y[k] = x[k] + n[k]\n", "\\end{equation}\n", "\n", "The ACF $\\varphi_{yy}[\\kappa]$ of the compound signal, as well as the CCF between noise and signal $\\varphi_{ny}[\\kappa]$ is computed and plotted." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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hFagdSmhOGjprCMQbVvUux/0uk7ikUvFkqo91PqmiOXu0CtGt2kBj5452btCm4PLNRkFmTgpT1mHTtL02WQeUIskl3Frz0Pz/WfSl84/GAEuTQplbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2Fucy1PYmxpcXVlIC9DaGFyUHJvY3MgMTkgMCBSCi9FbmNvZGluZyA8PCAvRGlmZmVyZW5jZXMgWyAxMDcgL2sgMTEwIC9uIDEyMCAveCAveSBdIC9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTcgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxNiAwIFIgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxNiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxOSAwIG9iago8PCAvayAyMCAwIFIgL24gMjIgMCBSIC94IDI0IDAgUiAveSAyNSAwIFIgPj4KZW5kb2JqCjMwIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggOTEg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PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjI2IDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjI5IDAgb2JqCjw8IC9BIDMwIDAgUiAvQyAzMSAwIFIgL0YgMzIgMCBSIC9TIDMzIDAgUiAvYSAzNCAwIFIgL2IgMzUgMCBSCi9icmFja2V0bGVmdCAzNiAwIFIgL2JyYWNrZXRyaWdodCAzNyAwIFIgL2QgMzggMCBSIC9lIDM5IDAgUiAvZWlnaHQgNDAgMCBSCi9mIDQxIDAgUiAvZml2ZSA0MiAwIFIgL2ZvdXIgNDMgMCBSIC9nIDQ0IDAgUiAvaSA0NSAwIFIgL2wgNDYgMCBSIC9uIDQ4IDAgUgovbyA0OSAwIFIgL29uZSA1MCAwIFIgL3AgNTEgMCBSIC9wZXJpb2QgNTIgMCBSIC9yIDUzIDAgUiAvcyA1NCAwIFIKL3NpeCA1NSAwIFIgL3NwYWNlIDU2IDAgUiAvdCA1NyAwIFIgL3RocmVlIDU4IDAgUiAvdHdvIDU5IDAgUiAvdSA2MCAwIFIKL3cgNjEgMCBSIC96ZXJvIDYyIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjggMCBSIC9GMiAxOCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0YxLURlamFWdVNhbnMtbWludXMgNDcgMCBSIC9GMi1EZWphVnVTYW5zLU9ibGlxdWUta2FwcGEgMjEgMCBSCi9GMi1EZWphVnVTYW5zLU9ibGlxdWUtcGhpIDIzIDAgUiAvTTAgMTMgMCBSIC9NMSAxNCAwIFIgL00yIDE1IDAgUiA+PgplbmRvYmoKMTMgMCBvYmoKPDwgL0JCb3ggWyAtOCAtOCA4IDggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDEzMSAvU3VidHlwZSAvRm9ybQovVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJxtkEEOhCAMRfc9RS/wSUtFZevSa7iZTOL9twNxQEzdNNC+PH5R/pLwTqXA+CQJS06z5HrTkNK6TIwY5tWyKMegUS3WznU4qM/QcGN0i7EUptTW6Hijm+k23pM/+rBZIUY/HA6vhHsWQyZcKTEGh98LL9vD/xGeXtTAH6KNfmNaQ/0KZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQkJveCBbIC04IC04IDggOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxIC9TdWJ0eXBlIC9Gb3JtCi9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nG2QQQ6EIAxF9z1FL/BJS0Vl69JruJlM4v23A3FATN000L48flH+kvBOpcD4JAlLTrPketOQ0rpMjBjm1bIox6BRLdbOdTioz9BwY3SLsRSm1NboeKOb6Tbekz/6sFkhRj8cDq+EexZDJlwpMQaH3wsv28P/EZ5e1MAfoo1+Y1pD/QplbmRzdHJlYW0KZW5kb2JqCjE1IDAgb2JqCjw8IC9CQm94IFsgLTggLTggOCA4IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMzEgL1N1YnR5cGUgL0Zvcm0KL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicbZBBDoQgDEX3PUUv8ElLRWXr0mu4mUzi/bcDcUBM3TTQvjx+Uf6S8E6lwPgkCUtOs+R605DSukyMGObVsijHoFEt1s51OKjP0HBjdIuxFKbU1uh4o5vpNt6TP/qwWSFGPxwOr4R7FkMmXCkxBoffCy/bw/8Rnl7UwB+ijX5jWkP9CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDExIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKNjMgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDIxMTIwMTExMDEzOCswMicwMCcpCi9DcmVhdG9yIChNYXRwbG90bGliIHYzLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChNYXRwbG90bGliIHBkZiBiYWNrZW5kIHYzLjQuMykgPj4KZW5kb2JqCnhyZWYKMCA2NAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAyMjUzNiAwMDAwMCBuIAowMDAwMDIxNDM4IDAwMDAwIG4gCjAwMDAwMjE0ODEgMDAwMDAgbiAKMDAwMDAyMTU4MCAwMDAwMCBuIAowMDAwMDIxNjAxIDAwMDAwIG4gCjAwMDAwMjE2MjIgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwNDAxIDAwMDAwIG4gCjAwMDAwMDc2MTcgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDA3NTk2IDAwMDAwIG4gCjAwMDAwMjE3NzQgMDAwMDAgbiAKMDAwMDAyMjAyOCAwMDAwMCBuIAowMDAwMDIyMjgyIDAwMDAwIG4gCjAwMDAwMDk2NDEgMDAwMDAgbiAKMDAwMDAwOTQzMyAwMDAwMCBuIAowMDAwMDA5MTAwIDAwMDAwIG4gCjAwMDAwMTA2OTQgMDAwMDAgbiAKMDAwMDAwNzYzNyAwMDAwMCBuIAowMDAwMDA3Nzk4IDAwMDAwIG4gCjAwMDAwMDgwMTIgMDAwMDAgbiAKMDAwMDAwODMwMSAwMDAwMCBuIAowMDAwMDA4NzE5IDAwMDAwIG4gCjAwMDAwMDg4ODYgMDAwMDAgbiAKMDAwMDAxOTk5MCAwMDAwMCBuIAowMDAwMDE5NzkwIDAwMDAwIG4gCjAwMDAwMTkyOTEgMDAwMDAgbiAKMDAwMDAyMTA0MyAwMDAwMCBuIAowMDAwMDEwNzU2IDAwMDAwIG4gCjAwMDAwMTA5MTkgMDAwMDAgbiAKMDAwMDAxMTIyNyAwMDAwMCBuIAowMDAwMDExMzc1IDAwMDAwIG4gCjAwMDAwMTE3ODkgMDAwMDAgbiAKMDAwMDAxMjE2OSAwMDAwMCBuIAowMDAwMDEyNDg2IDAwMDAwIG4gCjAwMDAwMTI2MzEgMDAwMDAgbiAKMDAwMDAxMjc3MiAwMDAwMCBuIAowMDAwMDEzMDc2IDAwMDAwIG4gCjAwMDAwMTMzOTggMDAwMDAgbiAKMDAwMDAxMzg2NiAwMDAwMCBuIAowMDAwMDE0MDc1IDAwMDAwIG4gCjAwMDAwMTQzOTcgMDAwMDAgbiAKMDAwMDAxNDU2MyAwMDAwMCBuIAowMDAwMDE0OTc3IDAwMDAwIG4gCjAwMDAwMTUxMjEgMDAwMDAgbiAKMDAwMDAxNTI0MCAwMDAwMCBuIAowMDAwMDE1NDEyIDAwMDAwIG4gCjAwMDAwMTU2NDggMDAwMDAgbiAKMDAwMDAxNTkzOSAwMDAwMCBuIAowMDAwMDE2MDk0IDAwMDAwIG4gCjAwMDAwMTY0MDYgMDAwMDAgbiAKMDAwMDAxNjUyOSAwMDAwMCBuIAowMDAwMDE2NzYyIDAwMDAwIG4gCjAwMDAwMTcxNjkgMDAwMDAgbiAKMDAwMDAxNzU2MiAwMDAwMCBuIAowMDAwMDE3NjUyIDAwMDAwIG4gCjAwMDAwMTc4NTggMDAwMDAgbiAKMDAwMDAxODI3MSAwMDAwMCBuIAowMDAwMDE4NTk1IDAwMDAwIG4gCjAwMDAwMTg4NDIgMDAwMDAgbiAKMDAwMDAxOTAwMyAwMDAwMCBuIAowMDAwMDIyNTk2IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNjMgMCBSIC9Sb290IDEgMCBSIC9TaXplIDY0ID4+CnN0YXJ0eHJlZgoyMjc1MwolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-12-01T11:01:37.785553\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.4.3, 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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "N = 1024 # length of compound signals\n", "M = 25 # period of cosine signal\n", "K = 2 * M # maximum lag for ACF/CCF\n", "\n", "# generate signals\n", "x = np.cos(2 * np.pi / M * np.arange(N))\n", "np.random.seed(2)\n", "n = np.random.normal(size=N)\n", "# superposition of signals\n", "y = x + n\n", "\n", "# compute and truncate ACF of superposition\n", "acf = 1 / N * np.correlate(y, y, mode=\"full\")\n", "acf = acf[(len(y) - 1) - K : len(y) + K]\n", "# compute and truncate CCF of superposition and noise\n", "ccf = 1 / N * np.correlate(n, y, mode=\"full\")\n", "ccf = ccf[(len(y) - 1) - K : len(y) + K]\n", "\n", "\n", "# plot results\n", "kappa = np.arange(-K, K + 1)\n", "\n", "plt.figure(figsize=(10, 10))\n", "\n", "plt.subplot(311)\n", "plt.stem(y)\n", "plt.title(\"Signal\")\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"$x[k]$\")\n", "plt.axis([0, K, -3, 3])\n", "\n", "plt.subplot(312)\n", "plt.stem(kappa, acf)\n", "plt.title(\"ACF of superposition\")\n", "plt.xlabel(r\"$\\kappa$\")\n", "plt.ylabel(r\"$\\varphi_{yy}[\\kappa]$\")\n", "plt.axis([-K, K, -0.75, 1.1 * np.max(acf)])\n", "plt.grid()\n", "\n", "plt.subplot(313)\n", "plt.stem(kappa, ccf)\n", "plt.title(\"CCF between noise and superposition\")\n", "plt.xlabel(r\"$\\kappa$\")\n", "plt.ylabel(r\"$\\varphi_{ny}[\\kappa]$\")\n", "plt.axis([-K, K, -0.2, 1.1])\n", "plt.grid()\n", "\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Derive the theoretic result for the ACF $\\varphi_{xx}[\\kappa]$\n", "* Based on this, can you explain the shape of the ACF?\n", "* Estimate the periodicity/frequency of the cosine signal from the ACF\n", "* What conclusions can you draw from the CCF between noise and signal?\n", "\n", "Solution: The ACF of the deterministic signal $x[k] = \\cos(\\Omega_0 k)$ is computed via temporal averaging. Since $x[k]$ is periodic, the ACF $\\varphi_{xx}[\\kappa]$ is also periodic. It is hence sufficient to perform the temporal averaging over one period $N = \\frac{2 \\pi}{\\Omega_0}$ with $N \\in \\mathbb{Z}$\n", "\n", "\\begin{align}\n", "\\varphi_{xx}[\\kappa] &= \\frac{1}{N} \\sum_{k=0}^{N-1} x[k] \\cdot x[k-\\kappa] \\\\\n", "&= \\frac{1}{N} \\sum_{k=0}^{N-1} \\cos(\\Omega_0 k) \\cdot \\cos(\\Omega_0 (k-\\kappa))\n", "\\end{align}\n", "\n", "Applying the [product-to-sum identity](https://en.wikipedia.org/wiki/List_of_trigonometric_identities#Product-to-sum_and_sum-to-product_identities) of the cosine function and rearranging terms yields\n", "\n", "\\begin{equation}\n", "\\varphi_{xx}[\\kappa] = \\frac{1}{2} \\cos(\\Omega_0 \\kappa) + \\frac{1}{2N} \\sum_{k=0}^{N-1} \\cos(2 \\Omega_0 k - \\Omega_0 \\kappa)\n", "\\end{equation}\n", "\n", "The remaining sum over the phase shifted cosine $\\cos(2 \\Omega_0 k - \\Omega_0 \\kappa)$ is zero since the summation is carried out over two full periods. The ACF of a cosine signal is then given as\n", "\n", "\\begin{equation}\n", "\\varphi_{xx}[\\kappa] = \\frac{1}{2} \\cos(\\Omega_0 \\kappa)\n", "\\end{equation}\n", "\n", "Introducing this into the relations for the AWGN model, the ACF of the superposition is\n", "\n", "\\begin{equation}\n", "\\varphi_{yy}[\\kappa] = \\varphi_{xx}[\\kappa] + N_0 \\delta[\\kappa] = \\frac{1}{2} \\cos(\\Omega_0 \\kappa) + N_0 \\delta[\\kappa]\n", "\\end{equation}\n", "\n", "Taking the statistical uncertainty due to a finite number of samples into account, this analytic result coincides well with the ACF of the numerical evaluation shown above.\n", "\n", "The ACF of a periodic signal is also periodic. The ACF $\\varphi_{yy}[\\kappa]$ is composed from a superposition of the ACF $\\varphi_{xx}[\\kappa]$ of the periodic cosine signal and an aperiodic contribution from the additive noise. Hence, the period of the cosine can be estimated from the period of the ACF.\n", "\n", "It can be concluded from the CCF that the additive noise is not correlated with the cosine signal." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example - Denoising by Repeated Averaging\n", "\n", "Let's assume that we can have access to multiple observations of a noisy deterministic signal $x[k]$. The $i$-th observation $y_i[k]$ is then given by the following AWGN model\n", "\n", "\\begin{equation}\n", "y_i[k] = x[k] + n_i[k]\n", "\\end{equation}\n", "\n", "where $n_i[k]$ denotes the $i$-th sample function of a zero-mean white noise process with PSD $N_0$. It is assumed that the sample functions of the noise process are mutually independent. An estimate $\\hat{x}[k]$ of the deterministic signal $x[k]$ is given by averaging over $N$ observations\n", "\n", "\\begin{equation}\n", "\\hat{x}[k] = \\frac{1}{N} \\sum_{i=0}^{N-1} (x[k] + n_i[k]) = x[k] + \\underbrace{\\frac{1}{N} \\sum_{i=0}^{N-1} n_i[k]}_{n[k]}\n", "\\end{equation}\n", "\n", "The estimate consists of a superposition of the true signal $x[k]$ and noise $n[k]$.\n", "\n", "The [signal-to-noise ratio](https://en.wikipedia.org/wiki/Signal-to-noise_ratio) (SNR) of the estimate is defined as the power of the true signal $x[k]$ divided by the power of the additive noise. Following this definition, the average SNR is given as\n", "\n", "\\begin{equation}\n", "\\mathrm{SNR} = 10 \\cdot \\log_{10} \\left( \\frac{P_x}{\\sigma_n^2} \\right) \\quad \\text{ in dB}\n", "\\end{equation}\n", "\n", "where $P_x$ denotes the average power of the signal $x[k]$ and $\\sigma_n^2$ the variance of the noise $n[k]$. The SNR of the estimate $\\hat{x}[k]$ is computed in the following to quantify the gain in SNR achieved by averaging. The average power $P_x$ of the signal is assumed to be known, the power of the noise $\\sigma_x^2$ can be computed from its ACF. Repeated application of above findings for the AWGN model yields\n", "\n", "\\begin{equation}\n", "\\sigma_n^2 = \\frac{1}{N^2} \\, ( N \\cdot N_0 ) = \\frac{N_0}{N}\n", "\\end{equation}\n", "\n", "since the scaling $\\frac{1}{N}$ in above sum results in a $\\frac{1}{N^2}$ scaling of the variance and $N$ uncorrelated instances of $n_i[k]$ with power $N_0$ are summed up. The SNR of the estimate follows then as\n", "\n", "\\begin{equation}\n", "\\mathrm{SNR} = 10 \\cdot \\log_{10} \\left( P_x \\right) - 10 \\cdot \\log_{10} \\left( N_0 \\right) + 10 \\cdot \\log_{10} \\left( N \\right) \\quad \\text{ in dB}\n", "\\end{equation}\n", "\n", "By averaging over $N$ observations, an average gain of $10 \\cdot \\log_{10} \\left( N \\right)$ dB in terms of SNR can be achieved.\n", "\n", "The following numerical example illustrates the denoising of a cosine signal superimposed by unit variance white Gaussian noise. One particular observation $y_i[k]$, the estimate $\\hat{x}[k]$ by averaging over $N$ observations and the resulting SNR is shown." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTggMCBvYmoKPDwgL04gMTkgMCBSIC9rIDIwIDAgUiAveCAyMSAwIFIgL3kgMjIgMCBS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NcsYCRNFIjz5jqbVE+taNNIyEtTGEaxqA7w7/TBOAAATccsCZJ9KlLPkxG+x9LMGV/r+AZ9HVJYKZW5kc3RyZWFtCmVuZG9iagoyNSAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMgL0NoYXJQcm9jcyAyNiAwIFIKL0VuY29kaW5nIDw8Ci9EaWZmZXJlbmNlcyBbIDMyIC9zcGFjZSA0NiAvcGVyaW9kIDQ4IC96ZXJvIC9vbmUgL3R3byAvdGhyZWUgL2ZvdXIgL2ZpdmUgL3NpeCAvc2V2ZW4KL2VpZ2h0IDY1IC9BIC9CIDc4IC9OIC9PIDgyIC9SIC9TIDkxIC9icmFja2V0bGVmdCA5MyAvYnJhY2tldHJpZ2h0IDk3IC9hIC9iCjEwMCAvZCAvZSAvZiAvZyAvaCAvaSAxMDggL2wgL20gL24gL28gMTE0IC9yIC9zIC90IC91IC92IDEyMSAveSBdCi9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udERlc2NyaXB0b3IgMjQgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMjMgMCBSID4+CmVuZG9iagoyNCAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjIzIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjI2IDAgb2JqCjw8IC9BIDI3IDAgUiAvQiAyOCAwIFIgL04gMjkgMCBSIC9PIDMwIDAgUiAvUiAzMSAwIFIgL1MgMzIgMCBSIC9hIDMzIDAgUgovYiAzNCAwIFIgL2JyYWNrZXRsZWZ0IDM1IDAgUiAvYnJhY2tldHJpZ2h0IDM2IDAgUiAvZCAzNyAwIFIgL2UgMzggMCBSCi9laWdodCAzOSAwIFIgL2YgNDAgMCBSIC9maXZlIDQxIDAgUiAvZm91ciA0MiAwIFIgL2cgNDMgMCBSIC9oIDQ0IDAgUgovaSA0NSAwIFIgL2wgNDYgMCBSIC9tIDQ3IDAgUiAvbiA0OSAwIFIgL28gNTAgMCBSIC9vbmUgNTEgMCBSCi9wZXJpb2QgNTIgMCBSIC9yIDUzIDAgUiAvcyA1NCAwIFIgL3NldmVuIDU1IDAgUiAvc2l4IDU2IDAgUiAvc3BhY2UgNTcgMCBSCi90IDU4IDAgUiAvdGhyZWUgNTkgMCBSIC90d28gNjAgMCBSIC91IDYxIDAgUiAvdiA2MyAwIFIgL3kgNjQgMCBSCi96ZXJvIDY1IDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjUgMCBSIC9GMiAxNyAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EzIDw8IC9DQSAwLjggL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMC44ID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9GMS1EZWphVnVTYW5zLW1pbnVzIDQ4IDAgUiAvRjEtRGVqYVZ1U2Fucy11bmkwMzAyIDYyIDAgUiAvTTAgMTMgMCBSCi9NMSAxNCAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9CQm94IFsgLTggLTggOCA4IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxMzEgL1N1YnR5cGUgL0Zvcm0KL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicbZBBDoQgDEX3PUUv8ElLRWXr0mu4mUzi/bcDcUBM3TTQvjx+Uf6S8E6lwPgkCUtOs+R605DSukyMGObVsijHoFEt1s51OKjP0HBjdIuxFKbU1uh4o5vpNt6TP/qwWSFGPxwOr4R7FkMmXCkxBoffCy/bw/8Rnl7UwB+ijX5jWkP9CmVuZHN0cmVhbQplbmRvYmoKMTQgMCBvYmoKPDwgL0JCb3ggWyAtOCAtOCA4IDggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDEzMSAvU3VidHlwZSAvRm9ybQovVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJxtkEEOhCAMRfc9RS/wSUtFZevSa7iZTOL9twNxQEzdNNC+PH5R/pLwTqXA+CQJS06z5HrTkNK6TIwY5tWyKMegUS3WznU4qM/QcGN0i7EUptTW6Hijm+k23pM/+rBZIUY/HA6vhHsWQyZcKTEGh98LL9vD/xGeXtTAH6KNfmNaQ/0KZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTEgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iago2NiAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjExMjAxMTEwMTM4KzAyJzAwJykKL0NyZWF0b3IgKE1hdHBsb3RsaWIgdjMuNC4zLCBodHRwczovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKE1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgdjMuNC4zKSA+PgplbmRvYmoKeHJlZgowIDY3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDIzODE2IDAwMDAwIG4gCjAwMDAwMjI5ODAgMDAwMDAgbiAKMDAwMDAyMzAyMyAwMDAwMCBuIAowMDAwMDIzMTY1IDAwMDAwIG4gCjAwMDAwMjMxODYgMDAwMDAgbiAKMDAwMDAyMzIwNyAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDA0MDIgMDAwMDAgbiAKMDAwMDAwODQzOSAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDg0MTggMDAwMDAgbiAKMDAwMDAyMzMwOCAwMDAwMCBuIAowMDAwMDIzNTYyIDAwMDAwIG4gCjAwMDAwMDk2OTYgMDAwMDAgbiAKMDAwMDAwOTQ4OCAwMDAwMCBuIAowMDAwMDA5MTU2IDAwMDAwIG4gCjAwMDAwMTA3NDkgMDAwMDAgbiAKMDAwMDAwODQ1OSAwMDAwMCBuIAowMDAwMDA4NjE0IDAwMDAwIG4gCjAwMDAwMDg3NzUgMDAwMDAgbiAKMDAwMDAwODk0MiAwMDAwMCBuIAowMDAwMDIxNDc4IDAwMDAwIG4gCjAwMDAwMjEyNzggMDAwMDAgbiAKMDAwMDAyMDc3NCAwMDAwMCBuIAowMDAwMDIyNTMxIDAwMDAwIG4gCjAwMDAwMTA4MTEgMDAwMDAgbiAKMDAwMDAxMDk3NCAwMDAwMCBuIAowMDAwMDExMzExIDAwMDAwIG4gCjAwMDAwMTE0NjAgMDAwMDAgbiAKMDAwMDAxMTc0OCAwMDAwMCBuIAowMDAwMDEyMDUzIDAwMDAwIG4gCjAwMDAwMTI0NjcgMDAwMDAgbiAKMDAwMDAxMjg0NyAwMDAwMCBuIAowMDAwMDEzMTY0IDAwMDAwIG4gCjAwMDAwMTMzMDkgMDAwMDAgbiAKMDAwMDAxMzQ1MCAwMDAwMCBuIAowMDAwMDEzNzU0IDAwMDAwIG4gCjAwMDAwMTQwNzYgMDAwMDAgbiAKMDAwMDAxNDU0NCAwMDAwMCBuIAowMDAwMDE0NzUzIDAwMDAwIG4gCjAwMDAwMTUwNzUgMDAwMDAgbiAKMDAwMDAxNTI0MSAwMDAwMCBuIAowMDAwMDE1NjU1IDAwMDAwIG4gCjAwMDAwMTU4OTIgMDAwMDAgbiAKMDAwMDAxNjAzNiAwMDAwMCBuIAowMDAwMDE2MTU1IDAwMDAwIG4gCjAwMDAwMTY0ODYgMDAwMDAgbiAKMDAwMDAxNjY1OCAwMDAwMCBuIAowMDAwMDE2ODk0IDAwMDAwIG4gCjAwMDAwMTcxODUgMDAwMDAgbiAKMDAwMDAxNzM0MCAwMDAwMCBuIAowMDAwMDE3NDYzIDAwMDAwIG4gCjAwMDAwMTc2OTYgMDAwMDAgbiAKMDAwMDAxODEwMyAwMDAwMCBuIAowMDAwMDE4MjQ1IDAwMDAwIG4gCjAwMDAwMTg2MzggMDAwMDAgbiAKMDAwMDAxODcyOCAwMDAwMCBuIAowMDAwMDE4OTM0IDAwMDAwIG4gCjAwMDAwMTkzNDcgMDAwMDAgbiAKMDAwMDAxOTY3MSAwMDAwMCBuIAowMDAwMDE5OTE4IDAwMDAwIG4gCjAwMDAwMjAxMjUgMDAwMDAgbiAKMDAwMDAyMDI3MiAwMDAwMCBuIAowMDAwMDIwNDg2IDAwMDAwIG4gCjAwMDAwMjM4NzYgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyA2NiAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgNjcgPj4Kc3RhcnR4cmVmCjI0MDMzCiUlRU9GCg==\n", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-12-01T11:01:38.590949\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.4.3, 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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "K = 1024 # number of samples\n", "Nmax = 50 # number of observations\n", "\n", "# generate signals\n", "x = np.cos(2 * np.pi / 50 * np.arange(N))\n", "np.random.seed(2)\n", "n = np.random.normal(size=(Nmax, K))\n", "# AWGN model\n", "y = np.tile(x, (Nmax, 1)) + n\n", "# repeated averaging up to Nmax\n", "xhat = np.zeros_like(y)\n", "for i in range(Nmax):\n", " xhat[i, :] = 1 / (i + 1) * np.sum(y[: i + 1, :], axis=0)\n", "# compute SNR for all averages\n", "Px = np.var(x)\n", "Pn = np.var(xhat - x, axis=1)\n", "SNR = 10 * np.log10(Px / Pn)\n", "\n", "# plot results\n", "plt.figure(figsize=(10, 10))\n", "\n", "plt.subplot(311)\n", "plt.stem(y[0, :100])\n", "plt.title(\"One observation\")\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"$y_0[k]$\")\n", "plt.ylim([-3, 3])\n", "\n", "plt.subplot(312)\n", "plt.stem(xhat[Nmax - 1, :100])\n", "plt.title(\"Average over {:2.0f} observations\".format(Nmax))\n", "plt.xlabel(r\"$k$\")\n", "plt.ylabel(r\"$\\hat{x}[k]$\")\n", "plt.ylim([-3, 3])\n", "\n", "plt.subplot(313)\n", "plt.plot(\n", " range(1, Nmax + 1), 10 * np.log10(Px * range(1, Nmax + 1)), \"--\", label=\"theory\"\n", ")\n", "plt.plot(range(1, Nmax + 1), SNR, label=\"simulated\")\n", "plt.title(\"SNR\")\n", "plt.xlabel(\"number of averages $N$\")\n", "plt.ylabel(\"SNR in dB\")\n", "plt.grid()\n", "plt.legend()\n", "\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Excercise**\n", "\n", "* How does the SNR change if the instances $n_i[k]$ of the additive noise are mutually correlated?\n", "\n", "Solution: The gain in terms of SNR will be lower since the mutually correlated AWGNs do not average out in the estimate $\\hat{x}[k]$. For instance, the averaging will have no effect if the samples of the additive noise are equal for all observed signals $y_i[k] = x[k] + n_0[k]$." ] }, { "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.16" } }, "nbformat": 4, "nbformat_minor": 1 }