{ "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=0$ and $b=1$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "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(size=K)\n", "n = np.random.uniform(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 - \\frac{1}{2})$, 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 - \\frac{1}{2}) * \\text{rect}(\\theta - \\frac{1}{2})$. 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 -1| & \\text{for } 0 < \\theta < 2 \\\\\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 bus finite number of independent uniformly distributed random signals yields" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\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(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": { "image/png": "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\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, -.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, -.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": { "image/png": "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\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(range(1, Nmax+1), 10*np.log10(Px * range(1, Nmax+1)), '--', label='theory')\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, 2016-2018*." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 1 }