{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Performing spectrum sensing on complex $\\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.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 ComplexAlphaMu, AlphaMu\n", "from maoud import mpsk\n", "from maoud import marcumq" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "K = int(1e6) # Number of Monte Carlo realizations\n", "N = 25 # Number of transmitted samples\n", "L = 15 # Number of pairs to simulate\n", "M = 64. # Size of the constellation\n", "alpha, mu = 2., 1." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "alphamu = ComplexAlphaMu(alpha, mu)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x = np.linspace(1e-3, 3., 1000) # Support of the fading density" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(x, alphamu.envelope_pdf(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Probabilistic Analysis" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "s = mpsk(M, (K, N))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 15/15 [00:00<00:00, 220.03it/s]\n" ] } ], "source": [ "Es = 1.0/M\n", "snr_db = 5\n", "sigma2 = Es * (10 ** (-snr_db / 10.))\n", "\n", "h = alphamu.rvs(x=x, y=x, size=K).reshape(-1, 1)\n", "w = np.sqrt(sigma2/2)*np.random.randn(K, N) + 1j*np.sqrt(sigma2/2)*np.random.randn(K, N)\n", "\n", "H0 = w \n", "H1 = h*s + w\n", "\n", "# energy statistic\n", "EH0 = H0.real ** 2 + H0.imag ** 2\n", "EH1 = H1.real ** 2 + H1.imag ** 2\n", "\n", "EH0 = np.sum(EH0, 1)\n", "EH1 = np.sum(EH1, 1)\n", "\n", "# generate the thresholds\n", "delta = np.linspace(np.min(EH0), np.max(EH0), L)\n", "\n", "pf = np.zeros(L)\n", "pd = np.zeros(L)\n", "\n", "# computing probabilities of false alarm and detection\n", "for l in tqdm.tqdm(range(L)):\n", " pf[l] = np.sum(EH0 > delta[l])\n", " pd[l] = np.sum(EH1 > delta[l])\n", "\n", "pf = pf / K\n", "pd = pd / K" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Numerical/Theorectical Analysis" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 100/100 [00:17<00:00, 5.76it/s]\n" ] } ], "source": [ "T = 100\n", "delta = np.linspace(np.min(EH0), np.max(EH0), T)\n", "\n", "Pd = np.zeros(T)\n", "Pf = 1.0 - sps.gammainc(N, delta / sigma2)\n", "for l in tqdm.tqdm(range(T)):\n", " cdf = lambda x: marcumq(np.sqrt(2.0*delta[l]/sigma2),N,np.sqrt(2*x*x*N*Es/sigma2))*alphamu.envelope_pdf(x) \n", " Pd[l] = integrate.quad(cdf, 0.0, np.inf, epsrel=1e-9, epsabs=0)[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe0AAAE/CAYAAABrQpvfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAXEQAAFxEByibzPwAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X9wXHd97//n20n8U3FWciBBOCXe\nJVxw2iFIMj86JjREytze9jtJuSuZApfydWIphd4ZmFAthunA9A+MBLfTdqZQKYnLpYUbSwuNwx+d\nRnIoJExTbAluO0knJVrnV5UfxvI6kX/JiT/3j3POerXalVbaszq769dj5oyk8/O9u/a+z+fnMecc\nIiIiUvvWRB2AiIiIlEdJW0REpE4oaYuIiNQJJW0REZE6oaQtIiJSJ5S0RURE6oSStoiISJ1Q0hYR\nEakTStoiIiJ1QklbRESkTihpi4iI1AklbRERkTqhpC0iIlInlLRFRETqhJK2iIhInVDSFhERqROX\nRx2AgJm9BGwEno86FhERCd11wGnn3LWVnsiccyHEI5Uws1fXrVt3ZSKRiDoUEREJ2dTUFOfOnXvN\nObe50nOppF0bnk8kEtufeOKJqOMQEZGQ3XjjjTz55JOh1KSqTVtERKROKGmLiIjUCSVtERGROqGk\nLSIiUieUtEVEROqEkrasiunpaR599FGmp6ejDkVEpG4paTeI2dlZstksp06d4vz589TK+PvZ2Vk+\n1tPDdVu3cvPNN3Pd1q18rKeH2dnZqEMTEak7GqfdIL70pS/xl3/5l/PWrV27lrVr13LFFVfkfl9q\nWbduXdnrg3X52wrXfflLX+LJH/2IcefYCTzmHHc++CB3XbjA/xkdxcyiecPKMD09zdTUFIlEgtbW\n1qjDERFR0m4Uc3NzRdcVW7+aDDgE3OL/fQtw3/nzdH7/+xxYs4Z169blliDZl1rWr1+/6Lrg93LW\n5S/B+uAGYnZ2lt7duzmQTnPBOdaYsSuZZHj/fpqamiJ6JyujGxCRxqBpTGuAmT2xffv2imZEc87x\n+uuv5xJ1seX8+fOLbi9czp07V3Jd/rbCdcHPV199lWPHjjEHXJEX6xywrtI3rQqChP762bM0nzvH\nd8CrHQA+aYZ785vZ8YEPzEv4GzZsWPB7sZ+Fv+cvl19evXvnRrwBEak3/oxoTzrnbqz0XCppNwgz\n44orruCKK65g06ZNUYcDeKW767Zu5THnciVt8JLgGjMmJidpaWnh3LlzK1rOnj1b9u/Ffp49e3Ze\nvMExBvyQ+bUD/9s5Ol9+mQcffDD09+myyy5jw4YNbNy4MZfIi/2e/zNYCv8Olk2bNrFx40ZS99zD\nvz788PzmiYMH6d29m++NjIT+Wiqh2gCRpSlpS9W0trayK5nkzoMHuW9uLldqvWvtWnbdfjs33XRT\npPE55zh//nwugZ85c4af/vSnfPzjH2dnwb47AQf88R//MW9961vnHVP4+5kzZ+b9nr8uf//AG2+8\nwezsbFU65xVtnpibo3N0lIn/8l+IxWJs2rRp3hIk/aampnk/g9/z1we/r1+/fsX9E1QbIFI+VY/X\ngDCqx2tVsS/kj3Z3M3T//TX5hRzUDowX1A48AnSZ8fwLL4RSCrxw4QLnzp2bl8yD5fTp0wt+X+xn\n/nLq1CnOnDnDqVOnePXVV5mdnV2V5onLLrssl8Sbmpq48sorF/x+5ZVXzvt98+bNXHnllfzFN77B\n0z/9Kftffz13Y3fn2rW8//bbI68NUOlfwhBm9biSdg1o5KQdmJ6eJpPJEI/Ha/7L72M9PTxepHag\nFpLIcix1A/J/HniADRs2cOrUqZLL7Oxs0b+DmoEzZ85UHGdhbUAQYyfw1q1baWlpYfPmzVx11VVs\n3rw5t1x11VULllgsRiwWy+27Zs3KRrWq9C9hUtJuMJdC0q4n9VY7sJhq34C88cYb85J4/vLaa6/l\nfpZapqeneeqpp6pSG2BmbN68OZfIY7EYzc3N835vaWmhubk593uw/M+77+ZfHnqI+8+fr7nSv9Qf\nJe0Go6Rdm+qpdqCUWr8BWao24MGDB1m/fj0nT57k1Vdf5eTJkwt+L1yy2Sznzp2rKK7FSv+f/dzn\nuP7667n66qu5+uqr2bJlC1dffTVvetOb2LhxY0XXLUXV9PVNSbvBKGlLtdXyDUg1agPOnj2bS+An\nT57kxIkTZLNZstksJ06cKLnMzMxw8uRJgBWV/jdu3Mib3vQmrr76at785jfnlje96U2536+55hqu\nueYa3vzmN3PFFVcsej5V0zcGJe0Go6Qtl7Jaqw147rnn2Hb99cVL/8AnPvlJzpw5w/Hjx/nVr37F\nr371K44dO8b58+eXfa0tW7Zw7bXX8pa3vCX3M1haW1v5+r59PHHokKrp65ySdoNR0haprdqA5Zb+\nnXO89tprHDt2bN7yyiuv8Morr3Ds2DFefvllXnnlFV5++WWOHTvGG2+8sWQcparpu4CvDQ7yG7/x\nG1x33XVcd911bN68OZTXLuFT0m4wStoitaXapf8LFy5w/PhxXnrpJV5++WVefPFFXnrpJV588UVe\nfPHF3A3MCy+8UHY1fSwW421vexu/9mu/xvXXX8/111/Ptm3bcstVV1217DjVlh4OJe0Go6QtUpui\nLP0v1kmvE7jlwx/m2LFjPP/882Sz2SXP19LSQiKRyC033HADN9xwA+94xzvYsmXLvMlx1JYeLiXt\nBqOkLSLFlFtN/9prr/Hcc8/x7LPP8uyzz/LMM8/wzDPPcPToUY4ePcqvfvWrRa/T3NzMO97xDt71\nrnfxzne+k3946CGePXyY/WpLD4WSdoNR0haRYsKqpp+dnSWTyTA1NcXTTz+d+/kf//EfPP/88wv2\nL9mWbsbkz3/Ou9/97kpf2iVFSbvBKGmLyGKqWU1/+vRppqameOqpp/j3f/93fvKTnzA+Pr5oW/o1\n11xDW1sbbW1ttLe309HRwdatW1c8/3yjU9JuMEraIlIrlmpLL5Uxrr32Wt73vvfxvve9j9/8zd9k\nx44dVZtspt7o0ZwiIlIViz2d76O338593/42//qv/8rk5CSTk5NMTEzwb//2b7z00kscPHiQgwcP\nAnD55Zfznve8hw996EP81m/9Fjt37lzQg12905dPJe0aoJK2iNSS5balnz59mp///Of87Gc/45//\n+Z/56U9/yvT09Lx91qxZQ0dHB7fddhs7d+7kb+69l9Ef/OCS6J2u6vEGo6QtIrVopW3pzjmeffZZ\nHnvsMX784x/zT//0Tzz99NO57ZcB1wJ/C5dE73Ql7QajpC0ije6FF15gfHycBx98kIcOHizZO31i\ncpKbbropoiirI8ykvbKHzYqIiCzD1q1b+dSnPsU999yDwyth59sJXHCOtrY2brvtNr7zne/w2muv\nRRBpbVPSFhGRVZNIJFhjxmMF6x/DGx/unGNsbIw/+IM/4C1veQt79uzh8OHDqFbYo6QtIiKrJtc7\nfe1aHsEb//0Ifu/07m6efvpp/vRP/5QbbriBU6dOcd999/He976X9773vXz3u99lbm4u4lcQrVVJ\n2mb2YTO7y8z0GBoRkUvc8P79vP/22+kyYx1eW/YH7riD4f37SSQS/Mmf/AlPPfUUP/nJT/jEJz7B\nunXrOHLkCJ/4xCfYtm0bf/Znf8apU6eifhmRCLUjmpl9Dfjvzrkb/L+vAo4AcfyaD6DNOfd/Q7to\nA1BHNBG5FJXbO/3YsWMMDw/zV3/1V7z44osAXH311fT39/NHf/RHbNiwoabHfNds73EzexoYdc7t\n9f/+a2AP3uNfJ/Gmsz3mnPuvoV20AShpi4gsbW5ujr/927/lq1/9KplMBoC3vvWt/FprK/9y5EjN\njvmu5d7jceBw3t89wKRz7hHnXBZ4AC+Bi4iILMvatWu58847eeqpp/ibv/kbrrvuOl76z//kucOH\nGXeOOWDcOR4/eJDe3bujDrcqqtGm7QDMbBsQA8YLti/94FcREZESLr/8cj71qU/xox/9CIc3Scst\neA84uQW4b26OA+n0glnZGkHYSfsQ8EUzuwkYwEvgB/K278Br4xYREanI9PQ0Fyg95juoQm8kYSft\nPuDtwASQBAadc7+AXKe0JDAW8jVFROQStNSY74mJiQiiqq5Qk7ZzLgNcD9wGNAcd0vJ0A/eGeU0R\nEbk0lRrz/Skz1gCf/exn+exnP8sbb7wRbaAhCr1N2zl30jl3yDl3MlhnZh/GS9hj+etFREQqUWzM\n985kkv69XpnxL/7iL/jIRz7C6dOnow00JKE+T7uMcdp/bWbtGqctIiJhaGpq4nsjI3yjyJjvm266\niU9+8pM89NBD/O7v/i4//OEP2bRpU8QRVybsknYSSOf9PYCXsLuAFuD/+uvqlpkNmNmQmY35P2NR\nxyQicqlrbW1l586d8yZW6enpYXx8nCuvvJIf/ehH/M7v/A5nzpyJMMrKaZz2MpjZADDknOtzzgU3\nIociDktERErYuXMnDz/8MJs3b+bHP/4xH//4x+u6jVvjtJcnWfD3PqDNzOJRBCMiIkt7//vfzw9/\n+EPWrl3L3//93/P5z38+6pBWTOO0ly8/QWeLrBMRkRpz880383d/93cA/Pmf/znf+ta3ePTRR+tu\nAhaN014G51zCOZdfc9Dm/6z3GxERkYbX3d3NPffcw2XAZz79aW6++Wau27qVj/X0MDs7G3V4ZWnI\ncdpmFvM7iQ2YWa//s23pI5dtAEj57fUiIlLj/vOZZ2g14xDU5VzloT7la7WYWRIv+W8rljDNbALY\n55xL+3/H8Er/Xf6NRRgxDAAx51xfCOfSU75ERKpsenqa67ZuZdw5bslb/wje+O7nX3ihKo/1DPMp\nXysep21mdwEzzrkf5K27qZxjgyrzZV4vhpeoZ/B6bRcdamVmvUA8SNj+9bJmlgZGgXZ/vyRedf5S\nugtvDPxrhJKwRURkdUxNTXHBuUXnKq+1Z3EXqmRylWG8jmaX5a2b9NeVYkWOKYufOLsBzKyfhT25\nA90s7LEO3lC0fjOLOeeyflJPF9lvUWbWCSSChO3/PeOcm1zuuUREZPXk5iovKGk/BqwxIx6v/T7F\nlSTtL7AwQXdXcL6wdFI8GWeX2L4kv118ANjnl9TBK63XwusWEZFF5OYqP3iQ++bm2ImXsD8J/H//\n7b/VfCkbKkjazrnBIuu+X1k4lcmbnWxmkd0quZU6hFctP5q/Uh3RRETqw/D+/fTu3k1XOs0F5zC8\nHtlvroOEDdWZXCVKLf7PYkk0SORbVnpy51yzc84Kl3KPN7Mnii1AYqUxiYhI+YK5yp9/4QUeffRR\nDoyM8Abwne98h+PHj0cd3pJCfWAI5DqodXMxgRZyzrn3hn3dApoPXERESmptbaW1tRXnHG1tbUxO\nTvLtb3+be+65J+rQFhVqSdt/ytcQ3vzizSWWUsk8DItViwfXjexWyjl3Y7EFmIoqJhGRS5mZ8elP\nfxqAb33rW9T6MOiwq8d78XqQNzvn3l5qCfmaOXlty8VuDILSdyjjtEVEpDH8/u//Pk1NTUxNTfH4\n449HHc6iqtGmPeScO1mF85ZrnOLV4y1520VERADYuHEjd9xxBwAPPPBAxNEsLuykPUL0napGgY4i\n69vxHhOqnt4iIjLPRz/6UQBGR0druoo87LnH7wa6zOyrZna9mW0O8/xlxjAMzOSNow6GgvUAe1Y7\nHhERqX2dnZ1s3LiRF198kV/8YtmTdq6asDuibcbrDJbC61x1wszeKFher+D8Q2Y2CgQPIjlkZqP+\ntKL52oEdZtbvz552L3CrZi0TEZFi1q1bR2dnJwD/8A//EHE0pYU95CsN3Ar8nCo8rrLcub79KvBU\n2NcXEZHG9du//ds89NBDjI2N8cUvfjHqcIoKO2l3AGnn3K6QzysiIlJVH/rQhwB4/PHHmZubY+3a\ntRFHtFA1eo+PVeGcIiIiVfXOd76TLVu2cPbsWe6//36mp6ejDmmBsJP2vXgTq4iIiNSVU6dOsWnt\nWgz49Kc/zXVbt/Kxnh5mZ2ejDi0n7KT910DCzH5mZneZ2UfM7MOFS8jXFBERqVjv7t3wyiscAuaA\nced4/OBBb32NCLtNO386zg4WPrpzxc/TFhERqZbp6WkOpNOM5z1r+xbgvrk5utJpvjE9XROP7gw7\naeu50iIiUnempqa44Bw7C9bvBC44RyaTabykHfXztEVERFYikUiwxozH8kraAI8Ba8yIx+NRhTZP\noz1PW0REZNlaW1vZlUxy59q1PILXpv0IcNfatexKJmuilA1K2iIiIgAM79/P+2+/nU5gHd5QqA/c\ncQfD+/dHHNlFStoiIiJAU1MT3xsZ4bOf+xwAv//xj/PdAwdoamqKOLKLlLRFRETy/Pqv/zoAx44d\niziShZS0RURE8rztbW8D4Nlnn404koVWnLSjevSmiIhINQVJ+7nnnqu5Z2tXUtIe4+IjMkVERBrC\ntddeC8CZM2dqagpTqCxpJ4DD+Sv852XfVFlIIiIi0Wlqasp1PnvxxRcjjma+SpL2JN5UpfkMaK7g\nnCIiIpF7y1veAsBLL70UcSTzVTIj2teAETNLADN5679gZncvcpxzzn20guuKiIhU1TXXXMMvf/lL\nXnnllahDmWfFSds5lzazHuALXHwcpwN2LHXoSq8pIiKyGlpaWgCYmZlZYs/VVdHc4865NJAO/jaz\nC0DSOfdIpYGJiIhEZcuWLQAcP3484kjmC3ucdgo4EvI5RUREVlVDlrQLOee+DuCP3+4B2oEW4GfA\nvc65V8O8noiISDVcEkkbwMw+AtzL/F7k3cCgmfU65+4P+5oiIiJh2rzZmzvstddeiziS+UKtHjez\n9+C1cR8CEs65Nc65NcDb8Z5yNmxm7w7zmiIiImELkvarr9ZWBXHYbdoDwJhzrsc5dzRY6ZzLOOe6\ngF/4+4iIiNSsIGmfPHky4kjmCztpdwCji2x/gKWHhImIiETqUilpzwBXLbJ9C/MnYhEREak5mzZt\nAuD06dMRRzJf2En7EPBFM7uycIOZXQ/0AuMhX1NERCRUGzduBBo8aTvn+oAs8IyZ3WNmHzazj5jZ\nPmAKbza0VJjXFBERCVutJu3Qh3wBbcB9wNfxkrT568eBPo3VFhGRWhck7VOnTuGcw8yWOGJ1hJ60\nnXMngW4zu4qLTwE74q8XERGpeRs2bADAOcfc3Bzr1q2LOCJP2G3aOc65k865Q/6ihC0iInVj/fr1\nud+feeaZ6AIpULWkLSIiUo9mZ2f5///H/8i17W5/17v4WE8Ps7OzkcYFStoiIiLz9O7ezb8cPMgh\nYA4Yd47HDx6kd/fuqENT0hYREQlMT09zIJ3m/vPnuQW4ArgFuG9ujgPpNNPT05HGp6QtIiLim5qa\n4oJz7CxYvxO44ByZTCaKsHKUtEVERHyJRII1ZjxWsP4xYI0Z8Xg8irBylLRFRER8ra2t7EomuXPt\nWh7Ba9N+BLhr7Vp2JZO0trZGGl/Yj+bcHOb5REREVtvw/v28//bb6QTWAV1mfOCOOxjevz/q0EIv\naWfN7AEzuyXk84qIiKyKpqYmvjcyQuLtbwfgwMgI3z1wgKampogjCz9pfwFvFrRDZnbcn39cpW8R\nEak7wVSmV1212MMrV1fYDwwZdM69HS9xp4EvASfM7B/N7PfCvFYtMLOxqGMQEZHquOyyywB44403\nIo7koqp0RHPOTTrn+pxzLcAu4CRwn1/6/qqZva0a111NZpYEOs0sFnUsIiISvssv9x7P8frrr0cc\nyUWr0Xv8YX85BDQDtwFH/dJ3XbZ9+4l6R9RxiIhI9QRJu+FL2gD+c7QPAyeAIeA4kHDOdeAl70N4\nbd9frVYMVdQL7Is6CBERqZ6gerxhS9pmdr2Z7TOz43ht2s3A3c65y5xzf+icOwq5J4ANAj1AKswY\nqs3M2oBop8QREZGqq8Xq8bCfpx0kszSwzzn38yX2b8Zr7w6VX309AGSBKSABHHDOTYZw+l3OuZTa\nskVEGtuaNV659sKFCxFHclHYSTsFDC/j+dkjwPhyL+J3ArsX2OacyxbZ5RDeTUPa3z8GTJhZl3Nu\nxaVkM+vFq+oXEZEGF1SPN3LSbmGR0rOZHcAr8f4AvGryUvsWOTaGl6hn/OsULen6iTUeJGz/Olkz\nSwOjQLu/XxLoK+PS3f7xMSBWSdIXEZH6EZS0a6kjWthJux8YA54psf0EXqL8wXJP7JeouwHMrB9I\nlti1m+Kl98NAv5nFnHNZP6mni+xXSieQMLPCkvaAmU0454aXcS4REalxl0JJ25bYPoWfeKuok+LJ\nOLvE9kUVJnkzi+P1Ik+VqKIXEZE61pBt2mb23/F6gQdSZlas2jkOtHExeYYur3PYzCK7VfxcNb8K\nPrj5uNfMDuRXx4uISP1r1OrxFrze2YEdFE+aWeD7VHd8c0vetQoFMW2p9CJ+Vfiyq8PN7IkSmxIl\n1ouISESCpO2ciziSiypO2s65e/E6iGFmF4Ckc+6RSs9bIQ3HEhGRiph5Lb4NVT1eYJhoJx5ZrFo8\nKIUfX41AinHO3VhsvV8C377K4YiIyCIasqSdzzl3d5jnW8H1s/6dUUuRzUHpW0O2RERkSQ3VEc3M\n7gJmgjHX/rqbyjnWOfeLlV63DOMUrx5vydsuIiKyqEarHh8GHHBZ3rpJf10pVuSYsI3iTWFaqB2Y\n1PAsEREpR0OVtIEvsDBBV3sM9pKcc8NmljKzZME0pj3ArdFGJyIi9SIoaTdEm7b/lK7Cdd+vLJzF\n+bORteBNkALeoz0zwFjBjGTtwF5/AhTwhqHdGtIDQ0RE5BLQUEk7Cs65cuYKD6Y8ratHfoqISG1p\nqKRdbqezYqrcEU1ERKRiDZW0WbrTWTGr0RFNRESkYo2WtCPvdCYiIlItDZW0q93pTEREJEq1mLTX\nRB2AiIhILQqSdi1pxBnRREREQlNLJe1GnBFNRESkYg1V0qZGZ0QTEREJU0OUtKOYEU1ERGS1qCOa\niIhInajF6vGqJG0z+7yZHTaz42b2SzP7RzP7vWpcS0REpJpqqaQd6tzjZrYNOIL3POuTQAaYwXtg\nR5eZHXHOvTfMa4qIiFTDpVDSHgKagbudcy3OuQ7n3G3OuRa8R2N2mNk3Q76miIjIJSHspN0JDDnn\n7i3c4D/b+m5gV8jXFBERqZpaqh4PO2lngLFFto/hjdUWERGpaZdC9fgA0LXI9vcA4yFfU0REJHSn\nTp0C4OTJkxFHclEl05h+uMjqKeBrZnYCr0Navha8Nu/+lV5TRESk2mZnZ+ndvZsHRkcB+F9f/zov\nPPMMw/v309TUFGlslfQeH6f4lKWGN1taKYPA/6rguiIiIlXTu3s3jz/4IIeAncBjwJ0HD9K7ezff\nGxmJNLZKkvZi1eAiIiJ1Z3p6mgPpNOPOcYu/7hbgvrk5utJpvjE9TWtra2TxVTKN6aEwAxEREYna\n1NQUF5xjZ8H6ncAF58hkMpEmbU1jKiIi4kskEqwx47GC9Y8Ba8yIx+NRhJUT6oxo+fxna7cU2+ac\ne6Ra1xUREVmp1tZWdiWT3HnwIPfNzeXatO9au5Zdt98eaSkbqpC0zexbQO8Su+l52iIiUpOG9++n\nd/duOkdHcXhV0h+94w6G7r8/6tDCrR43s68BfcDX8WY+C3qS9wDf8P/uC/OaIiIiYWpqauJ7IyN8\n/BOfAOBz99zDdw8ciHy4F4Rf0k4C/c65bwCYWRaY8KvDv29mDq/X+X0hX1dERCRUmzZtAmDz5s0R\nR3JR2Ek7jjeVaSDjrwvasA8De0K+5iXDOcfZs2ejDkOkKtavX1+T00aK1JKwk3YG2Jb39zjQzcWS\ndRfeYztlBc6ePcsHP/jBqMMQqYpHH32UDRs2RB2GyAK19MCQsJP2MN6TvIIZz4aAKf9xnCfxOqhN\nhHxNERGR0NVizU/YSXsIb/5xAJxzR82sBy+Zx4BJvE5pUqGHH35YpRKpe2fOnOG2226LOgyRuhFq\n0nbOnQS+X7AuDaTDvI7Ahg0blLRFRC4xmhFNRESkTlQlaZvZ583ssJkdN7Nfmtk/mtnvVeNaIiIi\nl4pQq8fNbBvec7RjeB3PMsAMsAPoMrMjzrn3hnlNERGRS0XYJe0hoBm42znX4pzrcM7d5pxrweuA\n1uH3JBcREZFlCjtpdwJDzrl7Czf4HdLuxpveVERERJYp7KSdAcYW2T6GN/+4iIhIXailyVXCTtoD\neLOelfIevFnSRCo2Pj6OmS1rSae90YfpdBozY3JyMuJXsboGBwcxM4aHh6ty/kv1fZXG1FCTq5jZ\nh4usngK+ZmYn8Dqk5WvBa/PuX+k1RfJ1dHQwNDS0YH0qlSKbzRbd1tbWthqh1byWlqKPuheRGldJ\n7/FxoFidQfA4zlIGuTjNqciKxWIxensXPrp9YGCAbDZbdNulYnh4mJaWFpLJ5Lz1/f399Pfrvlmk\nXlWStBerBheRCA0NDRGPxxckbRGpbytO2s65Q2EGUk/MbMD/9TiQdc5Vp4FQREQkT7VmRNtsZneZ\n2bfM7ICZ3WNmtfMU8QqY2QQw5pxL4c2pPrDEIavGOcepU6fqaqmFXpmDg4MkEgmam5vp7u4mm80u\n2CebzdLd3U1zczOJRIJUKlX0XH19fblzdXV1LeiQFXSey2QyjI+P097eTlfXxUqrcq+TSqVIJBKY\nWW6/bDZLX19friNY0CnMzHLnWayjWKlzBnEF71P+dhFZXWE/5Qsz+whwL94kK4FuYNDMep1z94d9\nzdViZv1AxjkX9ICfAfZFGNI8p0+fpqmpKeowlmV2dpZNmzZFdv3u7m7a2tpIpVKMjY3lepePjo7m\n9slms2zbto2WlpZce/m+ffvIZDK5/bLZLO3t7czMzLB3715isRijo6O0t7czOjq6oJo6nU6TSqVo\na2uju7t72dfJZDL09vbS3t7O1NQUw8PDuUTa3d1Nd3c3HR0ducQaj8dLvgdLnbO3t5fx8XGGhobo\n6+sjHo+TyWQW7fAnIlXinAttwRvSdQEYAbblrY/jjdF+A3h3mNdczQU4ASSrcN4ntm/f7pZy+vRp\n197e7trb293p06cXbJ+dnXV4nQPrZpmdnV3ydS9XPB533j/t0kZHRx3g2traFhwbi8XmrUsmky4W\ni7kTJ07k1k1NTTkgt67YPsXo/mTIAAAWjklEQVTWj42N5V770NDQsq/T39/vADcxMbHgNeUfF4/H\nXTKZLPm6848v95yFguOWOv9ilvo3LRKlP/zDP3SA+/KXv1zRebZv3+6AJ1wI+SLskvYAXtXxvGdm\nO+cyeHOPT/j7/NeQr7taYpArcQMkgJRzbmF9agQ2btzI7Oxs1GEsy8aNGyO9fl9f37y/29racqXt\nQDqdZmBggFgsllsXj8fp7OxkZGSEnp6eovuA15M9kUgwMjIyrzd7Mplc0Lt9qev09vYyODhIMpks\nOnSt8NrlWuk5d+zYAcDk5KSG0omskrCTdgeLj8N+gMWHg4XCzGJ4NwdZvLHjCeCAc27FMz6YWVC/\n2OWc6/PXdQIT/vkjZ2aRVjXXo8LxyoV/B22/qVSqaBtuW1sbR44cyf1eKKiWnpiYmLc+vx273Otk\nMpmix1ZiOefMZDIMDQ0xPj5OJpPJtXfPzMyEFo+ILC7spD0DXLXI9i3+PhUxsyReu/m2EqXcQ8A+\n5813HiTxCTPr8kv9KxHEnZum1Tk3bmZxM+t0F9u5pY6UWzodGhqio6Njwfp4PJ5L2sU6sAUKE1up\nNubFrhNlckyn03R3d9PZ2Zlr156cnFRnNGloDTUjWgmHgC+a2bBz7rX8DWZ2PdALHFjJif3Eey9e\n8mzBr6ousl8vEA8SNoBzLmtmaWAUaPf3SwJ9xc5RoNs5l/XPAV7pvVDpXj5S14LSczabLVkFHCTZ\nw4cPL+hwFpRkg6rkSq4T3GCMjY2FNnFMcPOw1Dn37NlDb2/vvE5ni92kiEh1hDrky682zgLP+MO8\nPmxmHzGzfXjV1A5Y0a25nzi7/WscXmTXborPb34YaPOTP865tHOuq4wl/5tpkuIJeqWld6kDvb29\n7Nu3r2iSymQyxGIxOjs7GRwczCXpQNBmXk6SXeo6wT7pdHrBkK1sNjtvXSwWWxDLYtdd6pzZbHZB\nrcThw4v9NxSRaqjGOO024BHg63hVyWm8RH0I6HDOvVqFa+brLLE+u8T2cqTwbgqAXGl9UlXjjW1g\nYICWlha2bdtGKpVieHiYVCpFc3NzrtPa0NAQsViM9vZ2UqkUg4ODtLe354ZKlVMNX851BgYGiMfj\ntLe309fXx+DgIH19fWzbtm1eKTiovg62B8PKSl13qXO2tbXl1gfD1QYHByt5W0VkBUIfp+2cOwl0\nm9lVeB3TAI7466sqKEWzeLv5iquy89qwh/BuAmLArSs9n9SHWCzG1NRULmFlMhna2toYGBjIlaDj\n8ThHjx4llUqRTqeZmZmho6ODiYmJsntWl3Od/H3Gx8cZHh4mHo+zd+/eeXOK7927l/Hxcfbt20dH\nR8eCXvKlrlvqnKOjo3R3dzM8PMzIyAidnZ25cdsisnrMhTgjlZn9IzDiqjyBij/kagBozq++9nt4\nTwGDzpuxLP+YNrye3gu2rRYze6LEpsT27dvXPfFEqc2eM2fO8MEPfhCARx99lA0bNoQcocjq0r9p\nqWWf+cxn+OY3v8mXv/xlvvKVr6z4PDfeeCNPPvnkk865GyuNKezq8auBu0M+50qsbMCqiIhIDQu7\nejwFPGxmd1a7tF3CYtXiwQDc46sRSDGl7rL8Evj2VQ5HRETqTNhJ+2m8xD1sZl14vbgXdGF1zj0S\n8nWD8wbDslqKbA5K3+rpLSIidSnspJ3BG9ZlQI+/5Deam//3ZSFfN984xavHW/K2i4iI1J2wk3Z4\n8yuu3CjFH5fZjjc8SzNCiIhIXQo1aTvnDoV5vhXGMGxmKTNLFkxj2oOGZ4mISB0LfZx2Nfnjo1u4\nOEHKITPL4D1ZbDhv13Zgb95DPnYAt1bywBAREZGoVZy0zezzeHN4x/HatMecc5+u9LzFBE/XKmO/\nLCucLlVERKRWVTRO28wOAIN4Hcy+D5wE7jaz/zCzzSHEJyIiIr4VJ20z24M3D3efc+7tzrke51wH\ncBvwduBrIcUoIiIiVFbS7gZGnXP35q/0H57xBcp77KWIiIiUqZKk3UHpZ2OPAuY/Q1tERERCUEnS\njlFidjHn3NG8fURERCQE1XietsiqGx4epr29HTOjubmZ9vZ2BgcHyWbnz6UzODiImTE8PFziTNWV\nTqcxMyYnwx19GPXrEpHVUWnSXuq5nuE991OkhK6uLvr6+mhpaaG/v5+enh4AUqkU+/btK3pMS0ux\n6enrX6O+LhHxVDpOO21mpaYFdf72Beudc++o8LoigFfCHB8fZ2hoiN7e3nnbJicnmZmZ/+C3/v5+\n+vv7VzPEUA0PD9PS0kIymZy3vt5fl4iUp9Kknahwu9SB6elppqamSCQStLa2Rh3OPGNjY8RisQUJ\nG6CtrS2CiKpraGiIeDy+IGmLyKVhxdXjzrk1K13CfAFSPbOzs3ysp4frtm7l5ptv5rqtW/lYTw+z\ns7NRhzZPYbu1iEijUgKVknp37+bxBx9k3DnmgHHnePzgQXp37446tJzu7u7cz3KSd7GOYMG6TCZD\nKpWiubmZ5uZmurq6cufs6+vLrU+lUkXPOT4+/6mvfX19FGkeWiCbzTI4OEgikcDMSCQSC64RnGty\ncjJ3PTPL7bdYB7e+vj4SiUTuNRXuk39sKpXK7Vvueyoiq0dJW4qanp7mQDrN/efPcwtwBXALcN/c\nHAfSaaanpyOO0NPb20symSSdTueS0vDwMJlM0dGIi+ru7iaTyTAwMEBnZyfj4+N0d3fT3t5OLBZj\nYGCAeDzO4OBgqL20gzb5vr4+RkdH6evrY3BwkL6+i/MTpVKpXFNAZ2cnY2NjjI2NzdunUDabJZFI\nMDIyQl9fHwMD3hNr29vbSafTC/bfs2dP7sals7OTdDrNnj17QnudIlK5unrKl6yeqakpLjjHzoL1\nO4ELzpHJZGqmfXt0dJR0Os2+ffsYHx/PlXj7+/tziWo55wLvZqC9vZ3x8fF55+np6aG5uZnR0dGi\n7egrkUwmF7RRHz9+nMHBQYaGhgCIx+PE43FaWlpyiXspe/bsYWZmhqNHjxKLxXKvq7u7mz179tDZ\n2ZlbH8h//YlEYkHtgYhESyVtKSqRSLDGjMcK1j8GrDEjHo8XOywyyWSSiYkJnHOMjo7S1ta2oLS6\nlMJ9Ozo6FqyPxWLE4/EFvdLDtmPHDoAVj+fOZrOk02n27t27IDEPDAyQzWYZGRmZt77w9be1tal6\nXKTGKGlLUa2trexKJrlz7VoeAeaAR4C71q5lVzJZM6XsYoIE3tbWxvDwcNmJp9QY59UY+xxUS7e3\nt+fak4EV3xwcOXIEKN6DPrjhmpiYmLe+8HVqzLdI7VHSlpKG9+/n/bffTpcZ64AuMz5wxx0M798f\ndWhlCUqOQQJbSmGJdKn1YUmn0yQSCSYnJ3Pt2sut1i9lsRuWwhuCar9OEamc2rSlpKamJr43MsI3\npqfJZDLE4/GaLmEXChJWVFX55ZaS9+zZQ29vb679GiofxhZU7R8+fHhBe3nQSS+ogheR+qGStiyp\ntbWVnTt31mTCLtUTOpPJsG/fvlwHrtVQmGjLbY/OZrMLSrmHDx8uum8sFiurZ3zQWW1wcHDB/kEN\nRFgd6URk9aikLXWvu7s7l6Ti8TiZTCaXyA8dOlT16wftxsFsZTMzMwwMDJRd0g46zWWzWbq6ujh8\n+DCDg4NF943H46TTaQYHB5mammJmZibX47vQ0NAQ7e3ttLe309vby5YtWzhw4ACTk5MMDQ2pOlyk\nDqmkLXVtYmKCiYkJOjs7mZycZHBwkMnJSZLJJCdOnFiVqUzj8Tj9/f2Mj49z6623MjAwQCqVKrsk\nG/R2Hx4ezo2Vzq8qzxf0Bt+3bx+ZTIZdu3YtGtfRo0fp6enJDYlraWlhYmJCpWyROmXO6UFcUTOz\nJ7Zv3779iSeeWHS/M2fO8MEPfhCARx99lA0bNqxGeCJVo3/TUss+85nP8M1vfpMvf/nLfOUrX1nx\neW688UaefPLJJ51zN1Yak0raIiIidUJJW0REpE4oaYuIiNQJJW0REZE6oaQtIiJSJ5S0RURE6oSS\ntoiISJ1Q0hYREakTStoiIiJ1QnOP16kzZ85EHYJIxfTvWGR5lLTr1G233RZ1CCIisspUPS4iIlLE\nxo0baW5uZv369VGHkqMHhtSAch8Y4pzj7NmzqxSVyOpav349ZhZ1GCKhC/OBIaoeryNmpqcgiYhc\nwlQ9LiIiUieUtEVEROqEkraIiEidUNIWERGpE0raIiIidUJJW0REpE5onHYNMLNX161bd2UikYg6\nFBERCdnU1BTnzp17zTm3udJzKWnXADN7CdgIPB91LJeY4C5pKtIoZCn6nOqDPqfSrgNOO+eurfRE\nStpyyTKzJwDCmKVIqkefU33Q57Q61KYtIiJSJ5S0RURE6oSStoiISJ1Q0hYREakTStoiIiJ1Qr3H\nRURE6oRK2iIiInVCSVtERKROKGmLLIOZtZnZqP8zbma9ZtYbdVyykJkNmFm/mQ35n1ks6pikOP//\n00TUcdQDtWmLLIOZdQJjeavSzrnuqOKR4sxsCJhwzg3n/R13znVFG5nkM7M2oA9oAdqcc3oAwxJU\n0hZZvm6gHWhWwq5p+QlgAuiMKhApzjk36ZzrAw5EHUu9uDzqAETqUNY5Nxl1EFKanwjytQPjUcQi\nEiYlbZHl6/ar9cArzaWcc9koA5LS/LbsHuDWqGMRqZSStjQk/4t6AMjiPSowARwIoYScAUadc+P+\ndXqBUUBtpStQxc8pOH8/sAvYp9qRlav25yTlU0c0qUtmlgTuBbYVK+X6PVH3OefS/t8xvHbNLudc\nJsQ42vzzJsI8b6Oooc9JHdEWEfXn5F9/QB3RlqaSttQN/4viXmAGr7dp0SE8fuk3HnzBADjnsmaW\nxisVt/v7JfF6ri6lO/giM7NRYE/eF1vwhRXP+/2SVgufUxEDwJSZJfOvdymr0c9JlqCkLXXD/4/e\nDblqz2SJXbsp3unoMNBvZjHnXNb/ElruF3gn3hdc8KXT4v88sszzNKyoPyc/GR0Fbi1SfdtS5JBL\nUtSfk6yMhnxJIyo1tCe7xPZyDOOVTAJ9wLBKDitSlc/J/yxm8s4DXkLKAiMrOeclrpr/n/LphqoM\nKmlLQ8mb9Wpmkd3iKz2/cy7lz7QFXnVitsjwIllCtT8nvNJhn5kdB7b452rXzdXyVPtzMrM4kMJL\n/DG/+emwc25wpedsdEra0miCu/ViX87BF8+WSi7gnEtVcrwAVf6c/Gpx9WyuXLU/pwzltYOLT9Xj\n0qg0z3R90OdUH/Q51QglbWk0i1XjBaWG46sRiCxKn1N90OdUY5S0paHktVkW69QSlBY0NCti+pzq\ngz6n2qOkLY1onOLVeS152yV6+pzqgz6nGqKkLY1oFOgosr4dmFQP4pqhz6k+6HOqIUra0nD8ZyjP\n+DM0AfMeGrEnssBkHn1O9UGfU23RkC+pK/4c0i1cnNDhkJllgDH/yyXQDuz1x4EC7KD4DFlSBfqc\n6oM+p/qjB4aIiIjUCVWPi4iI1AklbRERkTqhpC0iIlInlLRFRETqhJK2iIhInVDSFhERqRNK2iIi\nInVCSVtERKROKGmLiIjUCSVtERGROqGkLSIiUieUtEVEROqEkrY0DDNzRZYTZjZmZr1Vumanf53O\npfcO/5xm1u/v25u3Lumva1tsv1rjxz3hxzmV90SpUI/JO27ee1RLaj0+iY6StjSaDN5jBINlD5AF\nhsxsNMrAqmwm5P1Wlf+s5lFgHOgG0iwR60qOEal3ep62NJpswTN+J4G0X8IcMrN+59xgRLGFzn8t\nS76eUvv578uMcy5dhfCWYy+Qds6l/L/LiWclx4jUNZW05ZLgnBvGK4X3RR1LjekDdkUdBBBn+aXk\nlRwjUteUtOVSMon3RS8iUpeUtOVSEscrbQPzOnzF/d8nzGws/wAzG/I7OAUd2kp2DDKzXn9f5+8b\nL9ge8zuEBftMmdnAYgGXcc6yOiwV7ue/Lge0AcE2Z2YDeZ3WFtzg5G2LLXa9gmNKvofB+YAY0BvE\nscT5Sh6zkvc477xxPz5X6lj//KP+ayn73AXHrzS+JY9d7N903r+BuP85n8j7TGL+PkN565f12mR1\nKGnLJcG8nthteJ2WCiWBIFmP+vvHzGwK6AGGgKDddMLvAFVoFK/jWwoYBjqBiYJ9OvGqo4fwOk4N\nAf1mNlQi7HLOuVIDQBdeJ71x//cuP6Zhf59iTQl9eO3I2aUuUOZ7OFwkjvYlTr3YMct9j3Ox4r23\nLf5xQce2ZME+R/H+HaX8c/cus4PjiuJbwbEL/k3nGcW7gU3hvX+dwKiZTeC9pym8m9t+q+HRBpcs\n55wWLQ2xAA6YKFgXB/r9bVMF2zr99Q7oLdg2CpwAYoutzzvHQMF+vf76/iViHvD+GxaNa8lz4n05\nO6Btuev89VPAaJG4RoETBeva/HN0lvl5lPUe+utOFItjifOXdUyJ93je+5H3nrctcp5iccf942LL\niX258ZV77BL/poNzFv4fmSj894ZXi+GAsZW+Li3VWVTSlkbTlle96fCS0gBe6axUCS7tvI5qQK5E\nlQT2uYUlyhTeF1pPwfrD+X/458uydCevw/41i1Vvr/ScYdgHxApqFfrweucXq62YZ4XvYbUs9h4H\njvg/9xZrFvAteD3OuQxeabWS11JOfMs9dt6/6QKFJfMjhev915jBq3mQGqIhX9JoMnhVh4Gs/8W6\nmLGCvzv8n5OFOzrnMmYGS1fhBrEUtkHH8ZJfp78taBsu98txwTmrwTk3aWYZ/GFV/uoevGRejrDe\nw2VbyXvsnMua2SBerUzSzLLACJDytwVJcaBEW++C1xlmfCs4tvDfdL5SPe7VE78OKGlLw3Hzx2mX\no1RSX6yzVTlJdib/HDZ/MpAh/7pteDUB5Zp3ziobwBvbHsNLEjEutneXq9L3cFkqeY+dcykzO4BX\nk9GJ1xzRCSTyduvjYsk031I3hhXHt8xjF4unaH+EIjUiUoOUtEUWCr6Ud1AwYUde1em8qusSOpj/\nBX8vMOycy3XwWk4v7BLnrBrn3LDfyakHr7PX+DK+2MN6D5erovfYv+Gb9I/rBMbMrNM5N+7XDsRW\ncFMYVnxh/PuROqc2bZECfmIax+s9W1gVHbT7FZY455Ua/VJRjPnthzEWlnJ2LBJKOeesVJbFq9uD\nntqdy7nuCt/DMCz3PQZyPd0LE2Bw4xHEP4zX5r0gUS7SDh5KfCEcKw1CJW2R4vrwetVOmNkwcByv\n2rQN6CtS4hwysxm8UlqQ4Cbd/OlBJ/GSWAyvzXEHXhtqKeWcs1IZvDbcfrxq4BbnXH6fgAG8znzZ\nFVx3ue9hGJb7HgeCYU9pLtYABB3+RvyfKX+/o/7rmcJ7z3rx2vrLmR53pfFVeqw0CJW0RYrwO69t\nw/vCTuJ1yJoB2kv0yk3hfclP4PdWd84VdrTqxvvi7cWr6gw6FZVSzjkrtQ+v9LbXj+dA/kb/fZhk\nBaXiFbyHYVjuexwY52Kv9r1473cQaxa82gPnXIKLr2cIL4mnXPnz2a80vkqPlQZhzi06+ZCIXML8\nUt0JIFFGL3wRqTKVtEVkMb14HdCUsEVqgNq0RWQev3Tdg1c9HEx3KiI1QElbRAq14CXrGDBYzgxo\nIrI61KYtIiJSJ9SmLSIiUieUtEVEROqEkraIiEidUNIWERGpE0raIiIidUJJW0REpE4oaYuIiNQJ\nJW0REZE6oaQtIiJSJ5S0RURE6oSStoiISJ1Q0hYREakTStoiIiJ14v8BSmtd83rmvL8AAAAASUVO\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3.2360679775, 2))\n", "ax.loglog(Pf, 1-Pd, 'k-', linewidth=1, label=r\"Theorectical\")\n", "ax.loglog(pf, 1-pd, 'o', color='red', markeredgecolor='k', mew=.6, markersize=3., label=r\"Simulation\")\n", "ax.tick_params(axis='x', which='minor', bottom='on')\n", "plt.xlabel(r'Probability of false alarm')\n", "plt.ylabel(r'Probability of miss')\n", "plt.legend(fancybox=False, numpoints=1, edgecolor='k')\n", "plt.savefig('spectrum_sensing.ps', transparent=True, bbox_inches='tight', pad_inches=.1)" ] }, { "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 }