diff options
Diffstat (limited to 'Digital_Communications_by_S._Haykin/Chapter2.ipynb')
-rw-r--r-- | Digital_Communications_by_S._Haykin/Chapter2.ipynb | 394 |
1 files changed, 394 insertions, 0 deletions
diff --git a/Digital_Communications_by_S._Haykin/Chapter2.ipynb b/Digital_Communications_by_S._Haykin/Chapter2.ipynb new file mode 100644 index 00000000..49325463 --- /dev/null +++ b/Digital_Communications_by_S._Haykin/Chapter2.ipynb @@ -0,0 +1,394 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2 Fundamental Limit On Performance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.1 page 18" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4de4a3d1d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange, zeros\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,xlabel,ylabel,title,show\n", + "\n", + "Po = arange(0,1+0.01,0.01)\n", + "H_Po = zeros(len(Po))\n", + "for i in range(1,len(Po)-1):\n", + " H_Po[i]=-Po[(i)]*log(Po[(i)],2)-(1-Po[(i)])*log(1-Po[(i)],2)\n", + "\n", + "#plot\n", + "#plot2d(Po,H_Po)\n", + "plot(Po,H_Po)\n", + "xlabel('Symbol Probability, Po')\n", + "ylabel('H(Po)')\n", + "title('Entropy function H(Po)')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.2 page 19" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Entropy of Discrete Memoryless Source\n", + "bits : 1.5\n", + "Table 2.1 Alphabet Particulars of Second-order Extension of a Discrete Memoryless Source\n", + "_________________________________________________________________________________\n", + "Sequence of Symbols of ruo2:\n", + " S0*S0 S0*S1 S0*S2 S1*S0 S1*S1 S1*S2 S2*S0 S2*S1 S2*S2\n", + "Probability p(sigma), i =0,1.....8 : [0.0625, 0.0625, 0.125, 0.0625, 0.0625, 0.125, 0.125, 0.125, 0.25]\n", + "_________________________________________________________________________________\n", + " \n", + "H(Ruo_Square)= 3.0 bits\n", + "H(Ruo_Square) = 2*H(Ruo)\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "P0 = 1/4# #probability of source alphabet S0\n", + "P1 = 1/4# #probability of source alphabet S1\n", + "P2 = 1/2# #probability of source alphabet S2\n", + "H_Ruo = P0*log(1/P0,2)+P1*log(1/P1,2)+P2*log(1/P2,2)\n", + "print 'Entropy of Discrete Memoryless Source'\n", + "print 'bits : ',H_Ruo\n", + "#Second order Extension of discrete Memoryless source\n", + "P_sigma = [P0*P0,P0*P1,P0*P2,P1*P0,P1*P1,P1*P2,P2*P0,P2*P1,P2*P2]#\n", + "print 'Table 2.1 Alphabet Particulars of Second-order Extension of a Discrete Memoryless Source'\n", + "print '_________________________________________________________________________________'\n", + "print 'Sequence of Symbols of ruo2:'\n", + "print ' S0*S0 S0*S1 S0*S2 S1*S0 S1*S1 S1*S2 S2*S0 S2*S1 S2*S2'\n", + "print 'Probability p(sigma), i =0,1.....8 : ',P_sigma\n", + "print '_________________________________________________________________________________'\n", + "print ' '\n", + "H_Ruo_Square =0\n", + "for i in range(0,len(P_sigma)):\n", + " H_Ruo_Square=(H_Ruo_Square+P_sigma[i]*log(1/P_sigma[i],2))\n", + "print 'H(Ruo_Square)=', H_Ruo_Square,' bits'\n", + "print 'H(Ruo_Square) = 2*H(Ruo)'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.3 page 20" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average code-word Length L 2.2 bits\n", + "Entropy of Huffman coding result H 2.12 bits\n", + "Average code-word length L exceeds the entropy H(Ruo) by only 3.679 %\n", + "Varinace of Huffman code : 0.16\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "\n", + "# (a)Average code-word length 'L'\n", + "#(b)Entropy 'H'\n", + "P0 = 0.4# #probability of codeword '00'\n", + "L0 = 2# #length of codeword S0\n", + "P1 = 0.2# #probability of codeword '10'\n", + "L1 = 2# #length of codeword S1\n", + "P2 = 0.2# #probility of codeword '11'\n", + "L2 = 2# #length of codeword S2\n", + "P3 = 0.1# #probility of codeword '010'\n", + "L3 = 3# #length of codeword S3\n", + "P4 =0.1# #probility of codeword '011'\n", + "L4 = 3# #length of codeword S4\n", + "L = P0*L0+P1*L1+P2*L2+P3*L3+P4*L4#\n", + "H_Ruo = P0*log(1/P0,2)+P1*log(1/P1,2)+P2*log(1/P2,2)+P3*log(1/P3,2)+P4*log(1/P4,2)\n", + "print 'Average code-word Length L',L,'bits'\n", + "print 'Entropy of Huffman coding result H %0.2f'%H_Ruo, 'bits'\n", + "print 'Average code-word length L exceeds the entropy H(Ruo) by only %0.3f'%(((L-H_Ruo)/H_Ruo)*100),'%'\n", + "sigma_1 = P0*(L0-L)**2+P1*(L1-L)**2+P2*(L2-L)**2+P3*(L3-L)**2+P4*(L4-L)**2\n", + "print 'Varinace of Huffman code : ',sigma_1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.4 page 20" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average code-word Length L : 2.2 bits\n", + "Entropy of Huffman coding result H : 2.12 bits\n", + "Varinace of Huffman code = 1.36\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log\n", + "\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "# Calculation of (a)Average code-word length 'L' (b)Entropy 'H'\n", + "P0 = 0.4# #probability of codeword '1'\n", + "L0 = 1# #length of codeword S0\n", + "P1 = 0.2# #probability of codeword '01'\n", + "L1 = 2# #length of codeword S1\n", + "P2 = 0.2# #probility of codeword '000'\n", + "L2 = 3# #length of codeword S2\n", + "P3 = 0.1# #probility of codeword '0010'\n", + "L3 = 4# #length of codeword S3\n", + "P4 =0.1# #probility of codeword '0011'\n", + "L4 = 4# #length of codeword S4\n", + "L = P0*L0+P1*L1+P2*L2+P3*L3+P4*L4#\n", + "H_Ruo = P0*log2(1/P0)+P1*log2(1/P1)+P2*log2(1/P2)+P3*log2(1/P3)+P4*log2(1/P4)#\n", + "print 'Average code-word Length L :',L,'bits'\n", + "print 'Entropy of Huffman coding result H : %0.2f bits'%H_Ruo\n", + "sigma_2 = P0*(L0-L)**2+P1*(L1-L)**2+P2*(L2-L)**2+P3*(L3-L)**2+P4*(L4-L)**2\n", + "print 'Varinace of Huffman code = %0.2f'%sigma_2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.5 page 20" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probility of 0 receiving if a 0 is sent = probility of 1 receiving if a 1 is sent= 0.4\n", + "Transition probility\n", + "probility of 0 receiving if a 1 is sent = probility of 1 receiving if a 0 is sent= 0.6\n" + ] + } + ], + "source": [ + "p = 0.4# #probability of correct reception\n", + "pe = 1-p##probility of error reception (i.e)transition probility\n", + "print 'probility of 0 receiving if a 0 is sent = probility of 1 receiving if a 1 is sent=',p\n", + "print 'Transition probility'\n", + "print 'probility of 0 receiving if a 1 is sent = probility of 1 receiving if a 0 is sent=',pe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.6 page 21" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4e00050f10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "from math import log\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,title,show,xlabel,ylabel\n", + "\n", + "\n", + "\n", + "def log2(x):\n", + " return log(x,2)\n", + "\n", + "\n", + "p = arange(0,0.5+0.01,0.01)\n", + "C=[]\n", + "for i in range(0,len(p)):\n", + " if(i!=0):\n", + " C.append(1+p[i]*log2(p[i])+(1-p[i])*log2((1-p[i])))\n", + " elif(i==0):\n", + " C.append(1)\n", + " elif(i==len(p)):\n", + " C.append(0)\n", + " \n", + "\n", + "plot(p,C)\n", + "xlabel('Transition Probility, p')\n", + "ylabel('Channel Capacity, C')\n", + "title('Figure 2.10 Variation of channel capacity of a binary symmetric channel with transition probility p')\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example2.7 page 21" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nmff/xUXp9BgBdbUAAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f4de45b5e10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table 2.3 Average Probility of Error for Repetition Code\n", + "_______________________________________________________________\n", + "Average Probility of Error, Pe =\n", + "0.01\n", + "0.000298\n", + "9.8506e-06\n", + "3.416698e-07\n", + "Code Rate, r =1/n = \n", + "1.00\n", + "0.33\n", + "0.20\n", + "0.14\n", + "_______________________________________________________________\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot,title,show,xlabel,ylabel,legend\n", + "\n", + "\n", + "#Average Probility of Error of Repetition Code\n", + "p =10**-2#\n", + "pe_1 =p# #Average Probility of error for code rate r = 1\n", + "pe_3 = 3*p**2*(1-p)+p**3##probility of error for code rate r =1/3\n", + "pe_5 = 10*p**3*(1-p)**2+5*p**4*(1-p)+p**5##error for code rate r =1/5\n", + "pe_7 = ((7*6*5)/(1*2*3))*p**4*(1-p)**3+(42/2)*p**5*(1-p)**2+7*p**6*(1-p)+p**7##error for code rate r =1/7\n", + "r = [1,1/3,1/5,1/7]#\n", + "pe = [pe_1,pe_3,pe_5,pe_7]#\n", + "plot(r,pe)\n", + "xlabel('Code rate, r')\n", + "ylabel('Average Probability of error, Pe')\n", + "title('Figure 2.12 Illustrating significance of the channel coding theorem')\n", + "#xgrid(1)\n", + "show()\n", + "print 'Table 2.3 Average Probility of Error for Repetition Code'\n", + "print '_______________________________________________________________'\n", + "print 'Average Probility of Error, Pe ='\n", + "for pp in pe: print pp\n", + "print 'Code Rate, r =1/n = '\n", + "for rr in r:print '%0.2f'%rr\n", + "print '_______________________________________________________________'" + ] + } + ], + "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.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} |