{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Estimation of time delay" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The signal of interest is\n", "\\begin{align}\n", " z(t)=A e^{-\\frac{(t-t_c)^2}{2b_w^2}}\\sin(2\\pi f t)\n", "\\end{align}\n", "of width $b_w$ and frequency $f$. In this example we will take $A=b_w=f=1$ and set $t_c=0$.<br>\n", "The probability density function (PDF),\n", "\n", "\\begin{align} s(t) = B(z)(t) := \\frac{z^2(t)}{\\int_{\\Omega_s} z^2(t)dt} \\end{align}\n", "\n", "In this example, we are interested in estimating the time delay ($\\tau$), i.e. $g_p(t) = t - \\tau$. Therefore $z_g(t)=z(t - \\tau)$ and $s_g(t) = B(z_g)(t)$. \n", "\n", "Normalized measured signal with noise $\\eta \\sim \\mathcal{N}(0,\\sigma^2)$ is given by,\n", "\\begin{align} r(t) = B(z_g + \\eta)(t) \\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameter estimation in the CDT domain\n", "Let, $\\hat{s}$ and $\\hat{r}$ be the CDTs of $s(t)$ and $r(t)$, respectively. The time delay estimate is calculated as,\n", "\\begin{align}\n", " \\widetilde{\\tau}=\\mu_r - \\mu_s\n", "\\end{align}\n", "where $\\mu_s$ and $\\mu_r$ are center of mass of signals $s$ and $r$, respectively." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example\n", "#### Create $s(t)$ and $r(t)$" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SNR: 9.47544940682685 dB\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x360 with 2 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# To use the CDT first install the PyTransKit package using:\n", "# pip install pytranskit\n", "from pytranskit.optrans.continuous.cdt import CDT\n", "\n", "N = 400\n", "dt = 0.025\n", "t = np.linspace(-N/2*dt, (N/2-1)*dt, N) \n", "f = 1\n", "epsilon = 1e-8\n", "\n", "# Original signal\n", "gwin = np.exp(-t**2/2)\n", "z = gwin*np.sin(2*np.pi*f*t) + epsilon\n", "s = z**2/np.linalg.norm(z)**2\n", "\n", "# zero mean additive Gaussian noise\n", "sigma = 0.1 # standard deviation\n", "SNRdb = 10*np.log10(np.mean(z**2)/sigma**2)\n", "print('SNR: {} dB'.format(SNRdb))\n", "noise = np.random.normal(0,sigma,N)\n", "\n", "# Signal after delay\n", "tau = 50.3*dt\n", "gwin = np.exp(-(t - tau)**2/2)\n", "zg = gwin*np.sin(2*np.pi*f*(t - tau)) + noise + epsilon\n", "r = zg**2/np.linalg.norm(zg)**2\n", "\n", "# Plot s and r\n", "fontSize=14\n", "fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(10,5))\n", "ax[0].plot(t, s, 'b-',linewidth=2)\n", "ax[0].set_title('$s(t)$',fontsize=fontSize)\n", "\n", "ax[1].plot(t, r, 'r-',linewidth=2)\n", "ax[1].set_title('$r(t)$',fontsize=fontSize)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Noise correction\n", "Expression of noise-corrected CDF is given by,\n", "\\begin{align}\n", " \\tilde{S}_g(t) = \\frac{E[R(t)]\\{\\mathcal{E}_z+\\sigma^2(t_N-t_1)\\}-\\sigma^2(t-t_1)}{\\mathcal{E}_z}, \\quad t_1\\leq t \\leq t_N\n", "\\end{align}\n", "where $R(t)$ is the CDF associated with $r(t)$, $\\sigma$ is the standard deviation of noise, and $\\mathcal{E}_z$ is the total energy of the noise free signal." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x360 with 2 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x360 with 2 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Calculate the noise-corrected CDF\n", "R = np.cumsum(r) # CDF of r(t)\n", "Ez = np.mean(z**2)*(t[-1] - t[0]) # Energy of the signal\n", "Stilde = (R*(Ez+sigma**2*(t[-1]-t[0])) - sigma**2*(t-t[0]))/Ez\n", "\n", "# Preserve the non-decreasing property of CDFs\n", "mind = np.argmin(Stilde)\n", "Mind = np.argmax(Stilde)\n", "Stilde[0:mind] = Stilde[mind]\n", "Stilde[Mind:] = Stilde[Mind]\n", "for i in range(len(Stilde)-1):\n", " if Stilde[i+1]<=Stilde[i]:\n", " Stilde[i+1] = Stilde[i] + epsilon\n", " \n", "Stilde = (Stilde - np.min(Stilde))/(np.max(Stilde) - np.min(Stilde))\n", "\n", "# Plot R and Stilde\n", "fontSize=14\n", "fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(10,5))\n", "ax[0].plot(t, R, 'r-',linewidth=2)\n", "ax[0].set_title('$R(t)$',fontsize=fontSize)\n", "\n", "ax[1].plot(t, Stilde, 'k--',linewidth=2)\n", "ax[1].set_title('$\\widetilde{S}(t)$',fontsize=fontSize)\n", "\n", "plt.show()\n", "\n", "# Calculate the noise-corrected PDF\n", "sg = Stilde\n", "sg[1:] -= sg[:-1].copy()\n", "sg += epsilon\n", "\n", "# Plot R and Stilde\n", "fontSize=14\n", "fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(10,5))\n", "ax[0].plot(t, r, 'r-',linewidth=2)\n", "ax[0].set_title('$r(t)$',fontsize=fontSize)\n", "\n", "ax[1].plot(t, sg, 'k--',linewidth=2)\n", "ax[1].set_title('$\\widetilde{s}_g(t)$',fontsize=fontSize)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate CDTs using PyTransKit package" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x360 with 2 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Reference signal\n", "t0 = np.linspace(0, 1, N)\n", "z0= np.ones(t0.size)+epsilon\n", "s0 = z0**2/np.linalg.norm(z0)**2\n", "\n", "# Create a CDT object\n", "cdt = CDT()\n", "\n", "# Compute the forward transform\n", "s_hat, s_hat_old, xtilde = cdt.forward(t0, s0, t, s, rm_edge=False)\n", "sg_hat, sg_hat_old, xtilde = cdt.forward(t0, s0, t, sg, rm_edge=False)\n", "\n", "# remove the edges\n", "s_hat = s_hat[25:N-25]\n", "sg_hat = sg_hat[25:N-25]\n", "xtilde = xtilde[25:N-25]\n", "\n", "# Plot s_hat and sg_hat\n", "fontSize=14\n", "fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(10,5))\n", "ax[0].plot(xtilde, s_hat, 'b-',linewidth=2)\n", "ax[0].set_title('$\\widehat{s}(t)$',fontsize=fontSize)\n", "\n", "ax[1].plot(xtilde, sg_hat, 'r-',linewidth=2)\n", "ax[1].set_title('$\\widehat{s}_g(t)$',fontsize=fontSize)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate time delay estimate" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "True value of time delay: 1.2575 seconds\n", "Estimated value of time delay: 1.2562758076649236 seconds\n", "\n" ] } ], "source": [ "estimate = np.mean(sg_hat) - np.mean(s_hat)\n", "\n", "print('\\nTrue value of time delay: '+str(tau) + ' seconds')\n", "print('Estimated value of time delay: '+str(estimate) + ' seconds\\n')\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 2 }