{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapter12 Digital Communications"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.4.1,Pg.no.419"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a= 1.0\n",
      "b= 6.33 *10**-5\n",
      "The bit error probability 3.17 *10**-5\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "from math import sqrt,erf,erfc\n",
    "Vs_Vn=4   #SNVR \n",
    "a=erf(4/sqrt(2))\n",
    "b=erfc(4/sqrt(2))*10**5\n",
    "Pbe=(0.5)*(b)  #bit error probability\n",
    "a=round(a,2)\n",
    "b=round(b,2)\n",
    "print 'a=',a\n",
    "print 'b=',b,'*10**-5'\n",
    "Pbe=round(Pbe,2)\n",
    "print 'The bit error probability',Pbe,'*10**-5'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.4.2,Pg.no.420"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The bit error probability 0.309\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "A=4     #max value of received signal voltage\n",
    "Vn=0.5  #rms noise voltage\n",
    "Vth=2   #Threshold voltage for the comparator\n",
    "b=erfc(Vn/sqrt(2))\n",
    "Pbe=(0.5) * b  #bit error probability\n",
    "Pbe=round(Pbe,3)\n",
    "print 'The bit error probability',Pbe "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.4.3,Pg.no.421"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bit Probabilty,Pbe1= 0.0024\n",
      "Bit Probability,Pbe2= 0.0232\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "from math import erfc\n",
    "SNR=9.0   #SNR in dB\n",
    "#conversion of dB to power ratio\n",
    "p=10**(9/10)  #for Polar\n",
    "Pbe1=0.5*erfc(sqrt(7.94/2))\n",
    "Pbe1=round(Pbe1,4)\n",
    "print 'Bit Probabilty,Pbe1=',Pbe1\n",
    "#for Unipolar\n",
    "Pbe2=0.5* erfc(sqrt(7.94)/2)\n",
    "Pbe2=round(Pbe2,4)\n",
    "print 'Bit Probability,Pbe2=',Pbe2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.5.1,Pg.no.423"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The bit error probability 3.5 *10**-5\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "Pavg=6.0*10**-12    #in W\n",
    "d=0.02*10**-6     #pulse duration in sec\n",
    "T=550.0           #equivalent noise temp in K\n",
    "Eb=Pavg*d         #avg energy per pulse\n",
    "No=1.38*10**-23*T\n",
    "r=Eb/No           #Bit error probability is\n",
    "Pbe=0.5*erfc(sqrt(r/2))*10**5\n",
    "Pbe=round(Pbe,1)\n",
    "print 'The bit error probability',Pbe,'*10**-5' "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.9.1,Pg.no.435"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a)The bit error probability 0.00078\n",
      "b)The bit error probability 0.00337\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "from math import exp\n",
    "ENR=10.0   #energy to noise density ratio\n",
    "Pbe1=0.5* erfc(sqrt(ENR/2))\n",
    "Pbe1=round(Pbe1,5)\n",
    "print 'a)The bit error probability',Pbe1\n",
    "Pbe2=(0.5)*exp(-(ENR/2))\n",
    "Pbe2=round(Pbe2,5)\n",
    "print 'b)The bit error probability',Pbe2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.13.1,Pg.no.451"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The probability of a received codeword 5.33 *10**5\n",
      "P_in= 5.6 *10**5\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "Pbec=0.01\n",
    "n=8.0\n",
    "i=3.0\n",
    "Pi=(Pbec**i)*((1-(Pbec))**(n-i))\n",
    "Cin=(math.factorial(n))/(math.factorial(i)*math.factorial(n-i))\n",
    "Pin=Cin*Pi*10**5\n",
    "P_in=Cin*Pbec**i*10**5\n",
    "Pin=round(Pin,2)\n",
    "P_in=round(P_in,2)\n",
    "print 'The probability of a received codeword',Pin,'*10**5'\n",
    "print 'P_in=',P_in,'*10**5'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.13.3,Pg.no.454"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a)The bit error probability 0.079\n",
      "b)The bit error probability 2.25\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "from math import sqrt,erf\n",
    "SN_dB=9\n",
    "SNR=10**(SN_dB/10)\n",
    "PbeU=0.5 * (1-erf(sqrt(SNR)))\n",
    "BERu=PbeU\n",
    "BERu=round(BERu,3)\n",
    "print 'a)The bit error probability',BERu\n",
    "n=10\n",
    "k=n-1\n",
    "r=k/n\n",
    "SNR1=r*SNR\n",
    "PbeC=0.5 *(1-erf(sqrt(SNR1)))\n",
    "BERc=(n-1)*PbeC**2\n",
    "print 'b)The bit error probability',BERc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 12.13.4,Pg.no.457"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a)The bit−error rate is 0.079\n",
      "b)The new bit error rate is 3.5\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "from math import sqrt\n",
    "SN_dB=8\n",
    "SNR=10**(SN_dB/10) #a) Determination of bit error rate\n",
    "PbeU=0.5*(1-erf(sqrt(SNR)))\n",
    "BER_U=PbeU\n",
    "BER_U=round(BER_U,3)\n",
    "print 'a)The bit−error rate is',BER_U\n",
    "#b)new bit error rate\n",
    "n=15\n",
    "k=11\n",
    "t=1\n",
    "r=k/n\n",
    "SNR_n=r*SNR\n",
    "PbeC=0.5*(1-erf(sqrt(SNR_n)))\n",
    "BER_C=((math.factorial(n-1))*PbeC**(t+1))/((math.factorial(t)) *(math.factorial(n-t-1)))\n",
    "print 'b)The new bit error rate is',BER_C "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}