summaryrefslogtreecommitdiff
path: root/Wireless_Communications_and_Networking_by_V._Garg
diff options
context:
space:
mode:
authorThomas Stephen Lee2015-09-07 17:46:06 +0530
committerThomas Stephen Lee2015-09-07 17:46:06 +0530
commit78784b374b2d1a9be66eb4ad41470409e2bd4dfa (patch)
tree7b0144248a9d5c9b6c66065697177ee04a30f93e /Wireless_Communications_and_Networking_by_V._Garg
parent41f1f72e9502f5c3de6ca16b303803dfcf1df594 (diff)
downloadPython-Textbook-Companions-78784b374b2d1a9be66eb4ad41470409e2bd4dfa.tar.gz
Python-Textbook-Companions-78784b374b2d1a9be66eb4ad41470409e2bd4dfa.tar.bz2
Python-Textbook-Companions-78784b374b2d1a9be66eb4ad41470409e2bd4dfa.zip
add/update books
Diffstat (limited to 'Wireless_Communications_and_Networking_by_V._Garg')
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch10.ipynb331
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch11.ipynb469
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch12.ipynb91
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch13.ipynb104
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch14.ipynb106
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch17.ipynb769
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch19.ipynb106
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch2.ipynb533
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch21.ipynb476
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch3.ipynb543
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch4.ipynb338
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch5.ipynb416
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch6.ipynb466
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch8.ipynb178
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/ch9.ipynb478
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/screenshots/EbbyNo.pngbin0 -> 87873 bytes
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/screenshots/comparision_of_models.pngbin0 -> 20065 bytes
-rwxr-xr-xWireless_Communications_and_Networking_by_V._Garg/screenshots/multiplexing.pngbin0 -> 77998 bytes
18 files changed, 5404 insertions, 0 deletions
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch10.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch10.ipynb
new file mode 100755
index 00000000..b47575f1
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch10.ipynb
@@ -0,0 +1,331 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:52a8123efdb6330b1c01d828fbdcc37a6411e5ce1469de2c94b22a16e7b4d8c8"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10: Antennas, Diversity and Link Analysis"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.1, Page 292"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "D=10000; #in metres\n",
+ "TxEIRP=30; #Effective Isotropic Radiated Power(EIRP)dBW\n",
+ "lamda=0.2; #in metres\n",
+ "Pt=10; #Transmitted power in dBW\n",
+ "Gt=20; #transmitter gain in dBi\n",
+ "Gr=3; #receiver gain in dBi\n",
+ "Lo=6;#total system lossses in dB\n",
+ "Nf=5; #noise figure in dB\n",
+ "BW=1.25; #mHz\n",
+ "k=1.38*10**-23; #Boltzmann constant\n",
+ "T=290; #temperature in degree kelvin\n",
+ "\n",
+ "#Calculations\n",
+ "Lp=20*math.log10(lamda/(4*math.pi*D)); #free space loss\n",
+ "Pr=Lp+Pt+Gt+Gr-Lo;# received power in dBW\n",
+ "No=10*math.log10(k*T); #Noise density in dBW\n",
+ "NO=No+30; #factor of '30' to convert from dBW to dBm\n",
+ "Pn=Nf+10*math.log10(BW*10**6)+NO;# noise signal power in dBm\n",
+ "SNR=(Pr+30)-Pn;\n",
+ "\n",
+ "#Results\n",
+ "print 'The received signal power is %d dBm'%(round(Pr+30)); #factor of '30' to convert from dBW to dBm\n",
+ "print 'SNR is %d dB'%SNR"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The received signal power is -59 dBm\n",
+ "SNR is 49 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.2, Page 293"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "#As we have to use data from Eg 10.1, \n",
+ "D=10000; # in metres\n",
+ "TxEIRP=30; #Effective Isotropic Radiated Power(EIRP)dBW\n",
+ "lamda=0.2; #in metres\n",
+ "Pt=10; #trasmitted power in dBW\n",
+ "Gt=20; #transmitter gain in dBi\n",
+ "Gr=3; #receiver gain in dBi\n",
+ "Lo=6;#total system lossses in dB\n",
+ "Nf=5; #noise figure in dB\n",
+ "BW=1.25; #mHz\n",
+ "k=1.38*10**-23; #Boltzmann constant\n",
+ "T=290; #temperature in degree kelvin\n",
+ "#additional data given in this eg\n",
+ "hr=40.; #height of receiver in metre\n",
+ "ht=2; #trasmittter antenna height in metres\n",
+ "\n",
+ "#Calculations\n",
+ "Lp=20*math.log10(hr*ht/D**2);\n",
+ "Pr=Lp+Pt+Gt+Gr-Lo;# received power in dBW\n",
+ "No=10*math.log10(k*T); #Noise density in dBW\n",
+ "NO=No+30; #factor of '30' to convert from dBW to dBm\n",
+ "Pn=Nf+10*math.log10(BW*10**6)+NO;# noise signal power in dBm\n",
+ "SNR=(Pr+30)-Pn;\n",
+ "\n",
+ "#Result\n",
+ "print 'The received signal power is %d dBm'%(round(Pr+30)); #factor of '30' to convert from dBW to dBm\n",
+ "print 'SNR is %d dB'%SNR"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The received signal power is -65 dBm\n",
+ "SNR is 43 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.3, Page 299"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pin=12.; #Input power in watts\n",
+ "Ploss=3; #resistive losses in Watts\n",
+ "D=5; #Directivity\n",
+ "\n",
+ "#Calculations\n",
+ "Eff=(Pin-Ploss)/Pin;\n",
+ "G=Eff*D;\n",
+ "\n",
+ "#Results\n",
+ "print 'Gain of the antenna is %.2f dB = %.2f'%(10*math.log10(G),G);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gain of the antenna is 5.74 dB = 3.75\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.4, Page 299"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "G=12.; #Gain of antenna in dBi\n",
+ "\n",
+ "#Calculations\n",
+ "Theta=101.5/10**(G/10);\n",
+ "\n",
+ "#Result\n",
+ "print 'The 3-dB beam width of a linear element antenna is %.1f degrees'%Theta"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The 3-dB beam width of a linear element antenna is 6.4 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.5, Page 299"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "N=12; #number of turns\n",
+ "fr=1.8; #frequency in GHz\n",
+ "\n",
+ "#Calculations\n",
+ "lamda=3*10**8/(fr*10**9);\n",
+ "DH=lamda/math.pi;# diameter of helix in milli-meters\n",
+ "S=lamda/4;#turn spacing in millimetres\n",
+ "L=N*S;\n",
+ "G=15*N*S*(DH*math.pi)**2/lamda**3;\n",
+ "Theta=52*lamda/(math.pi*DH)*math.sqrt(lamda/(N*S));\n",
+ "\n",
+ "#Results\n",
+ "print 'The optimim diameter is %d mm'%(DH*1000);\n",
+ "print 'Spacing is %.1f mm'%(S*1000);\n",
+ "print 'Total Length of antenna is %d mm'%(L*1000);\n",
+ "print 'The antenna gain is %.1f dBi'%(10*math.log10(G));\n",
+ "print 'The BeamWidth of antenna is %d degrees'%Theta"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The optimim diameter is 53 mm\n",
+ "Spacing is 41.7 mm\n",
+ "Total Length of antenna is 500 mm\n",
+ "The antenna gain is 16.5 dBi\n",
+ "The BeamWidth of antenna is 30 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.6, Page 305"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "E0=1000.; #average SNR\n",
+ "Eg=10; #threshold value for SNR\n",
+ "M=3; #3-Branch Combiner\n",
+ "e=2.71828; #Euler's number\n",
+ "\n",
+ "#Calculations&Results\n",
+ "x=Eg/E0;\n",
+ "P3=(1-e**(-x))**M; #Considering 3-branch selection combiner\n",
+ "print 'By considering 3-branch selection combiner technique, probability comes to be %.e'%P3;\n",
+ "P1=(1-e**(-x));#M=1;\n",
+ "print ' BY not considering diversity technique, probability comes to be %.e'%P1;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "By considering 3-branch selection combiner technique, probability comes to be 1e-06\n",
+ " BY not considering diversity technique, probability comes to be 1e-02\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.7, Page 312"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "SR=3.84; #spreading rate in Mcps\n",
+ "\n",
+ "#Calculations\n",
+ "ChipDur=1./(SR*10**6);\n",
+ "Speed=3*10**8;\n",
+ "Dd=ChipDur*Speed;\n",
+ "\n",
+ "#Result\n",
+ "print 'Minimum delay distance to successfully resolve the multipath components and operate the Rake receiver is %d m'%Dd"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum delay distance to successfully resolve the multipath components and operate the Rake receiver is 78 m\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch11.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch11.ipynb
new file mode 100755
index 00000000..9cc0698a
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch11.ipynb
@@ -0,0 +1,469 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:a9273e79f8d5c3c028c517c94bebc1e2c1c9a292aef113298724eb86d1685f66"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11: Spread Spectrum (SS) and CDMA Systems"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.1, Page 322"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "CR1=1.2288; #Mcps(Clock rate 1)\n",
+ "CR2=5.;#Mcps(Clock rate 2)\n",
+ "R1=9.6; #Information rate in Kbps for CR1\n",
+ "PG2=256; #Processing Gain for CR2\n",
+ "\n",
+ "#Calculations\n",
+ "PG1=10*math.log10(CR1*10**3/9.6);#Processing Gain for CR1\n",
+ "R2=CR2*10**3/PG2;#information rate in Kbps for CR2\n",
+ "\n",
+ "#Results\n",
+ "print 'The processing gain for clock rate 1.2288Mcps is %d dB'%PG1\n",
+ "print 'Improvemrnt in information rate is %.2f Kbps'%(R2-R1);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The processing gain for clock rate 1.2288Mcps is 21 dB\n",
+ "Improvemrnt in information rate is 9.93 Kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.2, Page 326"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "#From figure 11.5 we get resultant demodulated signal at a mobile;\n",
+ "Rx=[[1,1,1,1,-3,1],[1,-3,1,1,1,1],[1,-3,1,1,1,-3],[1,-3,1,1,1,1],[-1,3,3,-1,3,-1]];#Resultant demodulated signal at mobile\n",
+ "\n",
+ "#from Figure 11.4 \n",
+ "c1=[[-1,-1,-1,-1,1,1],[1,-1,1,1,-1,-1],[1,-1,1,-1,-1,-1],[-1,1,1,1,-1,1],[1,-1,-1,1,-1,1]];\n",
+ "c2=[[1,1,-1,1,1,-1],[-1,1,-1,1,-1,-1],[-1,-1,1,1,1,-1],[1,1,-1,-1,1,-1],[1,-1,-1,-1,-1,-1]];\n",
+ "c3=[[-1,-1,1,-1,1,-1],[-1,-1,-1,1,1,1],[-1,1,1,-1,-1,1],[-1,1,-1,-1,-1,-1],[1,1,1,-1,1,1]];\n",
+ "\n",
+ "#Calculations&Results\n",
+ "#t={[1 2 3 4 5 6];[7 8 9 10 11 12];[13 14 15 16 17 18];[19 20 21 22 23 24];[25 26 27 28 29 30]};\n",
+ "#for Mobile 1\n",
+ "for i in range(0,5):\n",
+ " Demod1=c1[i][0]*Rx[i][0]+c1[i][1]*Rx[i][1]+c1[i][2]*Rx[i][2]+c1[i][3]*Rx[i][3]+c1[i][4]*Rx[i][4]-1\n",
+ " if(Demod1<0):\n",
+ " B1=1;\n",
+ " else:\n",
+ " B1=0;\n",
+ "\n",
+ "#for mobile 2\n",
+ "for i in range(0,5):\n",
+ " Demod2=c2[i][0]*Rx[i][0]+c2[i][1]*Rx[i][1]+c2[i][2]*Rx[i][2]+c2[i][3]*Rx[i][3]+c2[i][4]*Rx[i][4]+1;\n",
+ " if(Demod2<0):\n",
+ " B2=1;\n",
+ " else:\n",
+ " B2=0;\n",
+ "\n",
+ "#for mobile 3\n",
+ "for i in range(0,5):\n",
+ " Demod3=c3[i][0]*Rx[i][0]+c3[i][1]*Rx[i][1]+c3[i][2]*Rx[i][2]+c3[i][3]*Rx[i][3]+c3[i][4]*Rx[i][4]-1;\n",
+ " if(Demod3<0):\n",
+ " B3=1;\n",
+ " else:\n",
+ " B3=0;\n",
+ "\n",
+ "print \"Value of integration at end of bit period for mobile1\",Demod1\n",
+ "print \"Value of integration at end of bit period for mobile2\",Demod2\n",
+ "print \"Value of integration at end of bit period for mobile3\",Demod3\n",
+ "print \"The recovered signal at mobile 1 is \",B1\n",
+ "print \"The recovered signal at mobile 2 is \",B2\n",
+ "print \"The recovered signal at mobile 3 is \",B3\n",
+ "print \"In all cases, Recovered signal is negated value of transmitted signal\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Value of integration at end of bit period for mobile1 -12\n",
+ "Value of integration at end of bit period for mobile2 -8\n",
+ "Value of integration at end of bit period for mobile3 8\n",
+ "The recovered signal at mobile 1 is 1\n",
+ "The recovered signal at mobile 2 is 1\n",
+ "The recovered signal at mobile 3 is 0\n",
+ "In all cases, Recovered signal is negated value of transmitted signal\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.3, Page 332"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "BW=100; #in MHz\n",
+ "Fspac=10; #frequency spacing in kHz\n",
+ "\n",
+ "#Calculations\n",
+ "FreqTones=BW*10**3/Fspac;\n",
+ "Chips=math.log(FreqTones,2);\n",
+ "\n",
+ "#Result\n",
+ "print 'Minimum number of chips required are %d chips'%Chips"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum number of chips required are 13 chips\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.4, Page 332"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "R=120; #transmission rate in kbps\n",
+ "Hop=2000; #per second\n",
+ "Spectrum=10; #in MHz\n",
+ "\n",
+ "#Calculations&Results\n",
+ "#For 32-FSK\n",
+ "Bits_sym=math.log(32,2);\n",
+ "SR=R/Bits_sym;\n",
+ "print 'Bits per symbol are %d'%Bits_sym\n",
+ "print 'Hops per second are 2000 and Symbol rate is %d kbps'%SR\n",
+ "Sym_hop=SR*10**3/Hop;\n",
+ "Min_BW=Sym_hop*SR;\n",
+ "Nonoverlap_hop=Spectrum*10**3/Min_BW;\n",
+ "print 'Symbols transmitted per hop are %d'%Sym_hop;\n",
+ "print 'Number of non-Overlapping hop frequencies are %d'%(round(Nonoverlap_hop))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Bits per symbol are 5\n",
+ "Hops per second are 2000 and Symbol rate is 24 kbps\n",
+ "Symbols transmitted per hop are 12\n",
+ "Number of non-Overlapping hop frequencies are 35\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.5, Page 332"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "R=200;#input data rate in bps\n",
+ "Fhop=200;#per second\n",
+ "k=1;#Multipication_Factor\n",
+ "\n",
+ "#Calculations&Results\n",
+ "# We have 32-FSK modulation scheme\n",
+ "Bits_sym=math.log(32,2);\n",
+ "Rs=Fhop/Bits_sym;\n",
+ "print 'There are 200 hops per second and Symbol rate is %d symbols per sec'%Rs; \n",
+ "\n",
+ "SDur=1/Rs;\n",
+ "L=Fhop/Rs;\n",
+ "CDur=SDur/L;\n",
+ "Separation=1/CDur;\n",
+ "M=2**Bits_sym;\n",
+ "Hop_BW=k*M*Fhop*L;\n",
+ "Gp=M*k*L; \n",
+ "\n",
+ "\n",
+ "print ' Minimum separation between frequency tones should be %d Hz'%Separation;\n",
+ "print ' Number of different frequency tones produced by a frequency synthesizer are %d'%M;\n",
+ "print ' Processing Gain is %d'%Gp;\n",
+ "print 'Hopping bandwidth is %d kHz'%(Hop_BW/1000);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "There are 200 hops per second and Symbol rate is 40 symbols per sec\n",
+ " Minimum separation between frequency tones should be 200 Hz\n",
+ " Number of different frequency tones produced by a frequency synthesizer are 32\n",
+ " Processing Gain is 160\n",
+ "Hopping bandwidth is 32 kHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.6, Page 342"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "M1=[1,0,0,1,1];\n",
+ "\n",
+ "Rx1=[[1,1,1,1,-3,1],[1,-3,1,1,1,1],[1,-3,1,1,1,-3],[1,-3,1,1,1,1],[-1,3,3,-1,3,-1],[1,-1,-1,0,0,0]];#Resultant demodulated signal at mobile(Z(t)) from path1\n",
+ "Rx2=[[-1,-1,1,1,1,1],[-3,1,1,-3,1,1],[1,1,1,-3,1,1],[1,-3,1,-3,1,1],[1,1,-1,3,3,-1],[3,1,-1,0,0,0]];#Resultant demodulated signal at mobile(Z(t-2Tc)) from path2\n",
+ "Rx=Rx1+Rx2; #since,Z(t)=z(t)+Z(t-2Tc)\n",
+ "\n",
+ "#from Figure 11.13 (d) & Figure 11.14\n",
+ "c1=[[-1,-1,-1,-1,1,1],[1,-1,1,1,-1,-1],[1,-1,1,-1,-1,-1],[-1,1,1,1,-1,1],[1,-1,-1,1,-1,1]];\n",
+ "c2=[[-1,1,-1,-1,-1,-1],[1,1,1,-1,1,1],[-1,-1,1,-1,1,-1],[-1,-1,-1,1,1,1],[-1,1,1,-1,-1,1],[-1,1,0,0,0,0]];\n",
+ "\n",
+ "#Calculations&Results\n",
+ "#case-1:Z(t)*C1(t);\n",
+ "for i in range(0,5):\n",
+ " Demod_1=c1[i][0]*Rx[i][0]+c1[i][1]*Rx[i][1]+c1[i][2]*Rx[i][2]+c1[i][3]*Rx[i][3]+c1[i][4]*Rx[i][4]+c1[i][5]*Rx[i][5];\n",
+ " if(Demod_1<0):\n",
+ " B1=1;\n",
+ " else:\n",
+ " B1=0;\n",
+ "\n",
+ "#case-2:Z(t)*C1(t-2Tc);\n",
+ "for j in range(0,5):\n",
+ " Demod_2=c2[j][2]*Rx[j][2]+c2[j][3]*Rx[j][3]+c2[j][4]*Rx[j][4]+c2[j][5]*Rx[j][5]+c2[j+1][0]*Rx[j+1][0]+c2[j+1][1]*Rx[j+1][1]-10\n",
+ " if(Demod_2<0):\n",
+ " B2=1;\n",
+ " else:\n",
+ " B2=0;\n",
+ "\n",
+ "print \"case-1:z(t)*c1(t)\";\n",
+ "print \"Value of integration at end of bit period for mobile(case-1)\",Demod_1\n",
+ "print \"The recovered signal at mobile(case-1) is \",B1\n",
+ "print \"Actual bit values are\",M1\n",
+ "print \"Recovered and actual values are not matching\",\n",
+ "\n",
+ "print \"\\n\\ncase-2:z(t)*c1(t-2Tc)\"\n",
+ "print \"Value of integration at end of bit period for mobile(case-2)\",Demod_2\n",
+ "print \"The recovered signal at mobile(case-2) is \",B2\n",
+ "print \"Actual bit values are\",M1\n",
+ "print \"Recovered and actual values are not matching\",\n",
+ "\n",
+ "#case3-Sum of path1 and path2\n",
+ "print \"\\n\\ncase-3:Sum of path1 & path2 integrator\"\n",
+ "Demod_3=Demod_1+Demod_2;\n",
+ "print \"Sum of integrator outputs(rake receiver output)\",Demod_3\n",
+ "\n",
+ "for k in range(0,5):\n",
+ " if(Demod_3<0):\n",
+ " B3=1;\n",
+ " else:\n",
+ " B3=0;\n",
+ " \n",
+ "print \"Detected bit value \",B3\n",
+ "print \"Actual bit values are\",M1\n",
+ "print \"Recovered and actual values are matching\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "case-1:z(t)*c1(t)\n",
+ "Value of integration at end of bit period for mobile(case-1) -12\n",
+ "The recovered signal at mobile(case-1) is 1\n",
+ "Actual bit values are [1, 0, 0, 1, 1]\n",
+ "Recovered and actual values are not matching \n",
+ "\n",
+ "case-2:z(t)*c1(t-2Tc)\n",
+ "Value of integration at end of bit period for mobile(case-2) -12\n",
+ "The recovered signal at mobile(case-2) is 1\n",
+ "Actual bit values are [1, 0, 0, 1, 1]\n",
+ "Recovered and actual values are not matching \n",
+ "\n",
+ "case-3:Sum of path1 & path2 integrator\n",
+ "Sum of integrator outputs(rake receiver output) -24\n",
+ "Detected bit value 1\n",
+ "Actual bit values are [1, 0, 0, 1, 1]\n",
+ "Recovered and actual values are matching\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.7, Page 360"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Prm=-97;#the signal strength from the base stations in dBm\n",
+ "#The constant ( K ) is the part of the broadcast message that is sent to the mobile by the base station on the paging channel.\n",
+ "K=-73; #dB\n",
+ "P2=18; #power as directed by BS (dBm)\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Ptm=K-Prm;\n",
+ "print 'The mobile transmitter power be set as a first approximation of %d dBm'%Ptm\n",
+ "Pwr_Redu=Ptm-P2;#power reduction\n",
+ "print 'Power reduction = %d dBm'%Pwr_Redu\n",
+ "Time=6*1.25;\n",
+ "print 'Time required by mobile station to make changes as directed by base station is %.1f msec'%Time\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The mobile transmitter power be set as a first approximation of 24 dBm\n",
+ "Power reduction = 6 dBm\n",
+ "Time required by mobile station to make changes as directed by base station is 7.5 msec\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 11.8, Page 362"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "P1=-95; #pilot1 in dBm\n",
+ "P2=-100; #pilot2 in dBm\n",
+ "P3=-101; #pilot3 in dBm\n",
+ "P4=-105; #pilot4 in dBm\n",
+ "P5=-102; #pilot in dBm\n",
+ "NoiseP=-107; #Receiver sensitivity(dBm)\n",
+ "Tadd=-13; #dB\n",
+ "\n",
+ "#Calculations&Results\n",
+ "#Pcj = received power of the jth pilot in the candidate set\n",
+ "# Pai= received power of the ith pilot in the active set \n",
+ "Pa1=P1-NoiseP;\n",
+ "Pa2=P2-NoiseP;\n",
+ "Pa3=P3-NoiseP;\n",
+ "Pa4=P4-NoiseP;\n",
+ "Pc5=P5-NoiseP;\n",
+ "\n",
+ "X=10*math.log10(10**(0.1*Pa1)+10**(0.1*Pa2)+10**(0.1*Pa3)+10**(0.1*Pa4)+10**(0.1*Pc5)); \n",
+ "print \"Since P1>P2>P3>P4, we replace P4\"\n",
+ "T_COMP=(P5-P4)/0.5;\n",
+ "print 'The value of T-COMP that could trigger the mobile station to generate a PSMM should be <= %d dB (<= %d)'%(T_COMP,round(10**(0.1*T_COMP)));\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Since P1>P2>P3>P4, we replace P4\n",
+ "The value of T-COMP that could trigger the mobile station to generate a PSMM should be <= 6 dB (<= 4)\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch12.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch12.ipynb
new file mode 100755
index 00000000..8234bb5b
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch12.ipynb
@@ -0,0 +1,91 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:5a8dcdff9c441023f41d39cb4ab911bae195c143982b35aa0ceb85309af37715"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12: Mobility Management in Wireless Networks"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.1, Page 374"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "P=10000; #Mobile density(mobiles/km**2)\n",
+ "R=500*10**-3; #km\n",
+ "V=10; #Average moving velocity of a mobile in Kmph\n",
+ "Nc=10.; #No of cells per LA\n",
+ "N_LA=5; #Number of LAs per MSC/VLR \n",
+ "\n",
+ "\n",
+ "#Calculations&Results\n",
+ "#Number of transactions and duration of each transaction to MSC/VLR per LU for different LU types are given in Table 12.1.(page no.374)\n",
+ "\n",
+ "\n",
+ "# L=length (km) of the cell exposed perimeter in an LA\n",
+ "L=6*R*(1./3+1./(2*math.sqrt(Nc)-3)); #Km\n",
+ "# lamdaLU=number of transactions processed by MSC/VLR in an LA perimeter of the jth cell per hour\n",
+ "LamdaLu=V*P*L/math.pi; #Lus per hour\n",
+ "\n",
+ "\n",
+ "# case(1)\n",
+ "print \"Case-1\"\n",
+ "R1_LU=LamdaLu/3600*(1*600./1000); #resource occupancy from Table 12.1\n",
+ "print 'The resource occupancy in the jth cell due to MS LUs is %.1f Erlangs'%R1_LU;\n",
+ "\n",
+ " \n",
+ "#case(2)\n",
+ "print \"\\nCase-2\"\n",
+ "R2_LU=LamdaLu/3600*(0.8*3500/1000+0.2*4000/1000); #from Table 12.1\n",
+ "print 'The resource occupancy in the jth cell due to MS LUs is %.2f Erlangs'%R2_LU;\n",
+ "Np=6*math.sqrt(Nc/3)-3;#Number of cells located on perimeter of an LA\n",
+ "print 'Number of cells where inter-VLR LUs occur will be: %d'%(round(0.5*Np*4));\n",
+ "print 'Number of cells where intra-VLR LUs occur will be: %d'%(4*Nc-16);\n",
+ "TNLU=LamdaLu*(2*24+16*(0.8*14+0.2*16)); #from table 12.1\n",
+ "print 'The MSC/VLR transaction load using the \ufb02uid \ufb02ow model is %.2e transactions at peak hour'%TNLU;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Case-1\n",
+ "The resource occupancy in the jth cell due to MS LUs is 10.1 Erlangs\n",
+ "\n",
+ "Case-2\n",
+ "The resource occupancy in the jth cell due to MS LUs is 60.55 Erlangs\n",
+ "Number of cells where inter-VLR LUs occur will be: 16\n",
+ "Number of cells where intra-VLR LUs occur will be: 24\n",
+ "The MSC/VLR transaction load using the \ufb02uid \ufb02ow model is 1.69e+07 transactions at peak hour\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch13.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch13.ipynb
new file mode 100755
index 00000000..fec26202
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch13.ipynb
@@ -0,0 +1,104 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:0963e656a45b56e87c82b1b894058e0c0c5d5a3acfd1e2f8850678ef319681b0"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13: Security in Wireless Systems"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.1, Page 424"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "#Two prime numbers\n",
+ "p=5;\n",
+ "q=7;\n",
+ "\n",
+ "#Calculations\n",
+ "n=p*q;\n",
+ "z=(p-1)*(q-1);\n",
+ "e=5\n",
+ "d=29\n",
+ "\n",
+ "#Results\n",
+ "print 'Public keys is (%d, %d)'%(n,e);\n",
+ "print 'Private key is (%d, %d)'%(n,d);\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Public keys is (35, 5)\n",
+ "Private key is (35, 29)\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.2, Page 425"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "p=23; #prime number that both parties agreed upon\n",
+ "g=5;# g is primitive mod p\n",
+ "a=6; #party A choosen number\n",
+ "b=15; #party B choosen number\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print 'Party A sends to party B as (g**a mod p) = %d'%(g**a%23);\n",
+ "print 'Party B sends to party A as (g**b mod p) = %d'%(g**b%23);\n",
+ "print 'Party A computes secret key as ((g**b modp)**a mod p) = %d'%(((g**b%23)**a)%p);\n",
+ "print 'Party B computes secret key as ((g**a modp)**b mod p) = %d'%(((g**a%23)**b)%p);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Party A sends to party B as (g**a mod p) = 8\n",
+ "Party B sends to party A as (g**b mod p) = 19\n",
+ "Party A computes secret key as ((g**b modp)**a mod p) = 2\n",
+ "Party B computes secret key as ((g**a modp)**b mod p) = 2\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch14.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch14.ipynb
new file mode 100755
index 00000000..58285a29
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch14.ipynb
@@ -0,0 +1,106 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:3bb6fed41815ab02f5db449f0fb6dc3bca89d7411c6822dfe382fccc1777b7c3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14: Mobile Network and Transport Layer"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.1, Page 452"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "O=800*1000; #Object size(Bytes)\n",
+ "S=536.*8; #max Segment Size(in bits)\n",
+ "RTT=0.1; #Round trip-time in sec\n",
+ "R=1.*10**6; #Transmission rate of the link from the server to the client in bps\n",
+ "\n",
+ "#Calculations\n",
+ "Lmin=2*RTT+(O/R); #latency(msec)\n",
+ "# For minimum latency (S/R) +RTT -(W*S/R) = 0;Therefore\n",
+ "W=1+(RTT)/(S/R);\n",
+ "\n",
+ "#Results\n",
+ "print 'The minimum possible latency is %d sec'%Lmin;\n",
+ "print 'The minimum window size is %.1f segments'%W;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The minimum possible latency is 1 sec\n",
+ "The minimum window size is 24.3 segments\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.2, Page 452"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "RTT=0.1; #Round trip-time in sec\n",
+ "MSS=536.*8; #Maximum segment size in bits\n",
+ "p=0.01;# packet loss probability for the path\n",
+ "RTO=5*RTT; #Retransmission time out(from eqn 14.2 on page 450)\n",
+ "\n",
+ "#Calculations\n",
+ "R=0.93*MSS/(RTT*math.sqrt(p));\n",
+ "RR=MSS/(RTT*math.sqrt(1.33*p)+RTO*p*(1+32*p**2)*min(1,3*math.sqrt(0.75*p)));\n",
+ "\n",
+ "#Results\n",
+ "print 'The upper bound of the throughput is %.4f Mbps'%(R*10**-6);\n",
+ "print 'The throughput with retransmission due to errors is %.4f Mbps'%(RR*10**-6);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The upper bound of the throughput is 0.3988 Mbps\n",
+ "The throughput with retransmission due to errors is 0.3341 Mbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch17.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch17.ipynb
new file mode 100755
index 00000000..708d447e
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch17.ipynb
@@ -0,0 +1,769 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:029905df97aa37359789733a28b442f75b82e79e7e96006449e39c092f0d4cca"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 17: Planning and Design of a Wireless Network"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.1, Page 597"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration \n",
+ "Susage=150.;#subscriber usage per month in mins\n",
+ "days=24;#days per month\n",
+ "busyhrs=6;#in a day\n",
+ "BW=4.8*10**3; #in kHz\n",
+ "Freqreuse=4./12;#Frequency reuse plan\n",
+ "chwidth=200; #in kHz\n",
+ "subscriber=50000;#Present subscriber count\n",
+ "Sgrowth=0.05;#Growth rate per year\n",
+ "Area=500; #in km\n",
+ "BTScapacity=30; #in Erlangs\n",
+ "N=4; #Initial installation design years\n",
+ " \n",
+ "#Calculations&Results\n",
+ "Erlangspersub=Susage/(days*busyhrs*60);\n",
+ "print 'Average busy-hour traf\ufb01c per subscriber is %.4f Erlangs'%Erlangspersub;\n",
+ "RFcarriers=BW/chwidth;\n",
+ "RFcarrier_percell=RFcarriers/((Freqreuse**-1)*4); #freq reuse factor of 4\n",
+ "\n",
+ "#Assuming 2 control channels per cell\n",
+ "CC=2;#control channels\n",
+ "TC_percell=2*RFcarriers/3-CC;\n",
+ "#Referring Erlang-B table in Appendix A\n",
+ "print \"Referring Erlang-B table in Appendix A,Traf\ufb01c capacity of a GSM cell at 2% GoS for 14 channels = 8.2 Erlangs \"\n",
+ "Tcapacity=8.2;# in Erlangs\n",
+ "print \"There are 3 cells per BTS\"\n",
+ "BTS=3;\n",
+ "Traffic_perBTS=Tcapacity*BTS;\n",
+ "print 'Traffic capacity per BTS is %.1f Erlangs'%Traffic_perBTS\n",
+ "print \"Therefore, Traffic per BTS is less than BTS capacity(30 Erlangs)\"\n",
+ "maxsubscriber=Traffic_perBTS/Erlangspersub;\n",
+ "initialsub=subscriber*(1+Sgrowth)**N;\n",
+ "BTS_perZone=initialsub/maxsubscriber;\n",
+ "print 'The required number of base stations per zone are %d'%(round(BTS_perZone));\n",
+ "cellRadius=(Area/(BTS_perZone*2.6))**0.5;\n",
+ "print 'The hexagonal cell radius is %.1f km'%cellRadius;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Average busy-hour traf\ufb01c per subscriber is 0.0174 Erlangs\n",
+ "Referring Erlang-B table in Appendix A,Traf\ufb01c capacity of a GSM cell at 2% GoS for 14 channels = 8.2 Erlangs \n",
+ "There are 3 cells per BTS\n",
+ "Traffic capacity per BTS is 24.6 Erlangs\n",
+ "Therefore, Traffic per BTS is less than BTS capacity(30 Erlangs)\n",
+ "The required number of base stations per zone are 43\n",
+ "The hexagonal cell radius is 2.1 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.2, Page 598"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "usage=150.; #subscriber usage per month in mins\n",
+ "days=24;#Days in a month\n",
+ "BHrs=6;#Busy hours per day\n",
+ "BW=4.8; #in MHz\n",
+ "RFch=200; #in kHz\n",
+ "Psubscribers=50000;#present subscriber count\n",
+ "growth=0.05;#subscriber growth per year\n",
+ "rollover=4;#network roll over period\n",
+ "NPCS=5;#Number of packet calls per session \n",
+ "NPP=25;#Number of packets within a packet call \n",
+ "Tr=120;#Reading time between packet calls(sec)\n",
+ "NBP=480*8;#Packet size(in bits)\n",
+ "Tint=0.01;#Time interval between two packets(sec)\n",
+ "Ttot=3000;#Total packet service holding time\n",
+ "BH_PS=0.15;#Busy hour packet sessions per subscriber\n",
+ "Penetration=0.25;\n",
+ "datarate=48; #in kbps\n",
+ "PTT=10;#Packet transmission time(sec)\n",
+ "BTS=40;#NO of BTS sites\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Bitstx_duringPTT=NPCS*NPP*NBP/1000; \n",
+ "PST=PTT+Tr*(NPCS-1)+Tint*(NPP-1);\n",
+ "PT_duringBH=BH_PS*Ttot/PST;\n",
+ "Bits_persub_persec=Bitstx_duringPTT*PT_duringBH/(60*60);\n",
+ "VoiceErlangs=usage/(days*BHrs*60);\n",
+ "Initial_subscribers=round(Psubscribers*(1+growth)**rollover);\n",
+ "Data_subscribers=Initial_subscribers*Penetration;\n",
+ "Totalvoice=Initial_subscribers*VoiceErlangs;\n",
+ "Voicetraffic_perBTS=Totalvoice/BTS;\n",
+ "print 'Voice Traffic per Cell(sector) is %.2f Erlangs'%(Voicetraffic_perBTS/3);\n",
+ "Totaldata=Data_subscribers*Bits_persub_persec;\n",
+ "Datathroughput_perBTS=Totaldata/BTS;\n",
+ "print 'Data throughput per Cell(sector) is %.2f kbps'%(Datathroughput_perBTS/3)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Voice Traffic per Cell(sector) is 8.79 Erlangs\n",
+ "Data throughput per Cell(sector) is 15.50 kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.3, Page 600"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Holdtime=120;#Average holding time during Busy Hours(in sec)\n",
+ "Tx=3;# No of transreceivers\n",
+ "TSsig=3;#No of TSs per cell for signaling\n",
+ "RLC=0.80;#Radio link control efficiency\n",
+ "Radioblocks=9000;#Total numbers of transmitted radio blocks\n",
+ "TSdata=3;#TSs allocated for data traf\ufb01c per cell\n",
+ "Datarate=15.5; #From eg 17.2\n",
+ "Voicetraffic=8.82; #From eg.17.2\n",
+ "Duration=0.02;#Duration of block in sec\n",
+ "\n",
+ "#Calculations&Results\n",
+ "DataEr=Radioblocks*Duration/Holdtime;\n",
+ "print 'Data Erlangs = %.1f'%DataEr;\n",
+ "TSuti=DataEr/TSsig;\n",
+ "print 'Time Slot(TS) utilization = %.1f'%TSuti;\n",
+ "Throughput=(Datarate/TSdata)*RLC;\n",
+ "TScap=Throughput/TSuti;\n",
+ "print 'TS capacity is %.2f kbps'%TScap;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Data Erlangs = 1.5\n",
+ "Time Slot(TS) utilization = 0.5\n",
+ "TS capacity is 8.27 kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.4, Page 602"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pt=36;#Base station transmitted power in dBm\n",
+ "Pms=24;#mobile station transmitted power in dBm\n",
+ "Nms=8;#mobile station noise figure in dB\n",
+ "Nbs=5;#Base station nise figure in dB\n",
+ "Ga=18;#Base station transmit and receive antenna gain in dBi\n",
+ "Gm=0;#Mobile antenna gain in dBi\n",
+ "SNR=12;# in dB\n",
+ "Lc_TX=5;#BS transmit antenna cable, connector, and \ufb01lter losses in dB\n",
+ "Lc_RX=2;#BS receiver antenna cable, connector, and \ufb01lter losses in dB\n",
+ "Bodyloss=3;# Body losses at mobile\n",
+ "fading=10.2;# in dB\n",
+ "ThermalNoise=-174;# in dBm/Hz\n",
+ "Gdiversity=5;#Antenna diversity gain at BS in dB\n",
+ "#Assuming standard value of RF channel as \n",
+ "RFch=200*10**3; #in Hz\n",
+ "\n",
+ "#Calculations\n",
+ "N=ThermalNoise+10*math.log10(RFch)+Nms;\n",
+ "Smin=N+SNR;\n",
+ "Smean=Smin+fading+Bodyloss;\n",
+ "Lp=Pt-Lc_TX+Ga-Smean;\n",
+ "N1=ThermalNoise+10*math.log10(RFch)+Nbs;\n",
+ "Smin=N1+SNR-Gdiversity;\n",
+ "Smean1=Smin+fading+Bodyloss;\n",
+ "Lp1=Pms-Smean1+Ga-Lc_RX;\n",
+ "R=10**((Lp1-133.2)/33.8);\n",
+ "\n",
+ "#Result\n",
+ "print 'Cell radius is %.1f km'%R;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Cell radius is 1.2 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.5, Page 608"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Ri=12.2*10**3;#Information rate in bps\n",
+ "Rc=3.84*10**6;#Chip rate in cps(chips per second)\n",
+ "Eb_Nt=4.; #in dB\n",
+ "Imargin=2.; #Interference margin(3 dB)\n",
+ "B=0.5;#Interference factor due to other cells\n",
+ "Vi=0.65;#Channel activity factor\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Eb_Ntreqd=10**(Eb_Nt/10);\n",
+ "LF_peruser=(1+B)*(1./(1+(Rc/Ri)*(1./Eb_Ntreqd)*(1./Vi))); #M(no of users=1) in Eq 17.13\n",
+ "print 'Cell load factor per voice user is %.5f'%LF_peruser;\n",
+ "CellLoading=(Imargin-1)/Imargin;\n",
+ "VoiceUsers=CellLoading/LF_peruser;\n",
+ "print 'No of Voice Users are %d per cell'%VoiceUsers;\n",
+ "#From EQ 17.6 assuming Power control efficiency=1\n",
+ "Polecap=Rc/(Ri*Vi*(1+B)*Eb_Ntreqd);\n",
+ "print 'Pole Capacity is %d'%Polecap;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Cell load factor per voice user is 0.00774\n",
+ "No of Voice Users are 64 per cell\n",
+ "Pole Capacity is 128\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.6, Page 608"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Eb_Nt=1.; #in dB\n",
+ "cellLoading=0.5;#Required interference margin(3 dB)\n",
+ "B=0.5;#Interference factor due to other cells\n",
+ "Vi=1;#Channel activity factor\n",
+ "\n",
+ "#Calculations\n",
+ "Eb_Ntreqd=10**(Eb_Nt/10);\n",
+ "#Assuming standard value of chip rate as 3.84Mcps\n",
+ "Rc=3.84*10**6;#in cps(chips per second)\n",
+ "Throughput=(cellLoading*Rc)/(Eb_Ntreqd*(1+B));\n",
+ "\n",
+ "#Result\n",
+ "print 'Uplink Throughput is %d kbps'%(Throughput/1000);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Uplink Throughput is 1016 kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.7, Page 610"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Ri=12.2*10**3;#Information rate in bps\n",
+ "Rc=3.84*10**6;# Chip rate in chips per second\n",
+ "Eb_Nt=4.; # in dB\n",
+ "Eb_Nt=10**(Eb_Nt/10);\n",
+ "B=0.5;#Average interference factor due to other cells\n",
+ "Zeta=0.6; # orthogonality factor\n",
+ "Imargin=2.;#Interference margin(3 dB)\n",
+ "Vi=0.65 #assuming Channel activity factor as 0.65\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Loadfactor_peruser=(Zeta+B)*(1./((Rc/Ri)*(1./Eb_Nt)*(1./Vi)))\n",
+ "print 'Downlink cell load factor is %.4f'%Loadfactor_peruser;\n",
+ "cellLoading=(Imargin-1)/Imargin;\n",
+ "Voiceusers=cellLoading/Loadfactor_peruser;\n",
+ "print 'No of voice users per cell are %d'%Voiceusers;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Downlink cell load factor is 0.0057\n",
+ "No of voice users per cell are 87\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.8, Page 610"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "N0=-174;#Noise density in dBm/Hz\n",
+ "Bc=1.25;#Channel bandwidth in mHz\n",
+ "Rc=1.2288;#Chip rate in Mcps\n",
+ "Nf=6; #Receiver Noise figure in dB\n",
+ "Pt=27; #Effective radiated power from mobile in dBm\n",
+ "Lct=0.5; #Transmitter cable and connector loss in dBm\n",
+ "Lbody=1.5;#Body loss in dB\n",
+ "Lcr=2; #Receiver cable and connector loss in dB\n",
+ "Mint=0; #Interference margin in dB\n",
+ "Mfading=2;#fast fadinf margin in dB\n",
+ "Lpent=8;#Penetration loss in dB\n",
+ "Gm=0;#Transmitter antennna gain in dBi\n",
+ "Gb=12;#Receiver antenna gain in dBi\n",
+ "Fm=8;#Fade margin in dB\n",
+ "Eb_Nt=7;# in dB\n",
+ "\n",
+ "#Calculations\n",
+ "Nth=N0+Nf;\n",
+ "S_Nt=Eb_Nt+10*math.log10((Rc*10**6)/(Bc*10**6));\n",
+ "Smin=S_Nt+10*math.log10(Rc*10**6)+Nth;\n",
+ "Lpmax=(Pt-Smin)+(Gb+Gm)-(Lbody+Lct+Lcr+Fm+Lpent)-Mint-Mfading;\n",
+ "\n",
+ "#Results\n",
+ "print 'Minimum signal power required is %.2f dBm'%Smin;\n",
+ "print 'Maximum allowable path loss is %.2f dB'%Lpmax;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum signal power required is -100.18 dBm\n",
+ "Maximum allowable path loss is 117.18 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.9, Page 612"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Rc=3.84;#Chip rate in Mcps\n",
+ "Ri=16;#Data rate in kbps\n",
+ "UL=0.5;#UL loading factor\n",
+ "DL=0.9;#DL loading factor\n",
+ "Eb_NtU=4;#in dB\n",
+ "Eb_NtD=6;# in dB\n",
+ "Gm=0;#Mobile antenna gain in dBi\n",
+ "Gb=18;#Base station gain in dBi\n",
+ "\n",
+ "#Calculations\n",
+ "R=10**((139.65-138.5)/35.7);\n",
+ "print 'Cell Radius is %.3f km'%R;\n",
+ "Area=round(2.6*R**2);\n",
+ "\n",
+ "#Results\n",
+ "print 'Area covered by hexagonal cell is %d km**2'%Area;\n",
+ "print 'Number of BTSs required to cover an area of 2400 Km**2 are %d'%(2400/Area);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Cell Radius is 1.077 km\n",
+ "Area covered by hexagonal cell is 3 km**2\n",
+ "Number of BTSs required to cover an area of 2400 Km**2 are 800\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.10, Page 614"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Rc=3.84;#chip rate in Mcps\n",
+ "N=3.;#Noise rise in dB\n",
+ "OF=0.8;#orthogonality factor\n",
+ "B=0.55;#Interference from other cells \n",
+ "Eb_N0=4.;#in dB\n",
+ "Sec_Eff=0.85;#Sector efficiency\n",
+ "Pwr_Eff=0.80;#Power control efficiency\n",
+ "Y=1.2; #Retransmit rate\n",
+ "X=10.; #10MB at 384Kbps\n",
+ "X1=2.; #2MB at 144Kbps\n",
+ "X2=1.; #1MB at 64Kbps\n",
+ "\n",
+ "#Calculations\n",
+ "#Assuming Voice activity=Vf=1\n",
+ "Vf=1;\n",
+ "AvgDR=Y*X*10**6*(1./3600)+Y*X1*10**6*(1./3600)+Y*X2*10**6*(1./3600);\n",
+ "CLoad=(N-1)/(N+1);\n",
+ "DLcap=(Rc*10**6*Pwr_Eff*Sec_Eff)/(((10**(Eb_N0/10))*(B+OF)*Vf));\n",
+ "Allowcap=CLoad*DLcap;\n",
+ "users=Allowcap/AvgDR;\n",
+ "\n",
+ "#Result\n",
+ "print 'NO of users that can be supported on the downlink of the WCDMA network are %d'%(round(users));"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "NO of users that can be supported on the downlink of the WCDMA network are 89\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.11, Page 616"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "P1=1./2;#relative frequency of packets for user class1 \n",
+ "P2=1./3;#relative frequency of packets for user class2\n",
+ "P3=1./6;#relative frequency of packets for user class3\n",
+ "R1=16; #data rate in kbps for P1\n",
+ "R2=64; #data rate in kbps for P2\n",
+ "R3=1024; #data rate in kbps for P3\n",
+ "S1=16;#number of slots assigned to the R1 user\n",
+ "S2=8;#number of slots assigned to the R2 user\n",
+ "S3=2;#number of slots assigned to the R3 user\n",
+ "\n",
+ "#Calculations\n",
+ "#Using Equation 17.20 from page no 616\n",
+ "Ravg=(P1*R1*S1+P2*R2*S2+P3*R3*S3)/(P1*S1+P2*S2+P3*S3);\n",
+ "# For equal latency, using Eq 17.18\n",
+ "Rav=1./(P1/R1+P2/R2+P3/R3);\n",
+ "# For Latency ratio=4, using Eq 17.19 from page no 616\n",
+ "PL=4;\n",
+ "C=(P1+P2+PL*P3)/(P1/R1+P2/R2+P3/R3);\n",
+ "\n",
+ "#Results\n",
+ "print 'The average throughput for equal access condition is %.1f kbps'%Ravg;\n",
+ "print 'The average throughput by considering equal latency is %.1f kbps'%Rav;\n",
+ "print 'The average throughput by considering latency ratio as 4 is %.2f kkbps'%C\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The average throughput for equal access condition is 58.2 kbps\n",
+ "The average throughput by considering equal latency is 27.3 kbps\n",
+ "The average throughput by considering latency ratio as 4 is 40.96 kkbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.12, Page 620"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Ec_Nt=-23.;#in dB\n",
+ "DRC=-1.5;#DRC gain with respect to pilot in dB\n",
+ "Tg=3.75; # Traf\ufb01c channel gain with respect to pilot in dB\n",
+ "B=0.85;#Interference factor due to other cells \n",
+ "\n",
+ "#Calculations\n",
+ "Mmax=(1./(1+10**(DRC/10)+10**(Tg/10)))*(1./((10**(Ec_Nt/10)*(1+B))));\n",
+ "#The sector loading can be expressed as a fraction of the pole capacity Mmax. This is typically 70% of the pole capacity. \n",
+ "M_allow=int(0.7*Mmax);\n",
+ "#From table 17.2 we get Traffic channel rate as 9.6kbps since we are given traffic channel gain with respect to pilot as 3.75 dB\n",
+ "Ri=9.6; #in kbps(see table 17.2)\n",
+ "Tput=Ri*M_allow;\n",
+ "\n",
+ "#Result\n",
+ "print 'Allowable reverse link throughput is %d kbps'%(round(Tput));"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Allowable reverse link throughput is 173 kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.13, Page 623"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Ptmax=5.5;#Maximum transmit power of DSCH in watts\n",
+ "Pbs=18;# Total base station power in watts\n",
+ "alpha=0.2;#downlink orthogonality factor \n",
+ "G=0.363;# geometry factor\n",
+ "SF=16; #Spreading Factor for DSCH;fixed at value of 16\n",
+ "\n",
+ "#Calculations\n",
+ "# Using equation no 17.27 given on page no 623\n",
+ "SINR=SF*(Ptmax/(Pbs*(1-alpha+(1/G))));\n",
+ "# In dB\n",
+ "SINR_db=10*math.log10(SINR);\n",
+ "\n",
+ "#Result\n",
+ "print 'The average SINR of HSDPA is %.4f dB(%.1fdB)'%(SINR,SINR_db);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The average SINR of HSDPA is 1.3753 dB(1.4dB)\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.14, Page 624"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Users=350;#no of users supported\n",
+ "ExpectedTraf=1.8; # From section 17.7 (in Kbps)\n",
+ "BHTraf=1.785;#Busy hour traffic in kbps\n",
+ "BTS=180;\n",
+ "\n",
+ "#Calculations\n",
+ "IubBW=(ExpectedTraf*Users*BHTraf)/1000; # in Mbps\n",
+ "TotalBW=BTS*IubBW;\n",
+ "\n",
+ "#Result\n",
+ "print 'Required total bandwidth of Iub Interface is %.2f Mbps'%TotalBW;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Required total bandwidth of Iub Interface is 202.42 Mbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 17.15, Page 625"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "BTS=800.;#No of BTS sites\n",
+ "Sec=3;#No of sectors per BTS\n",
+ "freq_sec=2;#No of frequencies used per sector\n",
+ "cellsRNC=1152;#Maximum capacity of cellRNC\n",
+ "btsRNC=384;#One RNC can support btsRNC(BTSs)\n",
+ "VE=25;#Voice service(mErl/subscriber)\n",
+ "BRV=16;# bitrate Voice\n",
+ "CS1=10;#CS data service 1(mErl/subscriber)\n",
+ "BRC1=32;#bit rate for CS1 in kbps\n",
+ "CS2=5;#CS data service 2(mErl/subscriber)\n",
+ "BRC2=64;##bit rate for CS2 in kbps\n",
+ "PSdata=0.2;#PS data service(kbps per subscriber)\n",
+ "PSoverhead=0.15;\n",
+ "SHO=0.4;#40%\n",
+ "Totalsub=350000;#Total subsribers\n",
+ "Maxcap=196;#Maximum Iub capacity of tpRNC (in Mbps)\n",
+ "FR1=0.9;FR2=0.9;FR3=0.9;#Filler rates\n",
+ "\n",
+ "#Calculations&Results\n",
+ "RNCreqd=(BTS*Sec*freq_sec)/(cellsRNC*FR1);#from eqn 17.28\n",
+ "print 'using equation 17.28,Number of RNC required are %d'%(round(RNCreqd));\n",
+ "RNC_reqd=BTS/(btsRNC*FR2);#from eqn 17.29\n",
+ "print 'using equation 17.29,Number of RNC required are %d'%(round(RNC_reqd));\n",
+ "RNCrequired=((VE/1000*BRV+CS1/1000*BRC1+CS2/1000*BRC2+(PSdata/(1-PSoverhead)))*(1+SHO)*Totalsub)/(Maxcap*1000*FR3);#from eqn 17.30\n",
+ "print 'using equation 17.30,Number of RNC required are %d'%(round(RNCrequired));\n",
+ "print 'We select first value which is %d RNCs'%(round(RNCreqd));"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "using equation 17.28,Number of RNC required are 5\n",
+ "using equation 17.29,Number of RNC required are 2\n",
+ "using equation 17.30,Number of RNC required are 1\n",
+ "We select first value which is 5 RNCs\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch19.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch19.ipynb
new file mode 100755
index 00000000..fee9ff09
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch19.ipynb
@@ -0,0 +1,106 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:dd18f098648291d58cdb32b1739d692bc9e7a8620a737fa84a463a3efca95463"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 19: Wireless Personal Area Network - Bluetooth"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 19.1, Page 666"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "SS=80.; #Frame length of HV3 voice packet\n",
+ "R=64*10**3; #Data rate in bps\n",
+ "TS=240; #No of bits carried in a slot\n",
+ "\n",
+ "#Calculations\n",
+ "#From table 19.3:Bluetooth air interface details, we get Frequency hopping rate as 1600hopes/second\n",
+ "\n",
+ "#From table 19.5, we can note that for HV3, No of slots are 1 and carry in all(80(user voice sample)+160(parity bits))=240 bits in one slot packet\n",
+ "HR=1600; #hopes/second\n",
+ "Eff=SS/TS;\n",
+ "x=R/SS; #x is number of times a packet is sent\n",
+ "\n",
+ "#Results\n",
+ "print 'Hopping rate is %d hopes/sec'%HR;\n",
+ "print 'No of bits transmitted in one slot are %d'%TS;\n",
+ "print 'Efficiency of packet transmission is %.4f'%Eff;\n",
+ "print 'Number of times a packet is sent is equal to %d'%x;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hopping rate is 1600 hopes/sec\n",
+ "No of bits transmitted in one slot are 240\n",
+ "Efficiency of packet transmission is 0.3333\n",
+ "Number of times a packet is sent is equal to 800\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 19.2, Page 666"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "R=136.; # bits per slot\n",
+ "SR=800; # no of slots per second\n",
+ "\n",
+ "#Calculations\n",
+ "# A symmetric 1-slot DM1 link is setup between a master and a slave\n",
+ "AR=R*SR; #Data rate in bps\n",
+ "\n",
+ "#Result\n",
+ "print 'Associated data rate is %0.1f kbps'%(AR/1000);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Associated data rate is 108.8 kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch2.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch2.ipynb
new file mode 100755
index 00000000..b82f7950
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch2.ipynb
@@ -0,0 +1,533 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:dd4432cc2f7e790571ec64d7a8254cb368aab6a22204c8b382ba85e3c1b5a734"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2: Teletraffic Engineering"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.1, Page 25"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "LC=10.; #Lost calls\n",
+ "CC=380; #Carried calls\n",
+ "\n",
+ "#Calculations\n",
+ "OC=LC+CC; #Total offered calls\n",
+ "#Gos=Blocking probability=(number of Lost calls/Total number of offered calls)\n",
+ "Gos=LC/OC;\n",
+ "\n",
+ "#Result\n",
+ "print 'The Gos during busy hour is %f \\n '%Gos"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Gos during busy hour is 0.025641 \n",
+ " \n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2, Page 26"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Ht=5; #Average holding time in seconds\n",
+ "PC=450; # Peg count for one hour period\n",
+ "OC=0; # Overflow count\n",
+ "\n",
+ "#Calculations&Results\n",
+ "# usage(Erlangs)=(peg count- overflow count)*Average holding time(in hrs)\n",
+ "U=(PC-OC)*(5./3600); \n",
+ "print 'Usage = %.3f Erlangs'%U\n",
+ "\n",
+ "# IN CCS\n",
+ "Uccs=U*36; # usage in CCS\n",
+ "print '%.1f CCS'%Uccs\n",
+ "\n",
+ "Ucs=Uccs *100; #usage in call-seconds\n",
+ "print '%d call-seconds'%Ucs"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Usage = 0.625 Erlangs\n",
+ "22.5 CCS\n",
+ "2250 call-seconds\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.3, Page 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "B=0.05; #Blocking(5%)\n",
+ "CL=3000.; #Carried Load in CCS\n",
+ "\n",
+ "#Calculations\n",
+ "#Offered Load=Carried Load/(1-Blocking);\n",
+ "OL=CL/(1-B); #Offered Load in CCS\n",
+ "\n",
+ "#Result\n",
+ "print 'Offered load is %d CCS'%OL\n",
+ "print 'Overflow is %d CCS'%((OL-CL))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Offered load is 3157 CCS\n",
+ "Overflow is 157 CCS\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.4, Page 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Ht=120; #Holding time in seconds\n",
+ "CR=2.; #call rate per hour\n",
+ "\n",
+ "#Calculations\n",
+ "#Traffic Intensity(Erlangs) = call rate * Holding time(in hrs));\n",
+ "I=CR*Ht/3600; #Traffic Intensity\n",
+ "\n",
+ "#Result\n",
+ "print 'Traffic Intensity is %.4f Erlangs = %.1f CCS \\n'%(I,I*36);\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Traffic Intensity is 0.0667 Erlangs = 2.4 CCS \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.5, Page 27"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "time=90.; #in minutes\n",
+ "calls=10.; #no of calls in 90mins\n",
+ "\n",
+ "#Calculations\n",
+ "CR=calls/(time/60); #call arrival rate in calls/hour\n",
+ "tavg=(60.+74+80+90+92+70+96+48+64+126)/10; #average call holding time in sec per call\n",
+ "I= CR*(tavg/3600); #traffic intensity in Erlangs\n",
+ "\n",
+ "#Result\n",
+ "print 'Traffic Intensity is %.3f Erlangs = %.2f CCS \\n '%(I,I*36)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Traffic Intensity is 0.148 Erlangs = 5.33 CCS \n",
+ " \n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.6, Page 28"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "time=8.; #in hours\n",
+ "calls=11.; #no of calls in 90mins period\n",
+ "\n",
+ "#Calculations&Results\n",
+ "CR=calls/time; #call arrival rate in calls/hour\n",
+ "tavg=(3+10.+7+10+5+5+1+5+15+34+5)/11; #average call holding time in mins per call\n",
+ "I= CR*(tavg/60); #traffic intensity in Erlangs\n",
+ "print 'Traffic Intensity during eight hour period is %.3f Erlangs = %.1f CCS \\n'%(I,I*36);\n",
+ "\n",
+ "#For Busy Hour i.e between 4:00PM and 5:00PM\n",
+ "CRB=2; #call arrival rate during busy hour in calls/hour(from table 2.2)\n",
+ "tavgB=(34+5.)/2; #average holding time during Busy Hour in mins/call (from table 2.2)\n",
+ "IB=CRB*(tavgB/60); #Traffic Intensity during Busy Hour\n",
+ "print 'Traffic Intensity during busy hour is %.2f Erlangs = %.1f CCS'%(IB,IB*36);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Traffic Intensity during eight hour period is 0.208 Erlangs = 7.5 CCS \n",
+ "\n",
+ "Traffic Intensity during busy hour is 0.65 Erlangs = 23.4 CCS\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7, Page 29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "minutes=500.; #No of minutes used per month per user\n",
+ "Twork=0.9; #Traffic During Work day\n",
+ "TBH=0.1; #Traffic during busy hour\n",
+ "Days=20; #No of workdays in a month\n",
+ "\n",
+ "#Calculations\n",
+ "#Avg BH usage per subscriber (in minutes) = minutes*Twork(TBH/Days);\n",
+ "Traffic=minutes*Twork*(TBH/Days);\n",
+ "\n",
+ "#Result\n",
+ "print 'Traffic per user per BH is %.4f Erlangs \\n'%(Traffic/60);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Traffic per user per BH is 0.0375 Erlangs \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.8, Page 29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "minutes=500.; #No of minutes used per month per user\n",
+ "Twork=0.9; #Traffic During Work day\n",
+ "TBH=0.1; #Traffic during busy hour\n",
+ "Days=20; #No of workdays in a month\n",
+ "MeanHT=100; #Mean holding time(in secs)\n",
+ "\n",
+ "#Calculations\n",
+ "#Avg BH usage per subscriber (in minutes) = minutes*Twork(TBH/Days);\n",
+ "#BHCAs=traf\ufb01c (in Erlangs) *3600/(meanHT)\n",
+ "\n",
+ "Traffic=minutes*Twork*(TBH/Days);\n",
+ "BHCAs=(Traffic/60)*(3600/MeanHT);\n",
+ "\n",
+ "#Result\n",
+ "print 'Average Busy Hour call attempts are %.2f'%BHCAs"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Average Busy Hour call attempts are 1.35\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.9, Page 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Tpopu=200000;#Total population\n",
+ "SP=0.25; #subscriber penetration\n",
+ "HT1=100.; #holding time for Mobile to Land line and vicecersa\n",
+ "c1=3; #Avg calls/hr for Mobile to Land line and vicecersa\n",
+ "HT2=80.; #For mobile to mobile\n",
+ "c2=4; #For mobile to mobile\n",
+ "TMSC=1800; #traffic one msc can hold\n",
+ "TrafDist=0.9 #Traffic distribution for Mobile to Land line and vicecersa\n",
+ "\n",
+ "#Calculations\n",
+ "aM_L=c1*HT1/3600; #Traffic Generated by Subscriber (M-L and L-M).\n",
+ "aM_M=c2*HT2/3600; #Traffic Generated by Subscriber (M-M).\n",
+ "WlessSub=SP*Tpopu; #total wireless subscribers\n",
+ "TotalTraffic=WlessSub*TrafDist*aM_L+WlessSub*(1-TrafDist)*aM_M;\n",
+ "MSCreqd=TotalTraffic/TMSC;\n",
+ "if(MSCreqd-int(MSCreqd)>0):#for rounding of to next integer ef 2.33 to 3\n",
+ " MSCreqd=MSCreqd+1;\n",
+ " \n",
+ "\n",
+ "#Result\n",
+ "print 'Total Traffic is %.1f Erlangs'%TotalTraffic;\n",
+ "print 'NO of MSCs Required are %d'%(int(MSCreqd))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total Traffic is 4194.4 Erlangs\n",
+ "NO of MSCs Required are 3\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10, Page 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Rlines=15000.;#Residential lines\n",
+ "Blines=80000.;#Business lines\n",
+ "PWElines=5000;#PBX, WATS, and Foreign Exchange (FX) lines\n",
+ "CR_R=2.;#Call rates for Rlines\n",
+ "CR_B=3.;# call rates for Blines\n",
+ "CR_PWE=10.;#call rates for PWElines\n",
+ "HT_R=140.;#average holding time for Rlines(sec)\n",
+ "HT_B=160.;#average holding time for Blines(sec)\n",
+ "HT_PWE=200.;#average holding time for PWE lines(sec)\n",
+ "Slines=100000.;# no of lines carried by switch\n",
+ "HD_ABS=1.5;# HD/ABS for the switch\n",
+ "\n",
+ "#Calculations\n",
+ "percentR_lines=Rlines/Slines;\n",
+ "percentB_lines=Blines/Slines;\n",
+ "percentPWE_lines=PWElines/Slines;\n",
+ "CCSR=CR_R*HT_R/100;\n",
+ "CCSB=CR_B*HT_B/100;\n",
+ "CCSPWE=CR_PWE*HT_PWE/100;\n",
+ "\n",
+ "CR=CR_R*percentR_lines+CR_B*percentB_lines+CR_PWE*percentPWE_lines;\n",
+ "print 'The call rate is %.1f calls per line \\n '%CR\n",
+ "CCS=CCSR*percentR_lines+CCSB*percentB_lines+CCSPWE*percentPWE_lines;\n",
+ "AvgHTperline=CCS*100/CR;\n",
+ "ABS_BH_calls=CR*Slines;\n",
+ "ABS_BH_usage=CCS/36*Slines;\n",
+ "print 'Design cell capacity based on HD is %d calls \\n'%(HD_ABS*ABS_BH_calls);\n",
+ "print 'DESIGN Erlangs based on HD is %d \\n'%(round(HD_ABS*ABS_BH_usage)); "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The call rate is 3.2 calls per line \n",
+ " \n",
+ "Design cell capacity based on HD is 480000 calls \n",
+ "\n",
+ "DESIGN Erlangs based on HD is 21917 \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.11, Page 43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "maxcalls_hour=4000.;#maximum call per hour\n",
+ "avgHT=160.;#average holding time in sec\n",
+ "Gos=0.02;\n",
+ "\n",
+ "#Calculations&Results\n",
+ "A=maxcalls_hour*avgHT/3600; #offered load\n",
+ "print 'Offered load A = %.2f Erlangs \\n'%A\n",
+ "#Refering Appendix A i.e Erlang B table \n",
+ "print \"For calculated Offered load and referring Erlang B table we get Service channels as 182 giving 168.3 Erlangs at 2% blocking\"\n",
+ "#Incorrect answer in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Offered load A = 177.78 Erlangs \n",
+ "\n",
+ "For calculated Offered load and referring Erlang B table we get Service channels as 182 giving 168.3 Erlangs at 2% blocking\n"
+ ]
+ }
+ ],
+ "prompt_number": 27
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.12, Page 43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "channels=50;\n",
+ "blocking=0.02;\n",
+ "HT=120;#average holding time inm sec\n",
+ "BHcall=1.2;# in calls per hour\n",
+ "\n",
+ "#Calculations\n",
+ "#Refering Erlang B table in appendix A, For 50 channels at 2% blocking, the offered load=40.26 Erlangs.\n",
+ "A=40.26;\n",
+ "B=A*(1-0.02); #carried load\n",
+ "Avgtraffic_user=BHcall*HT/3600;\n",
+ "No_users=B/Avgtraffic_user;\n",
+ "\n",
+ "#Result\n",
+ "print 'NO of mobile subscribers supported are %d \\n'%(round(No_users))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "NO of mobile subscribers supported are 986 \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch21.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch21.ipynb
new file mode 100755
index 00000000..8bbb0588
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch21.ipynb
@@ -0,0 +1,476 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:0dee4e43707ceeefa5dfd2c385df6788c5d4953bcdfe972a22a90a0c7cd8abc7"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 21: Wireless Local Area Networks"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.1, Page 727"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "import sympy\n",
+ "from sympy import * \n",
+ "\n",
+ "#Variable declaration\n",
+ "Fl=902; #lower limit frequency MHz\n",
+ "Fh=928; #higher limit frequency in MHz\n",
+ "Rt=0.5; #symbol transmission rate in Mega symbols per sec\n",
+ "S=16; #No of symbols\n",
+ "BER=10**-5;#Bir error rate\n",
+ "SG=2.6;#sector gain\n",
+ "B=0.5; #Interference factor\n",
+ "a=0.9; #power control efficiency\n",
+ "\n",
+ "#Calculations&Results\n",
+ "BW=Fh-Fl;\n",
+ "Rb=Rt*math.log(S,2);\n",
+ "Gp=BW/Rb;\n",
+ "x = symbols('x')\n",
+ "y = solve(0.5*(1-erf(sqrt(x)))-10**-5,x)\n",
+ "M=Gp/y[0] * 1/(1+B) * SG * a;\n",
+ "print 'Number of users that can be supported by the WLAN are %d'%M\n",
+ "eff=Rb*int(M)/BW;\n",
+ "print 'The bandwidth efficiency is %.2f bps/Hz'%eff"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Number of users that can be supported by the WLAN are 2\n",
+ "The bandwidth efficiency is 0.15 bps/Hz\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.2, Page 733"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Stepsize=200.; #in Hz\n",
+ "Chipsmin=20.;#length of linear feedback shift register \n",
+ "Datarate=1.2*10**3; #bps\n",
+ "\n",
+ "#Calculations\n",
+ "No_of_tones=2**Chipsmin;\n",
+ "Bss=No_of_tones*Stepsize;\n",
+ "Chiprate=Datarate*Chipsmin;\n",
+ "Gp=Bss/Datarate;#processing gain\n",
+ "Symbolrate=Datarate/3; #8-ary FSK is used\n",
+ "Chips_symbol=Chiprate/Symbolrate;\n",
+ "\n",
+ "#Results\n",
+ "print 'The Hopping Bandwidth is %.3f MHz'%(Bss/10**6);\n",
+ "print 'The chiprate is %d kchip/sec'%(Chiprate/10**3);\n",
+ "print 'Chips per symbol are %d'%(Chips_symbol);\n",
+ "print 'The processing gain is %.1f'%Gp"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Hopping Bandwidth is 209.715 MHz\n",
+ "The chiprate is 24 kchip/sec\n",
+ "Chips per symbol are 60\n",
+ "The processing gain is 174762.7\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.3, Page 734"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "InfoSc=48.;#Information subcarriers\n",
+ "SyncSc=4.;#synchronization subcarriers\n",
+ "ReservedSc=12.;#Reserved subcarriers\n",
+ "Symrate=250.; #ksps(kilosymbols per second)\n",
+ "BW=20.; #/in MHz\n",
+ "Grdt=800.; #Guard time in nsec\n",
+ "\n",
+ "#Calculations\n",
+ "TotalSc=InfoSc+SyncSc+ReservedSc;#Total subcarriers\n",
+ "BW_Sch=BW*10**6/TotalSc;#BW of subchannel\n",
+ "Mod_eff=Symrate*10**3/(BW_Sch);#Modulation efficiency\n",
+ "User_txrate=InfoSc*Symrate*10**3;\n",
+ "User_bitsymbol=4; #16-QPSK is used\n",
+ "User_DR=36; #Mbps\n",
+ "Sym_Dur=1./(Symrate*10**3);\n",
+ "TimeUti=Sym_Dur/(Sym_Dur+(Grdt/10**9));\n",
+ "\n",
+ "#Results\n",
+ "print 'The bandwidth of subchannel is %.1f kHz'%(BW_Sch/10**3);\n",
+ "print 'Modulation efficiency is %.1f symbols/sec/Hz'%Mod_eff\n",
+ "print 'User symbol rate is %d Msps'%(User_txrate/10**6);\n",
+ "print 'Time Utilization efficiency is %.2f'%TimeUti"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The bandwidth of subchannel is 312.5 kHz\n",
+ "Modulation efficiency is 0.8 symbols/sec/Hz\n",
+ "User symbol rate is 12 Msps\n",
+ "Time Utilization efficiency is 0.83\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.4, Page 735"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Eb_No=10; #in dB\n",
+ "Noise=-120; #in dBm\n",
+ "Pt=20; #in mwatt\n",
+ "R=1; #Data rate in Mbps\n",
+ "CHBW=0.5; #BW in MHz\n",
+ "A=37.7; #path loss at the \ufb01rst meter in dB\n",
+ "Y=3.3; #path loss exponent\n",
+ "Lf=19; #function relating power loss with number of \ufb02oors n (in dB)\n",
+ "Ls=10; # lognormally distributed random variable representing the shadow effect in dB \n",
+ "\n",
+ "#Calculations\n",
+ "S2Nreqd=Eb_No*R/CHBW;\n",
+ "Rx_sensi=Noise+S2Nreqd;\n",
+ "Lp=10*math.log10(20)-Rx_sensi;\n",
+ "#Lp=A+10Ylod(d)+Lf+Ls;therefore\n",
+ "d=10**((Lp-A-Lf-Ls)/(10*Y));\n",
+ "\n",
+ "#Result\n",
+ "print 'The coverage of AP is %.1f metres'%d;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The coverage of AP is 25.3 metres\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.5, Page 758"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "R=3./4;#code rate of convolution encoder\n",
+ "M1=9.; #payload transmission rate in Mbps for mode 1\n",
+ "M2=36.; #payload transmission rate in Mbps for mode 2\n",
+ "\n",
+ "#Calculations&Results\n",
+ "D1=M1*10**6/48;#user data rate in kbps for mode 1 \n",
+ "D2=M2*10**6/48;#user data rate in kbps for mode 2 \n",
+ "#Refering to Table 21.11\n",
+ "print 'Data transmission rate per carrier with 3/4 convolution encoder are %.1f Kbps and %d Kbps'%(D1/10**3,D2/10**3);\n",
+ "C1=D1/R;\n",
+ "C2=D2/R;\n",
+ "print 'Carrier transmission rate with R=3/4 convolutional encoder are %d Kbps and %d Kbps'%(C1/10**3,C2/10**3);\n",
+ "print 'Carrier symbol rate with R=3/4 convolutional encoder are %d ksps and %d Ksps'%(C1/10**3,C2/4/10**3); #Mode1 as BPSK and MOde2 as 16-QAM"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Data transmission rate per carrier with 3/4 convolution encoder are 187.5 Kbps and 750 Kbps\n",
+ "Carrier transmission rate with R=3/4 convolutional encoder are 250 Kbps and 1000 Kbps\n",
+ "Carrier symbol rate with R=3/4 convolutional encoder are 250 ksps and 250 Ksps\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.6, Page 759"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "R=3./4; #code rate for convolution encoder\n",
+ "\n",
+ "#Calculations\n",
+ "#64-QAM modulation is used\n",
+ "Sc=250; #Carrier symbol rate(ksps) from Exa 21.5\n",
+ "Bits_sym=math.log(64,2); #64-QAM is used\n",
+ "User_R=Bits_sym*Sc*10**3*R*48;\n",
+ "\n",
+ "#Result\n",
+ "print 'The user data rate is %d Mbps'%(User_R/10**6);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The user data rate is 54 Mbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.7, Page 762"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "D=1000.*8; #packet size in bits\n",
+ "R=2.*10**6; #transmission rate in bps\n",
+ "L=3.; #msec(Dwell time)\n",
+ "H=0.625; #msec(Duration of BT packet)\n",
+ "\n",
+ "#Calculations\n",
+ "Tw=10**3*D/R; #the packet duration of IEEE 802.11 in msec\n",
+ "H_L=1.;\n",
+ "G=(H_L)*L-Tw-H;\n",
+ "Gm=abs(G);\n",
+ "PER_FH=1-((1-Gm/L)*(78./79)**(H_L)+Gm/L*(78./79)**((H_L)-G/Gm));\n",
+ "PER_DS=1-((1-Gm/L)*(57./79)**(H_L)+Gm/L*(57./79)**((H_L)-G/Gm));\n",
+ "\n",
+ "#Results\n",
+ "print 'The PER for FH packet and PER for DS packet are %d percent & %.2f percent respectively'%(round(PER_FH*100),PER_DS*100);\n",
+ "print \"The collision probability with 802.11 DS is much higher than with 802.11 FH.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The PER for FH packet and PER for DS packet are 2 percent & 38.73 percent respectively\n",
+ "The collision probability with 802.11 DS is much higher than with 802.11 FH.\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.8, Page 765"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "d=10; # distance between AP and IEEE 802.11 device in metres\n",
+ "Y=4; #path loss exponent\n",
+ "PBt=20; #the transmitted power by the BT in dBm\n",
+ "PAp=40; #the transmitted power by the AP in dBm\n",
+ "Pe=10**-5;#acceptable error probability\n",
+ "\n",
+ "#Calculations\n",
+ "#Pe=0.5*e**(-0.5*Eb/No)\n",
+ "SIR=math.log(Pe/0.5)/(-0.5);# signal-to-interference ratio \n",
+ "rmax=d*(SIR*PBt/PAp)**(1./Y);# range of interference between Bluetooth and 802.11 device \n",
+ "\n",
+ "#Results\n",
+ "print 'Minimum SIR is %.2f dB = %.1f'%(10*math.log10(SIR),SIR);\n",
+ "print 'Maximum coverage range is %.2f metres'%rmax;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum SIR is 13.35 dB = 21.6\n",
+ "Maximum coverage range is 18.14 metres\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.9, Page 765"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "SIRmin=21.6; #From eg 21.8 i.e(13.36 dB)\n",
+ "d=10; #distance between AP and IEEE 802.11 device in m\n",
+ "PMs=40; # transmitted power of the IEEE 802.11 device in dBm\n",
+ "PBt=20; #the transmitted power by the BT in dBm\n",
+ "Y=4 ; #path loss exponent\n",
+ "\n",
+ "#Calculations\n",
+ "rmax=d*(SIRmin*PMs/PBt)**(1./Y);\n",
+ "\n",
+ "#Result\n",
+ "print 'Maximum coverage range is %.1f metres'%rmax"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum coverage range is 25.6 metres\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 21.10, Page 765"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Gp=11;#processing gain(given)\n",
+ "#Defining variables from Exa 21.8 & 21.9\n",
+ "PBt=20; # transmitted power by the BT in dBm\n",
+ "PMs=40; # transmitted power of the IEEE 802.11 device in dBm\n",
+ "PAp=40; # transmitted power by the AP in dBm\n",
+ "d=10; # distance between AP and IEEE 802.11 device in m\n",
+ "Y=4; #path loss exponent\n",
+ "Pe=10**-5;#Error probability\n",
+ "\n",
+ "#Calculations&Results\n",
+ "#Pe=0.5*e**(-0.5*Eb/No)\n",
+ "SIR=math.log(Pe/0.5)/(-0.5);\n",
+ "r1max=d*(SIR*PBt/(PAp*Gp))**(1./Y);# range of interference between Bluetooth and 802.11 device \n",
+ "print 'Maximum coverage range for IEEE 802.11 DS is %.2f metres'%r1max\n",
+ "r2max=d*(SIR*PMs/(PBt*Gp))**(1./Y);\n",
+ "print 'Maximum coverage range for IEEE 802.11 FH is %.2f metres'%r2max;\n",
+ "print \"Thus, the interference ranges are smaller for the IEEE 802.11 DS device than the IEEE 802.11 FH device.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum coverage range for IEEE 802.11 DS is 9.96 metres\n",
+ "Maximum coverage range for IEEE 802.11 FH is 14.08 metres\n",
+ "Thus, the interference ranges are smaller for the IEEE 802.11 DS device than the IEEE 802.11 FH device.\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch3.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch3.ipynb
new file mode 100755
index 00000000..40f3b8ea
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch3.ipynb
@@ -0,0 +1,543 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:f32dec82dcc091d4a1d388fd0afce868d4917308e897fe0d3ace9d832db79571"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3: Radio Propagation and Propagation Path-Loss Models"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1, Page 51"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "hb=100; #in feets(height of BS antenna)\n",
+ "hm=5; # in feets(height of mobile antenna)\n",
+ "f=881.52;#in MHz\n",
+ "lamda=1.116; #in feet\n",
+ "d=5000; #in feet\n",
+ "Gb=10**0.8; #8dB(BS antenna gain)\n",
+ "Gm=10**0; # 0dB (Mobile antenna gain)\n",
+ "\n",
+ "#Calculations&Results\n",
+ "free_atten=(4*math.pi*d/lamda)**2*(Gb*Gm)**-1;\n",
+ "y=round(10*math.log10(free_atten));\n",
+ "print 'Free space attenuation is %d dB \\n'%y\n",
+ "reflect_atten= (d**4/(hb*hm)**2)*(Gb*Gm)**-1;\n",
+ "x=round(10*math.log10(reflect_atten));\n",
+ "print 'Reflecting surface attenuation is %d dB \\n '%x"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Free space attenuation is 87 dB \n",
+ "\n",
+ "Reflecting surface attenuation is 86 dB \n",
+ " \n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.2, Page 52"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "d=8000; #Distance between base station and mobile station\n",
+ "f=1.5*10**9;#in Hz \n",
+ "lamda=0.2; #in metres\n",
+ "Pt=10; #BS transmitted power in watts\n",
+ "Lo=8; #Total system losses in dB\n",
+ "Nf=5; #Mobile receiver noise figure in dB\n",
+ "T=290; #temperature in degree kelvin\n",
+ "BW=1.25*10**6; #in Hz\n",
+ "Gb=8; #in dB\n",
+ "Gm=0; #in dB\n",
+ "Hb=30; #in metres\n",
+ "Hm=3.; #in metres\n",
+ "B=1.38*10**-23; #Boltzmann's constant\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Free_Lp=20*math.log10(Hm*Hb/d**2);\n",
+ "Pr=Free_Lp-Lo+Gm+Gb+Pt; #in dBW\n",
+ "Te=T*(3.162-1);\n",
+ "Pn=B*(Te+T)*BW;\n",
+ "print 'Received signal power is %d dBW \\n'%(10*math.log10(Pn))\n",
+ "SNR=Pr-10*math.log10(Pn);\n",
+ "print 'SNR ratio is %d dB \\n'%(round(SNR))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Received signal power is -138 dBW \n",
+ "\n",
+ "SNR ratio is 31 dB \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.3, Page 58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "d=3*1000;#in metres\n",
+ "Y=4;# path loss exponent\n",
+ "Pt=4; #Transmitted power in watts\n",
+ "f=1800*10**6;#in Hz\n",
+ "Shadow=10.5; #in dB\n",
+ "d0=100.;#in metres\n",
+ "P0=-32; #in dBm\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print \"Using equation 3.11 and including shadow effect we get\"\n",
+ "Pr=P0+10*Y*math.log10(d0/d)+Shadow;\n",
+ "print 'Received power is %.1f dBm \\n'%Pr\n",
+ "path_loss=10*math.log10(Pt*1000)-Pr;\n",
+ "print 'Allowable path loss is %.1f dB \\n'%path_loss"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Using equation 3.11 and including shadow effect we get\n",
+ "Received power is -80.6 dBm \n",
+ "\n",
+ "Allowable path loss is 116.6 dB \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.4, Page 58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "shadow=10.; #in dB\n",
+ "Lp=150; #in dB\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print \"Using equation given in Problem i.e Lp=133.2+40*math.log(d) we get,\"\n",
+ "d=10**((Lp-10-133.2)/40);\n",
+ "print \"Separation between transmitter and receiver as %.2f km\"%d"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Using equation given in Problem i.e Lp=133.2+40*math.log(d) we get,\n",
+ "Separation between transmitter and receiver as 1.48 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.5, Page 61"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "v=60*0.44704; #.. mph to mps\n",
+ "fc=860*10**6;#in Hz\n",
+ "td=2*10**-6; #RMS delay spread in sec\n",
+ "c=3.*10**8;# speed of light in m/sec\n",
+ "Rs=19200.; #Coded symbol rate in bps\n",
+ "\n",
+ "#Calculations&Results\n",
+ "lamda=c/fc;\n",
+ "fm=v/lamda; #Maximum doppler shift\n",
+ "tc=1/(2*math.pi*fm);#Channel coherence time\n",
+ "print 'Channel coherence time is %.4f sec \\n'%tc\n",
+ "ts=1/Rs; #symbol interval\n",
+ "print 'Symbol interval is %d microsec \\n'%(ts*10**6);\n",
+ "print \"As the symbol interval is much smaller compared to the channel coherence time. So, Symbol distortion is minimal and fading is slow.\";\n",
+ "print \"\";\n",
+ "Bc=1/(2*math.pi*td);\n",
+ "print 'Coherence Bandwidth is %.2f kHz \\n'%(Bc/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Channel coherence time is 0.0021 sec \n",
+ "\n",
+ "Symbol interval is 52 microsec \n",
+ "\n",
+ "As the symbol interval is much smaller compared to the channel coherence time. So, Symbol distortion is minimal and fading is slow.\n",
+ "\n",
+ "Coherence Bandwidth is 79.58 kHz \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.6, Page 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "p=1;# re\ufb02ection coef\ufb01cient of ground \n",
+ "c=3.*10**8;# velocity of light in free space(m/sec)\n",
+ "e=2.71828;#Euler's number\n",
+ "fm=20; #in Hz\n",
+ "fc=900*10**6; #carrier frequency in Hz\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Nr=math.sqrt(2*math.pi)*fm*p*e**-(p**2);\n",
+ "print 'NO of fades per second are %.2f \\n'%Nr\n",
+ "Afd=e**-(p**2)/(p*fm*math.sqrt(2*math.pi));\n",
+ "print 'Average fade duration is %.4f sec \\n '%Afd\n",
+ "v=fm*c/fc;\n",
+ "print 'Maximum velocity of mobile is %.2f m/sec = %d Km/hour \\n'%(v,v*18/5);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "NO of fades per second are 18.44 \n",
+ "\n",
+ "Average fade duration is 0.0073 sec \n",
+ " \n",
+ "Maximum velocity of mobile is 6.67 m/sec = 24 Km/hour \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.7, Page 70"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "import matplotlib\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "%matplotlib inline\n",
+ "\n",
+ "#Variable declaration\n",
+ "d=np.array([1, 2, 3, 4, 5]); #in km\n",
+ "hb=30; #Height of BS antenna in metres\n",
+ "hm=2;# height of mobile antenna in matres\n",
+ "fc=900;#carrier frequency in MHz\n",
+ "W=15; #street width(m)\n",
+ "b=30; # distance between building along radio path (m) \n",
+ "phi=90; # incident angle relative to the street\n",
+ "hr=30; #in m\n",
+ "\n",
+ "#Calculations\n",
+ "dellhm=hr-hm;\n",
+ "#L50=Lf+Lrts+Lms\n",
+ "\n",
+ "# By COST 231 model\n",
+ "Lf=32.4+20*np.log10(d)+20*np.log10(fc);\n",
+ "L0=4-0.114*(phi-55);\n",
+ "Lrts=-16.9-10*math.log10(W)+10*math.log10(fc)+20*math.log10(dellhm)+L0;\n",
+ "Lbsh=-18*math.log10(11);\n",
+ "ka=54-0.8*hb;\n",
+ "dellhb=hb-hr;\n",
+ "kd=18-15*dellhb/dellhm;\n",
+ "kf=4+0.7*(fc/925-1);\n",
+ "Lms=Lbsh+ka+kd*np.log10(d)+kf*np.log10(fc)-9*np.log10(b);\n",
+ "L50=np.array([0, 0, 0, 0, 0])\n",
+ "L50=Lf+Lrts+Lms;\n",
+ "\n",
+ "#Okumura/Hata model\n",
+ "ahm=(1.1*math.log10(fc)-0.7)*hm-(1.56*math.log10(fc)-0.8);\n",
+ "L_50=69.55+26.16*np.log10(fc)+(44.9-6.55*np.log10(hb))*np.log10(d)-13.82*np.log10(hb)-ahm;\n",
+ "L_50 = np.array(L_50)\n",
+ "\n",
+ "#Results\n",
+ "fig,ax1 = plt.subplots()\n",
+ "ax1.plot(d,L_50,'b-')\n",
+ "ax1.set_xlabel('Distance from transmitter(in km)')\n",
+ "ax1.set_ylabel('Path loss (in dB)')\n",
+ "ax2 = ax1.twinx()\n",
+ "ax2.plot(d,L50,'r')\n",
+ "ax1.legend(['COST 231 model'],loc=0)\n",
+ "ax2.legend(['HATA model'],loc=0)\n",
+ "ax1.grid()\n",
+ "plt.show()\n",
+ "print \"L50 values by Cost 231 model\"\n",
+ "print '%.2f %.2f %.2f %.2f %.2f \\n '%(L50[0],L50[1],L50[2],L50[3],L50[4]);\n",
+ "print \"L50 values bu Okumura/Hata model\"\n",
+ "print '%.2f %.2f %.2f %.2f %.2f \\n '%(L_50[0],L_50[1],L_50[2],L_50[3],L_50[4]);\n",
+ "print \"The results from the plot of two models shows that the calculated path loss with the COST 231 model is higher than the value obtained by the Okumura/Hata model.\"\n",
+ "\n",
+ "#Answers vary due to built-in functions of Python used"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0xb55925ac>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "L50 values by Cost 231 model\n",
+ "129.03 140.47 147.16 151.91 155.59 \n",
+ " \n",
+ "L50 values bu Okumura/Hata model\n",
+ "125.13 135.73 141.93 146.34 149.75 \n",
+ " \n",
+ "The results from the plot of two models shows that the calculated path loss with the COST 231 model is higher than the value obtained by the Okumura/Hata model.\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.8, Page 76"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "SNRmin=12;#in dB\n",
+ "n=3; #No of floors\n",
+ "Backgroundnoise=-115; #dBm\n",
+ "pt=100 #in dBm\n",
+ "\n",
+ "#Calculations\n",
+ "pt_db=10*math.log10(pt);\n",
+ "Sr=Backgroundnoise+SNRmin; #receiver sensitivity\n",
+ "Lpmax=pt_db-Sr;\n",
+ "#Refering table 3.4\n",
+ "Lp_d0=38; #ref path loss at the first meter(dB)\n",
+ "Lf=15+4*(n-1); #signal attenuation through n floors\n",
+ "y=3; #path loss exponent\n",
+ "X=10; #Shadowing effect(dB)\n",
+ "d=10**((Lpmax-Lp_d0-Lf-X)/30); #max allowable path loss\n",
+ "\n",
+ "#Result\n",
+ "print 'Coverage radius of an access point = %d m \\n'%(round(d))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Coverage radius of an access point = 54 m \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.9, Page 77"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "SSmean=-100; #signal strength(dBm)\n",
+ "Sr=-110; #receiver sensitivity(dBm)\n",
+ "sd=10; #standard deviation(dB)\n",
+ "\n",
+ "#Calculations\n",
+ "P_Smin=(0.5-0.5*math.erf((Sr-SSmean)/(math.sqrt(2)*sd)));\n",
+ "\n",
+ "#Result\n",
+ "print 'probability of exceeding signal beyond the receiver sensitivity is %.2f \\n'%(P_Smin)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "probability of exceeding signal beyond the receiver sensitivity is 0.84 \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.10, Page 81"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Lp=140; # path losses in dB \n",
+ "k=1.38*10**-23; # Boltzmann\u2019s constant (W/Kelvin-Hz)\n",
+ "k_db=10*math.log10(k);\n",
+ "f=900;#in MHz\n",
+ "Gt=8; #transmitting antenna gain(dB)\n",
+ "Gr=0; #receiver antenna gain(dB)\n",
+ "Ag=24;#gain of receiver ampli\ufb01er in dB \n",
+ "Fmargin=8;#Fade margin(dB)\n",
+ "Nf=6;#Noise figure(dB)\n",
+ "L0=20; #\u0002 other losses in dB\n",
+ "Lf=12; # antenna feed line loss in dB \n",
+ "T=24.6;#Temperature expressed in dB\n",
+ "R=39.8; #\u0002 data rate in dB \n",
+ "M=8; #overall link margin(dB)\n",
+ "Eb_No=10;#dB\n",
+ "\n",
+ "#Calculations\n",
+ "#From equation (3.54)\n",
+ "pt_db=M-Gt-Gr-Ag+ Nf + T+ k_db+ Lp+ Lf+ L0 + Fmargin+ R+ Eb_No;\n",
+ "\n",
+ "Pt=10**(pt_db/10); #dB into normal number\n",
+ "\n",
+ "#Result\n",
+ "print 'Total transmitted power is %d Watts \\n'%Pt"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total transmitted power is 6 Watts \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch4.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch4.ipynb
new file mode 100755
index 00000000..6a6cd416
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch4.ipynb
@@ -0,0 +1,338 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:d1cbcab673c40d252caf601352e39b3f6fb5df10eada02ad15211795afd1b59f"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4: An Overview of Digital Communication and Transmission"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.1, Page 93"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Fm=20; # in KHz\n",
+ "\n",
+ "#Calculations\n",
+ "print \"An Engineering version of the Nyquist sampling rate : fs>=2.2*fm.\"\n",
+ "print 'Therefore sampling rate of >= %d ksps should be used '%(2.2*Fm); \n",
+ "print \"The sampling rate for a compact disc digital audio player = 44.1 ksps and for a studio quality audio player = 48 ksps are used.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "An Engineering version of the Nyquist sampling rate : fs>=2.2*fm.\n",
+ "Therefore sampling rate of >= 44 ksps should be used \n",
+ "The sampling rate for a compact disc digital audio player = 44.1 ksps and for a studio quality audio player = 48 ksps are used.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.2, Page 96"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Rt=1; #Resistance(ohm)\n",
+ "#L= Number of quantization values\n",
+ "L1=32;\n",
+ "L2=64;\n",
+ "L3=128;\n",
+ "L4=256;\n",
+ "\n",
+ "#Calculations\n",
+ "# L=2**R i.e R=math.log2(L);\n",
+ "R1=math.log(L1,2);\n",
+ "R2=math.log(L2,2);\n",
+ "R3=math.log(L3,2);\n",
+ "R4=math.log(L4,2);\n",
+ "\n",
+ "#P=A**2/2; #average power of signal\n",
+ "#sig**2=0.333*A**2*2**(-2*Rt); #Avg quantization noise power\n",
+ "#SNR=P/sig**2;\n",
+ "# SNR(dB)=1.8+ 6R;\n",
+ "\n",
+ "SNR1=1.8+6*R1;\n",
+ "SNR2=1.8+6*R2;\n",
+ "SNR3=1.8+6*R3;\n",
+ "SNR4=1.8+6*R4;\n",
+ "\n",
+ "#Result\n",
+ "print 'For L=32, SNR is %.1f dB\\n '%SNR1\n",
+ "print 'For L=64, SNR is %.1f dB\\n '%SNR2\n",
+ "print 'For L=128, SNR is %.1f dB\\n '%SNR3\n",
+ "print 'For L=256, SNR is %.1f dB\\n '%SNR4"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For L=32, SNR is 31.8 dB\n",
+ " \n",
+ "For L=64, SNR is 37.8 dB\n",
+ " \n",
+ "For L=128, SNR is 43.8 dB\n",
+ " \n",
+ "For L=256, SNR is 49.8 dB\n",
+ " \n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3, Page 99"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Fs=8*10**3; #in Hz\n",
+ "Fm=3.4*10**3; # in Hz\n",
+ "VCH=24; #voice channels\n",
+ "SCH=1; #sunchronization channel\n",
+ "PDur=1; #extra pulse duration in microsec\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Ts=1/(Fs);\n",
+ "TimeCH=Ts/(VCH+SCH)*10**6; # in microsec\n",
+ "print 'Time between the pulses is %d microsec\\n'%(TimeCH-PDur);\n",
+ "#Now by using the engineering version of Nyquist rate sampling\n",
+ "NyquistRate=2.2*Fm;\n",
+ "Ts1_microsec=1/NyquistRate*10**6;\n",
+ "Tc=round(Ts1_microsec)/(VCH+SCH);\n",
+ "print \"Time between the pulses by using engineering version of Nyquist rate sampling is %.2f microsec\\n\"%(Tc-PDur);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Time between the pulses is -1 microsec\n",
+ "\n",
+ "Time between the pulses by using engineering version of Nyquist rate sampling is 4.36 microsec\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.4, Page 101"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Fm=3000; #highest modulating frequency in signal(Hz)\n",
+ "M=32; # number of pulse levels \n",
+ "b=5; #bits per symbol \n",
+ "p=0.01; #Quantization distortion\n",
+ "\n",
+ "#Calculations\n",
+ "#2**R = L >= 1/2P\n",
+ "# where R is the number of bits required to represent quantization levels L\n",
+ "R=math.log10(1./(2*p))/math.log10(2);\n",
+ "Fs=2*Fm; # Nyquist sampling criteria (samples per second)\n",
+ "fs=round(R)*Fs;\n",
+ "Rs=fs/b;\n",
+ "\n",
+ "#Result\n",
+ "print 'The minimum number of bits/sample or bits/PCM word that should be used are %d'%(round(R));\n",
+ "print 'The minimum sampling rate is %d samples per second\\n '%Fs;\n",
+ "print 'The resulting transmission rate is %d bps\\n '%fs;\n",
+ "print 'The PCM pulse or symbol transmission rate is %d symbols/sec\\n'%Rs"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The minimum number of bits/sample or bits/PCM word that should be used are 6\n",
+ "The minimum sampling rate is 6000 samples per second\n",
+ " \n",
+ "The resulting transmission rate is 36000 bps\n",
+ " \n",
+ "The PCM pulse or symbol transmission rate is 7200 symbols/sec\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5, Page 110"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "S_No=53.; #dB-Hz\n",
+ "R=9.6*10**3; #bps\n",
+ "BW=4.8*10**3; #Khz\n",
+ "Pb=10**-5; #BER<=10**-5;\n",
+ "\n",
+ "#Calculations\n",
+ "print \"Since the required data rate of 9.6 kbps is more than the available bandwidth of 4.8 kHz, the channel is bandwidth-limited.\"\n",
+ "Eb_No=S_No-10*math.log10(R); #dB\n",
+ "# Try for 8-PSK modulation scheme\n",
+ "M=8;\n",
+ "Ps=math.log(M,2)*Pb; #Max ps\n",
+ "Es_No=math.log(M,2)*10**(0.1*Eb_No);\n",
+ "#Ps(8)=2*Q(math.sqrt(2*Es_No)*sin(math.pi/8));\n",
+ "#2*Q(math.sqrt(2*Eb_No))=erfc(math.sqrt(Eb_No)); #Refer EQn C(7) from appendix C\n",
+ "\n",
+ "Ps8=math.erfc(math.sqrt(Es_No)*math.sin(math.pi/8));\n",
+ "\n",
+ "#Result\n",
+ "print 'Symbol error rate is given as %.5f \\n '%Ps\n",
+ "print 'The ratio of signal energy to noise is %.2f \\n '%Es_No;\n",
+ "print 'Symbol error rate for 8-PSK is %.5f \\n '%Ps8;\n",
+ "print \"As symbol error rate for 8-PSK modulation is lower than threshold value. so, We can use 8-PSK modulation.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Since the required data rate of 9.6 kbps is more than the available bandwidth of 4.8 kHz, the channel is bandwidth-limited.\n",
+ "Symbol error rate is given as 0.00003 \n",
+ " \n",
+ "The ratio of signal energy to noise is 62.35 \n",
+ " \n",
+ "Symbol error rate for 8-PSK is 0.00002 \n",
+ " \n",
+ "As symbol error rate for 8-PSK modulation is lower than threshold value. so, We can use 8-PSK modulation.\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.6, Page 111"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "SNR=48.; #dB-Hz\n",
+ "BW=45.*10**3; #in Hz\n",
+ "R=9.6*10**3; #bps\n",
+ "Pb=10**-5; #Bit error rate\n",
+ "e=2.71828; #Natural exponent e\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print \"since the available bandwidth of 45 kHz is more than adequate to support the required data rate of 9.6 kbps.\";\n",
+ "print \"So, the channel is not bandwidth limited \";\n",
+ "Eb_No=SNR-10*math.log10(R);\n",
+ "#We try the 16-FSK modulation scheme\n",
+ "M=16;\n",
+ "\n",
+ "Es_No=math.log(M,2)*Eb_No;\n",
+ "Ps=(M-1)/2*e**(-Es_No/2);\n",
+ "#For orthogonal signalling\n",
+ "Ps16=(2**M-1)/(2**(M-1))*Pb;\n",
+ "print \"\"\n",
+ "print 'The maximum symbol error probability is %0.5f \\n '%Ps16\n",
+ "print 'The symbol error probability achieved by 16-PSK is %.9f \\n '%Ps;\n",
+ "print \"As achieved symbol error probability is far less than maximum tolerable value\";\n",
+ "print \"So, we can meet the given speci\ufb01cations for this power-limited channel with a 16-FSK modulation scheme without any error-correction coding\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "since the available bandwidth of 45 kHz is more than adequate to support the required data rate of 9.6 kbps.\n",
+ "So, the channel is not bandwidth limited \n",
+ "\n",
+ "The maximum symbol error probability is 0.00001 \n",
+ " \n",
+ "The symbol error probability achieved by 16-PSK is 0.000000553 \n",
+ " \n",
+ "As achieved symbol error probability is far less than maximum tolerable value\n",
+ "So, we can meet the given speci\ufb01cations for this power-limited channel with a 16-FSK modulation scheme without any error-correction coding\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch5.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch5.ipynb
new file mode 100755
index 00000000..153ee7fb
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch5.ipynb
@@ -0,0 +1,416 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:98db718d0bf89da2e915ec31624499d68101b659175b122291fbf41d86cde068"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5: Fundamentals of Cellular Communications"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.1, Page 130"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "ToCH=960.;# Total available channels\n",
+ "Cellarea=6.; #in km^2\n",
+ "Covarea=2000.;#in km^2\n",
+ "N1=4.; # Cluster Size\n",
+ "N2=7.; #Cluster Size\n",
+ "\n",
+ "#Calculations\n",
+ "Area1=N1*Cellarea;#for N=4\n",
+ "Area2=N2*Cellarea;#For N=7\n",
+ "No_of_clusters1=round(Covarea/Area1);\n",
+ "No_of_clusters2=round(Covarea/Area2);\n",
+ "No_of_CH1=ToCH/N1; # No of channels with cluster size 4\n",
+ "No_of_CH2=ToCH/N2; # No of channels with cluster size 7\n",
+ "SysCap1=No_of_clusters1*ToCH;\n",
+ "SysCap2=No_of_clusters2*ToCH;\n",
+ "\n",
+ "#Results\n",
+ "print 'System Capacity with cluster size 4 is %d channels'%SysCap1\n",
+ "print 'Number of clusters for covering total area with N equals 4 are %d'%No_of_clusters1\n",
+ "print 'System Capacity with cluster size 7 is %d channels'%SysCap2\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "System Capacity with cluster size 4 is 79680 channels\n",
+ "Number of clusters for covering total area with N equals 4 are 83\n",
+ "System Capacity with cluster size 7 is 46080 channels\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.2, Page 132"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "S_IAMP=18.;# S/I ratio in dB\n",
+ "S_IGSM=12.;# S/I ratio in dB\n",
+ "PPL=4.; # propogation path loss coefficient\n",
+ "\n",
+ "#Calculations\n",
+ "# Using Equation 5.16 on page no 132, we get\n",
+ "N_AMP=(1./3)*((6*10**(0.1*S_IAMP))**(2/PPL));#reuse factor for AMPS\n",
+ " \n",
+ "N_GSM=(1./3)*((6*10**(0.1*S_IGSM))**(2/PPL));#reuse factor for GSM\n",
+ "\n",
+ "\n",
+ "#Result\n",
+ "print 'Reuse Factor for AMP system is N = %.3f = approx %d \\n'%(N_AMP,N_AMP+1);\n",
+ "print 'Reuse Factor for GSM system is N = %.3f = approx %d \\n'%(N_GSM,N_GSM+1);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Reuse Factor for AMP system is N = 6.486 = approx 7 \n",
+ "\n",
+ "Reuse Factor for GSM system is N = 3.251 = approx 4 \n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.3, Page 132"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "VCH=395.;#Total voice channels\n",
+ "CallHT=120.;#average call holding time in sec\n",
+ "Blocking=0.02;# 2%\n",
+ "PPL=4.; #propogation path loss coefficient\n",
+ "N1=4. #reuse factor\n",
+ "N2=7.; #reuse factor\n",
+ "N3=12.; #reuse factor\n",
+ "\n",
+ "#Calculations&Results\n",
+ "No_of_VCH1=VCH/N1; #for reuse factor N1\n",
+ "No_of_VCH2=VCH/N2; #for reuse factor N2\n",
+ "No_of_VCH3=VCH/N3; #for reuse factor N3\n",
+ "print 'NO of voice channels for N=4 are %d'%(round(No_of_VCH1));\n",
+ "print 'NO of voice channels for N=7 are %d'%(round(No_of_VCH2));\n",
+ "print 'NO of voice channels for N=12 are %d\\n'%(round(No_of_VCH3));\n",
+ "TrafLoad1=87.004;\n",
+ "Carryload1=(1-Blocking)*TrafLoad1;\n",
+ "TrafLoad2=45.877;\n",
+ "Carryload2=(1-Blocking)*TrafLoad2;\n",
+ "TrafLoad3=24.629;\n",
+ "Carryload3=(1-Blocking)*TrafLoad3;\n",
+ "# To find cell capacity\n",
+ "Ncall1=Carryload1*3600/CallHT;#Calls per hour per cell \n",
+ "Ncall2=Carryload2*3600/CallHT;\n",
+ "Ncall3=Carryload3*3600/CallHT;\n",
+ "print 'calls per hour per cell for N=4 are %d'%(round(Ncall1));\n",
+ "print 'calls per hour per cell for N=7 are %d'%(round(Ncall2));\n",
+ "print 'calls per hour per cell for N=12 are %d \\n'%(Ncall3);\n",
+ "# To find S BY I\n",
+ "# N=(1/3)[6*(S/I)]**(2/PPL)\n",
+ "S_I1=10*(PPL/2)*(math.log10(N1)-math.log10(1./3)-(2./PPL)*math.log10(6));#Mean S/I (dB)\n",
+ "\n",
+ "S_I2=10*(PPL/2)*(math.log10(N2)-math.log10(1./3)-(2./PPL)*math.log10(6));\n",
+ "S_I3=10*(PPL/2)*(math.log10(N3)-math.log10(1./3)-(2./PPL)*math.log10(6));\n",
+ "\n",
+ "print 'Mean S/I(dB) for N=4 is %.1f'%S_I1\n",
+ "print 'Mean S/I(dB) for N=7 is %.1f'%S_I2\n",
+ "print 'Mean S/I(dB) for N=12 is %.1f'%S_I3"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "NO of voice channels for N=4 are 99\n",
+ "NO of voice channels for N=7 are 56\n",
+ "NO of voice channels for N=12 are 33\n",
+ "\n",
+ "calls per hour per cell for N=4 are 2558\n",
+ "calls per hour per cell for N=7 are 1349\n",
+ "calls per hour per cell for N=12 are 724 \n",
+ "\n",
+ "Mean S/I(dB) for N=4 is 13.8\n",
+ "Mean S/I(dB) for N=7 is 18.7\n",
+ "Mean S/I(dB) for N=12 is 23.3\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.4, Page 154"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "spectrum=12.5*10**6; #in Hz\n",
+ "CHBW=200*10**3;#in Hz\n",
+ "N=4.;#reuse factor\n",
+ "Blocking=0.02; # 2%\n",
+ "callHT=120.;#average call holding time in sec\n",
+ "PPL=4.;#propogation path loss coefficient\n",
+ "CntrlCH=3.; #No of control channels\n",
+ "Ts=8.; # No of voice channels per RF channel\n",
+ "\n",
+ "#Calculations&Results\n",
+ "No_ofVCH=((spectrum*Ts)/(CHBW*N))-CntrlCH;\n",
+ "print 'No of voice channels for N=4 are %d'%(No_ofVCH)\n",
+ "TrafLoad=110.;\n",
+ "CarryLoad=(1-Blocking)*TrafLoad;\n",
+ "Ncall=CarryLoad*3600/callHT;\n",
+ "print 'Calls per hour per cell for N=4 are %d calls/hour/cell \\n '%(round(Ncall));\n",
+ "S_I=10*(PPL/2)*(math.log10(N)-math.log10(1./3)-(2./PPL)*math.log10(6));\n",
+ "print 'Mean S/I(dB) for N=4 is %.1f dB \\n '%(S_I)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "No of voice channels for N=4 are 122\n",
+ "Calls per hour per cell for N=4 are 3234 calls/hour/cell \n",
+ " \n",
+ "Mean S/I(dB) for N=4 is 13.8 dB \n",
+ " \n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.5, Page 139"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "VCH=395.;#Total allocated voice channels\n",
+ "CHBW=30.; # in kHz\n",
+ "Spectrum=12.5; # in MHz\n",
+ "CallHT=120.; #Average call holding time in sec\n",
+ "Blocking=0.02; # 2%\n",
+ "PL=40.; #slope of path loss in dBperdecade\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print \"We consider only the \ufb01rst tier interferers and neglect the effects of cochannel interference from the second and other higher tiers.\"\n",
+ "#FOR 120degree sectorization\n",
+ "#N=4\n",
+ "VCH11=(VCH/(4*3));\n",
+ "OffLoad11=24.629; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site11=3*OffLoad11;\n",
+ "CarLoad11=(1-Blocking)*Load_site11;\n",
+ "Calls_hr_site11=CarLoad11*3600/CallHT;\n",
+ "R11=math.sqrt(CarLoad11/0.52);\n",
+ "Seff11=CarLoad11/(2.6*Spectrum*R11**2);\n",
+ "S_I11=PL*math.log10(math.sqrt(3*4))-10*math.log10(2);\n",
+ "#N=7\n",
+ "VCH12=(VCH/(3*7));\n",
+ "OffLoad12=12.341; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site12=3*OffLoad12;\n",
+ "CarLoad12=(1-Blocking)*Load_site12;\n",
+ "Calls_hr_site12=CarLoad12*3600/CallHT;\n",
+ "R12=math.sqrt(CarLoad12/0.52);\n",
+ "Seff12=CarLoad12/(2.6*Spectrum*R12**2);\n",
+ "S_I12=PL*math.log10(math.sqrt(3*7))-10*math.log10(2);\n",
+ "#N=12\n",
+ "VCH13=VCH/(3*12);\n",
+ "OffLoad13=5.842; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site13=3*OffLoad13;\n",
+ "CarLoad13=(1-Blocking)*Load_site13;\n",
+ "Calls_hr_site13=CarLoad13*3600/CallHT;\n",
+ "R13=math.sqrt(CarLoad13/0.52);\n",
+ "Seff13=CarLoad13/(2.6*Spectrum*R13**2);\n",
+ "S_I13=PL*math.log10(math.sqrt(3*12))-10*math.log10(2);\n",
+ "#For omnidirectional \n",
+ "#N=4\n",
+ "VCH21=VCH/(4);\n",
+ "OffLoad21=87.004; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site21=OffLoad21;\n",
+ "CarLoad21=(1-Blocking)*Load_site21;\n",
+ "Calls_hr_site21=CarLoad21*3600/CallHT;\n",
+ "R21=math.sqrt(CarLoad21/0.52);\n",
+ "Seff21=CarLoad21/(2.6*Spectrum*R21**2);\n",
+ "S_I21=PL*math.log10(math.sqrt(3*4))-10*math.log10(6);\n",
+ "#N=7\n",
+ "VCH22=VCH/(7);\n",
+ "OffLoad22=46.817; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site22=OffLoad22;\n",
+ "CarLoad22=(1-Blocking)*Load_site22;\n",
+ "Calls_hr_site22=CarLoad22*3600/CallHT;\n",
+ "R22=math.sqrt(CarLoad22/0.52);\n",
+ "Seff22=CarLoad22/(2.6*Spectrum*R22**2);\n",
+ "S_I22=PL*math.log10(math.sqrt(3*7))-10*math.log10(6);\n",
+ "#N=12\n",
+ "VCH23=VCH/(12);\n",
+ "OffLoad23=24.629; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site23=OffLoad23;\n",
+ "CarLoad23=(1-Blocking)*Load_site23;\n",
+ "Calls_hr_site23=CarLoad23*3600/CallHT;\n",
+ "R23=math.sqrt(CarLoad23/0.52);\n",
+ "Seff23=CarLoad23/(2.6*Spectrum*R23**2);\n",
+ "S_I23=PL*math.log10(math.sqrt(3*12))-10*math.log10(6);\n",
+ "# For 60degree Sectorization\n",
+ "#N=3\n",
+ "VCH31=VCH/(6*3);\n",
+ "OffLoad31=14.902; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site31=6*OffLoad31;\n",
+ "CarLoad31=(1-Blocking)*Load_site31;\n",
+ "Calls_hr_site31=CarLoad31*3600/CallHT;\n",
+ "R31=math.sqrt(CarLoad31/0.52);\n",
+ "Seff31=CarLoad31/(2.6*Spectrum*R31**2);\n",
+ "S_I31=PL*math.log10(math.sqrt(3*3))-10*math.log10(1);\n",
+ "#N=4\n",
+ "VCH32=VCH/(6*4);\n",
+ "OffLoad32=10.656; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site32=6*OffLoad32;\n",
+ "CarLoad32=(1-Blocking)*Load_site32;\n",
+ "Calls_hr_site32=CarLoad32*3600/CallHT;\n",
+ "R32=math.sqrt(CarLoad32/0.52);\n",
+ "Seff32=CarLoad32/(2.6*Spectrum*R32**2);\n",
+ "S_I32=PL*math.log10(math.sqrt(3*4))-10*math.log10(1);\n",
+ "#N=7\n",
+ "VCH33=VCH/(6*7);\n",
+ "OffLoad33=5.084; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site33=6*OffLoad33;\n",
+ "CarLoad33=(1-Blocking)*Load_site33;\n",
+ "Calls_hr_site33=CarLoad33*3600/CallHT;\n",
+ "R33=math.sqrt(CarLoad33/0.52);\n",
+ "Seff33=CarLoad33/(2.6*Spectrum*R33**2);\n",
+ "S_I33=PL*math.log10(math.sqrt(3*7))-10*math.log10(1);\n",
+ "#N=12\n",
+ "VCH34=VCH/(6*12);\n",
+ "OffLoad34=2.227; # Offered traf\ufb01c load per sector from Erlang-B table(Appendix A)\n",
+ "Load_site34=6*OffLoad34;\n",
+ "CarLoad34=(1-Blocking)*Load_site34;\n",
+ "Calls_hr_site34=CarLoad34*3600/CallHT;\n",
+ "R34=math.sqrt(CarLoad34/0.52);\n",
+ "Seff34=CarLoad34/(2.6*Spectrum*R34**2);\n",
+ "S_I34=PL*math.log10(math.sqrt(3.*12))-10*math.log10(1);\n",
+ "\n",
+ "print 'For Omnidirectional Calls_per_hour_per_cellsite Mean S_I ratio SpecrtalEfficiency'\n",
+ "print 'For N=4 %d %.1f %.3f\\n'%(Calls_hr_site21,S_I21,Seff21);\n",
+ "print 'For N=7 %d %.1f %.3f\\n'%(Calls_hr_site22,S_I22,Seff22);\n",
+ "print 'For N=12 %d %.1f %.3f\\n'%(Calls_hr_site23,S_I23,Seff23);\n",
+ "\n",
+ "print 'For 120deg sector Calls_per_hour_per_cellsite Mean S_I ratio SpecrtalEfficiency\\n'\n",
+ "print 'For N=4 %d %.1f %.3f\\n'%(Calls_hr_site11,S_I11,Seff11);\n",
+ "print 'For N=7 %d %.1f %.3f\\n'%(Calls_hr_site12,S_I12,Seff12);\n",
+ "print 'For N=12 %d %.1f %.3f\\n'%(Calls_hr_site13,S_I13,Seff13);\n",
+ "\n",
+ "print 'For 60 deg Sector Calls_per_hour_per_cellsite Mean S_I ratio SpecrtalEfficiency\\n'\n",
+ "print 'For N=3 %d %.1f %.3f\\n'%(Calls_hr_site31,S_I31,Seff31);\n",
+ "print 'For N=4 %d %.1f %.3f\\n'%(Calls_hr_site32,S_I32,Seff32);\n",
+ "print 'For N=7 %d %.1f %.3f\\n'%(Calls_hr_site33,S_I33,Seff33);\n",
+ "print 'For N=12 %d %.1f %.3f\\n'%(Calls_hr_site34,S_I34,Seff34);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "We consider only the \ufb01rst tier interferers and neglect the effects of cochannel interference from the second and other higher tiers.\n",
+ "For Omnidirectional Calls_per_hour_per_cellsite Mean S_I ratio SpecrtalEfficiency\n",
+ "For N=4 2557 13.8 0.016\n",
+ "\n",
+ "For N=7 1376 18.7 0.016\n",
+ "\n",
+ "For N=12 724 23.3 0.016\n",
+ "\n",
+ "For 120deg sector Calls_per_hour_per_cellsite Mean S_I ratio SpecrtalEfficiency\n",
+ "\n",
+ "For N=4 2172 18.6 0.016\n",
+ "\n",
+ "For N=7 1088 23.4 0.016\n",
+ "\n",
+ "For N=12 515 28.1 0.016\n",
+ "\n",
+ "For 60 deg Sector Calls_per_hour_per_cellsite Mean S_I ratio SpecrtalEfficiency\n",
+ "\n",
+ "For N=3 2628 19.1 0.016\n",
+ "\n",
+ "For N=4 1879 21.6 0.016\n",
+ "\n",
+ "For N=7 896 26.4 0.016\n",
+ "\n",
+ "For N=12 392 31.1 0.016\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch6.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch6.ipynb
new file mode 100755
index 00000000..7c64b872
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch6.ipynb
@@ -0,0 +1,466 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:0b8e52617510df277ef1e48e119f37ff192613df767b6d3b9de6242855aa9cf9"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6: Multiple Access Techniques"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.1, Page 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Area=8; #in km^2\n",
+ "Cover=4000.;# in km^2\n",
+ "CallBH=1.2; #Avg calls during BH\n",
+ "HT=100; # Avg holding time in sec\n",
+ "Block=0.02; #Blocking=2%\n",
+ "N=4.;#Frequency reuse factor\n",
+ "Spectrum=12.5;# in MHz\n",
+ "CHBW=200;# in kHz\n",
+ "User_CH=8;#No of users per RF channel\n",
+ "\n",
+ "#Calculations&Results\n",
+ "RFCH=Spectrum*1000/CHBW;\n",
+ "TCH=int(RFCH)*User_CH;\n",
+ "SigCH=3;#No of signalling channels per cell\n",
+ "TCH_cell=TCH/N-SigCH;\n",
+ "Cells=Cover/Area;\n",
+ "OffLoad=108.4; # in Erlangs\n",
+ "print 'Using Erlang-B Tables, Total traffic offered by %d channels at 0.02 blocking = %.1f Erlangs/cell'%(TCH_cell,OffLoad*(1-Block));\n",
+ "CarLoad=OffLoad*(1-Block);\n",
+ "Calls_hr_cell=CarLoad*3600/HT;\n",
+ "MaxUser_hr_cell=Calls_hr_cell/CallBH;\n",
+ "Seff=CarLoad*Cells/(Spectrum*Cover);\n",
+ "print 'Spectral Efficiency is %.2f Erlangs/MHz/km^2'%Seff;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Using Erlang-B Tables, Total traffic offered by 121 channels at 0.02 blocking = 106.2 Erlangs/cell\n",
+ "Spectral Efficiency is 1.06 Erlangs/MHz/km^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2, Page 159"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "TCH=395; # Traffic Channels\n",
+ "SysBW=12.5; #in MHz\n",
+ "CHspace=30.; # in kHz\n",
+ "\n",
+ "#Calculations\n",
+ "Eff=TCH*CHspace/(SysBW*1000);\n",
+ "\n",
+ "#Result\n",
+ "print 'Multiple access spectral efficiency of FDMA System is %.3f'%Eff"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Multiple access spectral efficiency of FDMA System is 0.948\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.3, Page 160"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Tf=40; #Frame duration in msec\n",
+ "Mt=6; # Frames per slot\n",
+ "Bu=30; #bandwidth(KHz) of an individual user during his or her time slot\n",
+ "Nu=395.;# number of users sharing the same time slot in the system, but having access to different frequency sub-bands\n",
+ "Bw=12.5; # in MHz\n",
+ "DR=16.2;#Data rate in kbps\n",
+ "FDur=40.; # Frame duration in msec\n",
+ "slots=6; #No of slots per time frame\n",
+ "IndiRate=16.2; #Individual data rate in kbps\n",
+ "Srate=13.; #Speech rate in kbps\n",
+ "\n",
+ "#Calculations\n",
+ "TimeSlot=(Srate/IndiRate)*(FDur/slots);\n",
+ "Seff=TimeSlot*slots*Bu*Nu/(FDur*Bw*1000);\n",
+ "\n",
+ "#Results\n",
+ "print 'Multiple access spectral efficiency of TDMA is %.2f'%Seff;\n",
+ "print 'The overhead portion of the frame is %d percent'%((1-Seff)*100);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Multiple access spectral efficiency of TDMA is 0.76\n",
+ "The overhead portion of the frame is 23 percent\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.4, Page 161"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "nb=0.9; #BW efficiency factor\n",
+ "u=2; # Bit Efficiency with QPSK\n",
+ "Vf=1; # Voice activity factor\n",
+ "BW=12.5; #in MHz\n",
+ "IR=16.2; # in kbps\n",
+ "N=19; #frequency reuse factor\n",
+ "\n",
+ "#Calculations\n",
+ "Nu=nb*u*BW*1000/(Vf*IR*N);# number of channels (mobile users) per cell\n",
+ "Seff=int(Nu)*IR/(BW*1000);\n",
+ "\n",
+ "#Results\n",
+ "print 'Capacity of system is %d mobile users per cell'%Nu;\n",
+ "print 'Spectral efficiency of TDMA system is %.3f bit/sec/Hz'%Seff"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Capacity of system is 73 mobile users per cell\n",
+ "Spectral efficiency of TDMA system is 0.095 bit/sec/Hz\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.5, Page 163"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Nr=2.;# number of reference bursts per frame\n",
+ "Nt=24; # number of traf\ufb01c bursts (slots) per frame(120msec)\n",
+ "FL=120; #Frame length in msec\n",
+ "Br=148; # number of overhead bits per reference burst\n",
+ "Bp=34; # number of overhead bits per preamble per slot \n",
+ "Bg=8.25;#number of equivalent bits in each guard time interval \n",
+ "Tf=120; # frame duration in msec\n",
+ "Rrf=270.83333333; # bit rate of the RF channel in kbps\n",
+ "R=22.8; #bit rate of each channel in kbps\n",
+ "\n",
+ "#Calculations\n",
+ "B0=Nr*(8*Br)+Nt*(8*Bp)+(Nt+Nr)*(8*Bg);#The number of overhead bits per frame\n",
+ "Bt=FL*10**-3*Rrf*10**3;#The total number of bits per frame \n",
+ "Eff=(1-B0/Bt)*100;\n",
+ "CH_Frame=(Eff/100)*Rrf/R;#No of channels/frame\n",
+ "\n",
+ "#Results\n",
+ "print 'The frame efficiency is %.2f percent'%Eff;\n",
+ "print 'Number of channels/frame are %d'%(CH_Frame)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The frame efficiency is 67.35 percent\n",
+ "Number of channels/frame are 7\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.6, Page 170"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "nb=0.9;#bandwidth ef\ufb01ciency\n",
+ "nf=0.45;#frequency reuse ef\ufb01ciency \n",
+ "Cd=0.8; #capacity degradation factor \n",
+ "Vf=0.4;#voice activity factor \n",
+ "Eb_I0=7; # desired energy-to-interference ratio in dB\n",
+ "L=1;# ef\ufb01ciency of sector-antenna in cell \n",
+ "BW=12.5;#One way system BW in MHz\n",
+ "R=16.2;#Information rate in kbps\n",
+ "\n",
+ "#Calculations\n",
+ "Eb_I=10**(Eb_I0*0.1);#To convert from dB to a normal value\n",
+ "Nu=(nf*nb*Cd*L/Vf)*(BW*1000/(Eb_I*R));#Capacity of system\n",
+ "Seff=round(Nu)*R/(12.5*10**3);\n",
+ "\n",
+ "#Results\n",
+ "print 'Capacity of system is %d mobile users per cell'%round(Nu);\n",
+ "print 'Spectral efficiency of TDMA system is %.3f bits/sec/Hz'%Seff;\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Capacity of system is 125 mobile users per cell\n",
+ "Spectral efficiency of TDMA system is 0.162 bits/sec/Hz\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.7, Page 171"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "#Given Data from Exa 6.4 and Exa 6.6\n",
+ "Cd=0.8; #capacity degradation factor\n",
+ "R=16.2;#Data rate in kbps\n",
+ "Eb_I0=7; #in dB\n",
+ "Eb_I=10**(Eb_I0*0.1);#To convert from dB to a normal value\n",
+ "Vf=0.4;#voice activity factor \n",
+ "u=2; # Bit Efficiency\n",
+ "IR=16.2; # in kbps\n",
+ "N=19; #frequency reuse factor\n",
+ "nf=0.45;#frequency reuse ef\ufb01ciency \n",
+ "\n",
+ "#Calculations\n",
+ "Ncdma_by_Ntdma=Cd*N*nf*IR/(Eb_I*Vf*u*R);\n",
+ "\n",
+ "#Result\n",
+ "print 'The ratio of capacity of DS-CDMA to TDMA is %.3f'%Ncdma_by_Ntdma"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The ratio of capacity of DS-CDMA to TDMA is 1.706\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.8, Page 172"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Bss=600; #Hopping bandwidth in MHz\n",
+ "stepsize=400; # in Hz\n",
+ "\n",
+ "#Calculations\n",
+ "No_of_Tones=Bss*10**6/stepsize;\n",
+ "Min_chips_required=math.log(No_of_Tones,2);\n",
+ "\n",
+ "#Result\n",
+ "print 'Minimum number of chips required are %d chips'%Min_chips_required"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Minimum number of chips required are 20 chips\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.9, Page 179"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "e=2.71828; #Euler's number\n",
+ "Tprop=0.4; #Max propogation delay in sec\n",
+ "R=10; #data rate in Mbps\n",
+ "PackLen=400; #packet length in bits\n",
+ "\n",
+ "#Calculations\n",
+ "Tp=PackLen/R; #packet transmission time in microsec\n",
+ "a=Tprop/Tp;\n",
+ "G=Tp*10**-6*R*10**6/PackLen;#normalized offered traf\ufb01c load \n",
+ "#Slotted nonpersistent\n",
+ "S0=a*G*e**(-a*G)/(1-e**(-a*G)+a);#normalized throughput \n",
+ "#Unslotted nonpersistent\n",
+ "S1=G*e**(-a*G)/(1+(2*a)+e**(-a*G));#normalized throughput \n",
+ "#Slotted 1-persistent\n",
+ "S2=G*e**(-G*(1+a))*(1+a-e**(-a*G))/((1+a)*(1-e**(-a*G))+a*e**(-G*(1+a)));#normalized throughput \n",
+ "\n",
+ "#Results\n",
+ "print 'The Normalized throughput with an unslotted non persistent,a slotted persistent and a slotted 1-persistent CSMA protocol are \\n %.3f,%.3f and %.3f respectively'%(S0,S1,S2);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Normalized throughput with an unslotted non persistent,a slotted persistent and a slotted 1-persistent CSMA protocol are \n",
+ " 0.496,0.493 and 0.531 respectively\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.10, Page 188"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "Tprop=4; #maximum propogation delay in sec\n",
+ "R=10; # data rate in Mbps\n",
+ "PackLen=400.; #data packet length in bits\n",
+ "ACK=20; #length of ACK packet in bits\n",
+ "Tproc=1; #processing time(sec)\n",
+ "p=0.01;#probability that a data packet or its ACK can be corrupted during transmission\n",
+ "\n",
+ "#Calculations\n",
+ "Tp=PackLen/R; #packet transmission time in microsec\n",
+ "Ta=ACK/R; # transmission time for an ACK in microsec\n",
+ "T=Tp+2*Tprop+2*Tproc+Ta;# total time for transmission time \n",
+ "# Stop and wait ARQ\n",
+ "Eff0=(1-p)*Tp/((1-p)*T+p*Tp);\n",
+ "#SRP with window size W=8\n",
+ "W=8;\n",
+ "Eff1=(2+p*(W-1))/(2+p*(3*W-1));\n",
+ "#Go-Back-N protocol with window size W=8\n",
+ "Eff2=1./(1+W*(p/(1-p)));\n",
+ "\n",
+ "#Results\n",
+ "print 'The data link protocol efficiency with Stop and Wait protocol, SRP and GBN are \\n %.3f, %.3f abd %.3f respectively'%(Eff0,Eff1,Eff2);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The data link protocol efficiency with Stop and Wait protocol, SRP and GBN are \n",
+ " 0.763, 0.928 abd 0.925 respectively\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch8.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch8.ipynb
new file mode 100755
index 00000000..ccf24614
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch8.ipynb
@@ -0,0 +1,178 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:f50ddd5f96951e3a4bd117adfc40133b15c129b8f04d9b391396a08431c3aae2"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 8: Speech Coding and Channel Coding"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.1, Page 227"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pdiff=-3.; #in dB\n",
+ "AMR1=12.2; #in kbps\n",
+ "AMR2=7.95; #in kbps\n",
+ "AMR3=4.75; #in kbps\n",
+ "\n",
+ "#Calculations\n",
+ "#CG(dB)=10math.log{(DPDCH(kbps)+DPCCH)/(DPDCH(AMR bit rate (kbps))+ DPCCH)}\n",
+ "CG1=10*math.log10((AMR1+AMR1*10**(Pdiff/10))/(AMR2+AMR1*10**(Pdiff/10)));\n",
+ "CG2=10*math.log10((AMR1+AMR1*10**(Pdiff/10))/(AMR3+AMR1*10**(Pdiff/10)));\n",
+ "\n",
+ "#Results\n",
+ "print 'By reducing the AMR bit rate from 12.2 to 7.95 kbps coverage gain becomes %.2f dB'%CG1;\n",
+ "print 'By reducing the AMR bit rate from 7.95 to 4.75 kbps coverage gain becomes %.2f dB'%CG2;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "By reducing the AMR bit rate from 12.2 to 7.95 kbps coverage gain becomes 1.15 dB\n",
+ "By reducing the AMR bit rate from 7.95 to 4.75 kbps coverage gain becomes 2.27 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.2, Page 239"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import numpy as np\n",
+ "import sympy\n",
+ "from sympy import symbols\n",
+ "\n",
+ "#Variable declaration\n",
+ "K=4; #constraint length\n",
+ "r=1./2; #code rate(n/k)\n",
+ "x=symbols('x');#Defining x as a ploynomial variable\n",
+ "G1=1+x**2+x**3;\n",
+ "G2=1+x+x**2+x**3;\n",
+ "ins=np.array([1, 0, 1, 1, 1]);#input(first bit first)\n",
+ "\n",
+ "#Calculations&Results\n",
+ "#with reference to Fig 8.9 on page no 239\n",
+ "g1=np.array([1, 0, 1, 1]); #converting from G1 polynomial to bit form\n",
+ "g2=[1, 1, 1, 1];##converting from G2 polynomial to bit form\n",
+ "x1=np.convolve(g1,ins)\n",
+ "x2=np.convolve(g2,ins)\n",
+ "V1=x1%2;\n",
+ "V2=x2%2;\n",
+ "print \"Multiplexing the V1 and V2 to get required output sequence as\"\n",
+ "a=5;\n",
+ "for i in range(0,6):\n",
+ " print '%d%d'%(V2[a],V1[a]);\n",
+ " a=a-1;\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Multiplexing the V1 and V2 to get required output sequence as\n",
+ "10\n",
+ "10\n",
+ "10\n",
+ "00\n",
+ "10\n",
+ "11\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 8.3, Page 246"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import numpy as np\n",
+ "\n",
+ "#Variable declaration\n",
+ "BitStream=np.array([0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1]);#Last bit to first bit\n",
+ "\n",
+ "# Interleaver\n",
+ "Input1=[[1, 0, 0, 0],[1,0,0,0],[1,1,1,0],[0,0,0,0]] #Writing data row wise\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print \"GIven Bit stream is\",BitStream\n",
+ "print \"Input to interleaver is\",Input1\n",
+ "\n",
+ "Output1=np.array([0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1]); # Reading data column wise\n",
+ "print \"Output of interleaver is\",Output1\n",
+ "#De-interleaver\n",
+ "Input2=[[1, 1, 1, 0],[0,0,1,0],[0,0,1,0],[0,0,0,0]] #Writing o/p data row wise\n",
+ " # Let From 6th to 9th bits have Burst Error \n",
+ "print \"Input to de-interleaver is\",Input2\n",
+ " #Output of deinterleaver\n",
+ " \n",
+ "Output2= [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1]; \n",
+ "print \"Output of de-interleaver is\",Output2\n",
+ "print \"Bits with Burst error were from 6th to 9th. But in output of de-interleaver, they relocated to positions 3rd, 6th, 10th and 14th.\";"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "GIven Bit stream is [0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1]\n",
+ "Input to interleaver is [[1, 0, 0, 0], [1, 0, 0, 0], [1, 1, 1, 0], [0, 0, 0, 0]]\n",
+ "Output of interleaver is [0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1]\n",
+ "Input to de-interleaver is [[1, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 0]]\n",
+ "Output of de-interleaver is [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1]\n",
+ "Bits with Burst error were from 6th to 9th. But in output of de-interleaver, they relocated to positions 3rd, 6th, 10th and 14th.\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/ch9.ipynb b/Wireless_Communications_and_Networking_by_V._Garg/ch9.ipynb
new file mode 100755
index 00000000..7efd7e54
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/ch9.ipynb
@@ -0,0 +1,478 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:4f7509b378d9baa23589f40ce770175499b6cadfd03b87969971e1834bcae9ad"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9: Modulation Schemes"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.1, Page 259"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "import scipy\n",
+ "from scipy.optimize import fsolve\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pe=10**-6;#Probability of error\n",
+ "e=2.71828; #Euler's Number\n",
+ "\n",
+ "#Calculations\n",
+ "# For BPSK\n",
+ "#Pe(=10**-6)=e**(-x)/(2*sqrt(%pi*x)); where x=Eb/No\n",
+ "def f(x):\n",
+ " y=2.71828**(-x)/(2*math.sqrt(math.pi*x))-10**-6\n",
+ " return y\n",
+ "x = fsolve(f,0.1);\n",
+ "\n",
+ "#Results\n",
+ "print 'Eb/No For BPSK is %.2f dB'%(10*math.log10(x));\n",
+ "print 'FSK requires 3 dB more in terms of Eb/N0 to give the same Pe as BPSK so it comes out to be %.2f dB'%(10*math.log10(x)+3);"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Eb/No For BPSK is 10.54 dB\n",
+ "FSK requires 3 dB more in terms of Eb/N0 to give the same Pe as BPSK so it comes out to be 13.54 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.2, Page 259"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pe=10.**-6;#Probability of error\n",
+ "No=10.**-10; # PSD in W/Hz\n",
+ "R=100*10**3; #data rate in bps\n",
+ "\n",
+ "#Calculations\n",
+ "#From Example 9.1, Eb/N0= 10.54dB (11.32) for Pe=10**-6 \n",
+ "#Therefore\n",
+ "Eb_No=11.32; #From Exa. 9.1\n",
+ "# Eb/No = A**2/(2*No*R);\n",
+ "A=math.sqrt(2*No*(Eb_No)*R);\n",
+ "\n",
+ "#Result\n",
+ "print 'Amplitude of a carrier signal is %.3f mV'%(A*1000);\n",
+ "#Incorrect answer in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Amplitude of a carrier signal is 15.047 mV\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3, Page 267"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "B=['00','10','01','11','01','00','11','10','10','01','01','00'];#Given Bit stream\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print \"Phase transition table for pi/4-DQPSK Modulation is given as \"\n",
+ "print \" By Referring Table 9.1 on page No 266 i.e\"\n",
+ "print \"Symbol Phase transition\"\n",
+ "print \"00 => 45\u00b0\"\n",
+ "print \"01 => 135\u00b0\"\n",
+ "print \"10 => -45\u00b0\"\n",
+ "print \"11 => -135\u00b0\"\n",
+ "print \"sym Dell phi(k) Phi(k)\"\n",
+ "#BitStream='001001110100111010010100';\n",
+ "\n",
+ "phase=0; #Taking initial phase as zero\n",
+ "for i in range(0,12):\n",
+ " if(B[i]=='00'):\n",
+ " phase=phase+45; \n",
+ " print ' %s 45 %d'%(B[i],phase);\n",
+ " \n",
+ " if(B[i]=='01'):\n",
+ " phase=phase+135;\n",
+ " print ' %s 135 %d'%(B[i],phase);\n",
+ " \n",
+ " if(B[i]=='10'):\n",
+ " phase=phase-45;\n",
+ " print ' %s -45 %d'%(B[i],phase);\n",
+ " \n",
+ " if(B[i]=='11'):\n",
+ " phase=phase-135;\n",
+ " print ' %s -135 %d'%(B[i],phase);\n",
+ " \n",
+ "\n",
+ "print 'final phase for the pi/4-DQPSK modulation method for given bitstream is %d degree'%phase"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Phase transition table for pi/4-DQPSK Modulation is given as \n",
+ " By Referring Table 9.1 on page No 266 i.e\n",
+ "Symbol Phase transition\n",
+ "00 => 45\u00b0\n",
+ "01 => 135\u00b0\n",
+ "10 => -45\u00b0\n",
+ "11 => -135\u00b0\n",
+ "sym Dell phi(k) Phi(k)\n",
+ " 00 45 45\n",
+ " 10 -45 0\n",
+ " 01 135 135\n",
+ " 11 -135 0\n",
+ " 01 135 135\n",
+ " 00 45 180\n",
+ " 11 -135 45\n",
+ " 10 -45 0\n",
+ " 10 -45 -45\n",
+ " 01 135 90\n",
+ " 01 135 225\n",
+ " 00 45 270\n",
+ "final phase for the pi/4-DQPSK modulation method for given bitstream is 270 degree\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.4, Page 270"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "CHBW=200; #Channel BW in KHz\n",
+ "R=270.83; #Data rate in kbps\n",
+ "Fc=900; #carrier frequency in MHz\n",
+ "\n",
+ "#Calculations\n",
+ "FreqShift=0.5*R;\n",
+ "#Transmitted Frequencies\n",
+ "Fh=Fc*1000+0.25*R;#Max\n",
+ "Fl=Fc*1000-0.25*R;#Min\n",
+ "BWEff=R/CHBW;\n",
+ "\n",
+ "#Results\n",
+ "print 'The frequency shift between binary 1 and binary 0 is %.3f kHz'%FreqShift;\n",
+ "print 'Maximum and Minimum value of transmitted frequencies are %.4f mHz and %.4f mHz respectively'%(Fh/1000,Fl/1000);\n",
+ "print 'Bandwidth efficiency is %.2f bps/Hz'%BWEff"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The frequency shift between binary 1 and binary 0 is 135.415 kHz\n",
+ "Maximum and Minimum value of transmitted frequencies are 900.0677 mHz and 899.9323 mHz respectively\n",
+ "Bandwidth efficiency is 1.35 bps/Hz\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.5, Page 271"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "R=270.; #data rate in kbps\n",
+ "Eb_No=6.; # in dB\n",
+ "GMSK=0.3; #Gaussian minimum shift keying\n",
+ "\n",
+ "#Calculations&Results\n",
+ "Tb=1./R *10**3; #in microsec\n",
+ "B=GMSK/Tb;\n",
+ "print '3-dB BW for a gaussian low pass filter is %.f kHz'%(B*1000);\n",
+ "PowerBW=1.41*R;\n",
+ "DegradFac=0.89;\n",
+ "Pe=math.erfc(math.sqrt(2*DegradFac*10**(0.1*Eb_No)));\n",
+ "print 'Power bandwidth in the RF channel is %.1f kHz'%PowerBW\n",
+ "print 'Bit error probability for GMSK is %.1e'%Pe; #Incorrect answer in textbook"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "3-dB BW for a gaussian low pass filter is 81 kHz\n",
+ "Power bandwidth in the RF channel is 380.7 kHz\n",
+ "Bit error probability for GMSK is 1.7e-04\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.6, Page 273"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Rs=19200; #symbols per second\n",
+ "states=64;\n",
+ "\n",
+ "#Calculations\n",
+ "Bits_symbol=math.log(states,2);\n",
+ "BitRate=Bits_symbol*Rs;\n",
+ "\n",
+ "#Result\n",
+ "print 'Bit Rate of the modulator is %.1f kbps'%(BitRate/1000)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Bit Rate of the modulator is 115.2 kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.7, Page 274"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "import scipy\n",
+ "from scipy.optimize import fsolve\n",
+ "\n",
+ "#Variable declaration\n",
+ "Rb=144; #data rate in kbps\n",
+ "BW=36; #in MHz\n",
+ "Pb=3*10**-5;#probability of bit error\n",
+ "\n",
+ "#Calculations\n",
+ "Seff=Rb/BW; #spectral efficiency in bps/Hz\n",
+ "M=2**(Rb/BW); #since the channel is band limited\n",
+ "\n",
+ "#since Q[sqrt(2*Eb_No)]=(1/2)*erfc[sqrt(Eb_No)] # refer page no 257 equ 9.35\n",
+ "def f(x):\n",
+ " y=(3./8)*math.erfc(math.sqrt((2./5)*x))-Pb #from eqn 9.66 and 9.35\n",
+ " return y\n",
+ " \n",
+ "x = fsolve(f,0.1)\n",
+ "\n",
+ "#Result\n",
+ "print 'For a rectangular constellation (refer Figure 9.12), with a Gaussian channel and matched \ufb01lter reception, the calculated Eb/No value is %.1f dB'%(10*math.log10(x));"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For a rectangular constellation (refer Figure 9.12), with a Gaussian channel and matched \ufb01lter reception, the calculated Eb/No value is 12.9 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.8, Page 274"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "import scipy\n",
+ "from scipy.optimize import fsolve\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pb=10**-8;#BER probability\n",
+ "\n",
+ "#Calculations&Results\n",
+ "print \"For 16-PSK:\"\n",
+ "# Pb=0.5*Q(0.552*sqrt(Eb_No));\n",
+ "#since Q[sqrt(2*Eb_No)]=(1/2)*erfc[sqrt(Eb_No)] # refer page no 257 equ 9.35\n",
+ "def f(x):\n",
+ " y=0.25*math.erfc(math.sqrt(0.5*0.552**2*x))-Pb\n",
+ " return y\n",
+ "\n",
+ "x = fsolve(f,0.1)\n",
+ "\n",
+ "print 'Using equation 9.50 we get Eb/No as %d dB (approx)'%round(10*math.log10(x));\n",
+ "\n",
+ "print \"For 16-QAM\"\n",
+ "#Pb=0.75*Q(sqrt(0.8*Eb_No));\n",
+ "def f(x1):\n",
+ " y=(3./8)*math.erfc(math.sqrt(0.4*x1))-Pb\n",
+ " return y\n",
+ " \n",
+ "x1 = fsolve(f,0.1)\n",
+ "\n",
+ "#since Q[sqrt(2*Eb_No)]=(1/2)*erfc[sqrt(Eb_No)] # refer page no 257 equ 9.35\n",
+ "print 'Using equation 9.66 we get Eb/No as %d dB (approx)'%round(10*math.log10(x1));\n",
+ "print 'Thus 16-QAM has an advantage of about %d dB compared to 16-PSK'%(10*math.log10(x)-10*math.log10(x1));"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "For 16-PSK:\n",
+ "Using equation 9.50 we get Eb/No as 20 dB (approx)\n",
+ "For 16-QAM\n",
+ "Using equation 9.66 we get Eb/No as 16 dB (approx)\n",
+ "Thus 16-QAM has an advantage of about 4 dB compared to 16-PSK\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.9, Page 277"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "M=8; #number of different signal elements\n",
+ "Fc=250; #carrier frequency in kHz\n",
+ "DelF=25; #kHz\n",
+ "Pe=10**-6;#probability of error\n",
+ "\n",
+ "#Calculations\n",
+ "TotalBW=2*M*DelF;\n",
+ "nb=2*math.log(M,2)/(M+3);\n",
+ "#Pe=7*Q(z) and z=approx(5.08)\n",
+ "z=5.08;\n",
+ "Eb_No=(z)**2/math.log(M,2);\n",
+ "bits_sym=math.log(M,2);\n",
+ "\n",
+ "#Results\n",
+ "print 'Total bandwidth required is %d kHz \\n '%TotalBW;\n",
+ "print 'The bandwidth efficiency is %.4f \\n '%nb;\n",
+ "print 'The required Eb/No is %.3f dB \\n '%(10*math.log10(Eb_No));\n",
+ "print 'Carried bits per symbol are %d \\n '%bits_sym;"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total bandwidth required is 400 kHz \n",
+ " \n",
+ "The bandwidth efficiency is 0.5455 \n",
+ " \n",
+ "The required Eb/No is 9.346 dB \n",
+ " \n",
+ "Carried bits per symbol are 3 \n",
+ " \n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/screenshots/EbbyNo.png b/Wireless_Communications_and_Networking_by_V._Garg/screenshots/EbbyNo.png
new file mode 100755
index 00000000..8b71e082
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/screenshots/EbbyNo.png
Binary files differ
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/screenshots/comparision_of_models.png b/Wireless_Communications_and_Networking_by_V._Garg/screenshots/comparision_of_models.png
new file mode 100755
index 00000000..21f83b0e
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/screenshots/comparision_of_models.png
Binary files differ
diff --git a/Wireless_Communications_and_Networking_by_V._Garg/screenshots/multiplexing.png b/Wireless_Communications_and_Networking_by_V._Garg/screenshots/multiplexing.png
new file mode 100755
index 00000000..913873f0
--- /dev/null
+++ b/Wireless_Communications_and_Networking_by_V._Garg/screenshots/multiplexing.png
Binary files differ