{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bit error rate computation in $\\alpha-\\mu$ fading channel" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "%config IPython.matplotlib.backend = \"retina\"\n", "import matplotlib.pyplot as plt\n", "from matplotlib import rcParams\n", "rcParams[\"figure.dpi\"] = 150\n", "rcParams[\"savefig.dpi\"] = 150\n", "rcParams[\"text.usetex\"] = True\n", "import tqdm" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import scipy.special as sps\n", "import scipy.stats as stats\n", "import scipy.integrate as integrate" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "np.warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from maoud import AlphaMu" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "K = int(1e7) # Number of Monte Carlo realizations\n", "N = 1 # Number of transmitted samples\n", "alpha, mu = 2., 5." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "alphamu = AlphaMu(alpha, mu)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x = np.linspace(1e-3, 5., 1000) # Support of the fading density\n", "h = alphamu.rvs(x=x, size=K)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(x, alphamu.pdf(x))\n", "hist = plt.hist(h, bins=100, density=True, color='blue', alpha=.3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Probabilistic Analysis" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "snr_list = np.linspace(-20, 50, 15) # signal to noise ratio in dB\n", "a = 1\n", "pf = np.zeros(len(snr_list))\n", "pm = np.zeros(len(snr_list))\n", "pm_awgn = np.zeros(len(snr_list))\n", "for l, snr_db in enumerate(snr_list):\n", " sigma2 = a * (10 ** (-snr_db / 10.))\n", " h = alphamu.rvs(x=x, size=K)\n", " w = np.sqrt(sigma2)*np.random.randn(K)\n", " y = h*a + w\n", " # computing probabilities of false alarm and miss detection\n", " pf[l] = np.sum(w > a / 2.)\n", " pm[l] = np.sum((y-a)**2 > y ** 2)\n", "pf = pf / K\n", "pm = pm / K\n", "pe = .5*(pf + pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Theorectical/Numerical Analysis" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "snr_array = np.linspace(-20, 50, 1000)\n", "sigma = np.sqrt(a * (10 ** (-snr_array / 10.)))\n", "Pm = np.zeros(len(snr_array))\n", "Pf = 1.0 - stats.norm.cdf(a / (2 * sigma))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1000/1000 [00:33<00:00, 29.73it/s]\n" ] } ], "source": [ "for l in tqdm.tqdm(range(len(snr_array))):\n", " cdf = lambda x: stats.norm.cdf(a * (1 - 2 * x) / (2 * sigma[l]))*alphamu.pdf(x) \n", " Pm[l] = integrate.quad(cdf, 0.0, np.inf, epsrel=1e-9, epsabs=0)[0]\n", "Pe = .5 * (Pf + Pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nT3+a4uJilixZwvTp02OOQWQw8+bNo6qqqt/88vJyAoFAxNfy8vLGIrSEN5Kuq6lESdsj8RgRTaIz\n2CA0Bjhy5Ai//vWv+fWvf016ejoFBQVcdtllfPazn+Xoo4/2KGpJZT6fj5KSkn7zKyoqCAQCEV8b\nL6qrq8nMzKSoqKjP/LKyMsrKyjyKKnEoU0jK623sNmkSW4FunPHZV06axGXFxbS2tvLd736XuXPn\ncvjwYZ588kk+//nPc+KJJ1JaWspzzz2HxugXGRtVVVXU1NR4HUbCUtKWcaF640bOWbKEQmOYDBQa\nwycuuYTqjRs5/fTTufHGG3nhhRdobW3lpptuYvbs2Rw4cIDq6mrOOecc5s6dy09+8hMOHDjg9a6I\nyDimpC3jQrSN3U4//XS+853v8Le//Y1nnnmGK664gilTptDa2srXvvY1Zs6cyXXXXcfu3bs92pPU\nY63lnXfeSaopUWpeKisryc7OZvr06RQXFxMIBPotEwgEKC4uZvr06WRnZ1NeXh5xXaWlpb3rKiws\n7NcgK9h4rr29nYaGBvLz8yksLBz2dsrLy8nOzsYY07tcIBCgtLS0tyFYsFGYMaZ3PYM1FBtoncG4\ngscp9PVkpXvaMq5E29gtLS2NRYsWsWjRIu644w4eeughfvKTn/C///u/3Hrrrdx+++0sWbKENWvW\nkJ+f3/s+Dd4yfAcPHky6vvJdXV2et3coLi4mLy+P8vJy6uvre1uX19bW9i4TCASYPXs2mZmZvffL\n165dS3t7e+9ygUCA/Px89u/fz+rVq/H5fNTW1pKfn09tbW2/e8t1dXWUl5eTl5dHcXHxsLfT3t5O\nSUkJ+fn5tLW1UV1d3ZtIi4uLKS4uZt68eb2J1e/3D3gMhlpnSUkJDQ0NVFVVUVpait/vp729fdAG\nfwnPWqvJ4wloycnJsZLYjhw5Yn/zm9/YCy+80OKMsmoBe9FFF9lnnnnG/ltxsU0zxgI2zRj7b8XF\n9sCBA16H7bmDBw/a/Px8m5+fbw8ePNjv9a6urj7HMxmmrq6uUTlWfr/fOl/LA6utrbWAzcvL6/de\nn8/XZ15RUZH1+Xy2s7Ozd15bW5sFeudFWibS/Pr6+t79r6qqGvZ2ysrKLGCbmpr67VPo+/x+vy0q\nKhpwv0PfH+06wwXfN9T6BzLUZzpcTk6OBVpsHPKFqsdFopSWlsanP/1pnnzySVpaWrjiiitIS0vj\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3.2360679775, 2))\n", "ax.semilogy(snr_array, Pe, 'k-', linewidth=1, label=r\"Theorectical\")\n", "ax.semilogy(snr_list, pe, 'o', color='red', markeredgecolor='k', mew=.6, markersize=3., label=r\"Simulation\")\n", "plt.xticks([-20, -10, 0, 10, 20, 30, 40, 50])\n", "plt.ylabel(r'Bit Error Rate')\n", "plt.xlabel(r'Signal-to-noise ratio [dB]')\n", "plt.legend(fancybox=False, numpoints=1, edgecolor='k')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }