summaryrefslogtreecommitdiff
path: root/Satellite_Communications_by_Dennis_Roddy
diff options
context:
space:
mode:
Diffstat (limited to 'Satellite_Communications_by_Dennis_Roddy')
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_10.ipynb185
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_12.ipynb932
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_13.ipynb302
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_14.ipynb398
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_16.ipynb186
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_2.ipynb1002
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_3.ipynb268
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_4.ipynb124
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_5.ipynb83
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_6.ipynb226
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/Chapter_9.ipynb295
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/README.txt10
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/screenshots/arrayfactor.pngbin0 -> 50405 bytes
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/screenshots/polararray.pngbin0 -> 42925 bytes
-rwxr-xr-xSatellite_Communications_by_Dennis_Roddy/screenshots/tita.pngbin0 -> 39617 bytes
15 files changed, 4011 insertions, 0 deletions
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_10.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_10.ipynb
new file mode 100755
index 00000000..6cac838d
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_10.ipynb
@@ -0,0 +1,185 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:4511273484a972ccf0b24ae5024cbc7b477d6e76c179ec40d21b095c8ccf0c0e"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10: Digital Signal"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.1, Page 272"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "PR=0.01 #The Average power received(watts)\n",
+ "Tb=0.0001 #Bit period(seconds)\n",
+ "N0=10**-7 #Noise power(joule)\n",
+ "\n",
+ "#Calculations\n",
+ "\n",
+ "\n",
+ "Eb=PR*Tb #Energy per bit received (joule)\n",
+ "x=math.sqrt(Eb/N0)\n",
+ "\n",
+ "from scipy import integrate\n",
+ "f=lambda t:math.exp(-t**2)\n",
+ "erf=integrate.quad(f,0,x)\n",
+ "erf1=erf[0]*(2/math.pi**0.5)\n",
+ "BER=(1-erf1)*(10**6)/2\n",
+ "BER=round(BER,2)\n",
+ "\n",
+ "print \"The Bit error rate is\", BER,\"*10^-6\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Bit error rate is 3.87 *10^-6\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXample 10.2, Page 274"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "Rb=61 #Transmission rate (Mb/s)\n",
+ "ENR=9.5 #Required Energy to noise ratio(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "Rb=10*math.log10(61*10**6) #Converting Transmission rate to dB\n",
+ "CNR=Rb+ENR #Carrier to noise ratio\n",
+ "CNR=round(CNR,2)\n",
+ "#Results\n",
+ "\n",
+ "print \"Required Carrier to noise ratio is\", CNR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Required Carrier to noise ratio is 87.35 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 10.3, Page 275"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "BER=10**-5 #Maximum allowable bit error rate\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "import math\n",
+ "from pylab import*\n",
+ "%matplotlib inline\n",
+ "x=linspace(8,10,11) #Eb/N0 ratio represented by x\n",
+ "x1=x**0.5\n",
+ "for i in range(0,11):\n",
+ " x[i]=10*math.log10(x[i]) #Converting x into decibels\n",
+ "\n",
+ "\n",
+ "erf=linspace(0,0,11) #Initialization for erf function\n",
+ "Pe=linspace(0,0,11) #Initialization for Probablity of error\n",
+ "\n",
+ "from scipy import integrate\n",
+ "f=lambda t:math.exp(-t**2)\n",
+ "for i in range(0,10):\n",
+ " k=integrate.quad(f,0,x1[i])\n",
+ " erf[i]=k[0]*(2/math.pi**0.5) \n",
+ " Pe[i]=(1-erf[i])/2 #Probability of error\n",
+ "\n",
+ "y=linspace(9,9.59,5)\n",
+ "z=linspace(BER,BER,5)\n",
+ "a=linspace(9.59,9.59,5)\n",
+ "b=linspace(0,BER,5)\n",
+ "plot(x,Pe)\n",
+ "plot(y,z)\n",
+ "plot(a,b)\n",
+ "xlabel('xdB')\n",
+ "ylabel('Pe(x)')\n",
+ "show() \n",
+ "x=9.6 #The Eb/N0 ratio for Maximum BER(dB) from the graph\n",
+ "EbN0=x+2 #Eb/N0 ratio with implementation margin\n",
+ "#Results\n",
+ "\n",
+ "print \"The Eb/N0 ratio with allowable BER of 10^-5 and implementation margin of 2dB is\",EbN0,\"dB\"\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nY+azLY4fPx4aGBhY4ufnd37evHkFfMfMV1t899134xYuXJirVCrP+Pn5nX/zzTcf5TvmvtpWrFix\nZ8KECSZ/f/9zln0NDQ3u99xzz7GOOg7W29GjRyO9vb0r5HK5Ljk5Oam7c/H+YZ1hO3funL+/v/+5\nGzduDG9raxt6zz33HNPr9TLrMtnZ2YuioqJyGGPQarUqlUql5Ttuvtriiy++mN3c3DyWMe4/3GBu\nC8YY2trahs6fP//je++994ODBw/G8B03X23R1NTk5uvrW1ZdXS1hjPuS5jtuvtri5Zdf3vj8889v\ntbSDu7t7Q2trqwvfsffF9sknn8z98ssvg6wTVGJi4qspKSnPMcaQnJyclJSUlGxbr62tbahMJtMb\nDAap2WwWKpXKM+Xl5VO7OhdNdQSgoqLCR6VSFQ4fPvzm0KFDf5g3b96J999//wHrMh09s2UZ4j6Q\n9KQtZs+efXLs2LGXAa4trAehDCQ9aQsA+Otf/7p26dKlB8ePH/8dH3E6Qk/a4p133lkeExNzyDII\nady4cd/zE6199aQtPDw86q5cuTIGAK5cuTLmjjvuaHBxcWnjJ+K+NXfu3E9vv/32Jut9nT2faq0n\nz8baogQFwN/f//ynn346t7Gx0f369esjs7Oz77X90u3oma2B+MXck7awtnv37pWLFi3KcWSMjtLT\n/xeZmZlLLLOg2PuxB770pC10Op2isbHRff78+cdnzpx5et++fQ/zFa899aQtHn/88X+WlZX5TZo0\nqVapVJZu3759HV/xOkJnz6da6+y5166OS0u+A/Dx8alISkpKiYiIyLvtttuuBQUFlQwZMqTdthyz\neSZqIH4Z9bQtAOD48ePz9+zZ89jnn3/+K0fH6Qg9aYtnnnnm9eTk5OcFAgFjjAls/48MFD1pi9bW\nVuGXX345PT8/P+z69esjZ8+efTIkJESrUCh0fMVtDz1piy1btrwQGBh4pqCgIPTrr7+WhYeHHyst\nLVWOHj36Kl9xO0pnz6feyvcl9aB+9Nhjj+05ffr0zBMnTsxzc3Nr9vb2rrR+v6tnswaa7toCAM6e\nPRvw+OOP/zMrK0tt290fSLpri+Li4hlxcXEZU6ZMMRw6dCjmqaee+ltWVpaar3jtqbu28PT0rI6I\niMgbMWLEjTvuuKPh7rvv/qS0tFTJV7z21F1bfPHFF3OWLVv2HgDIZLKvp0yZYqisrPTmJ1r76+z5\nVGs9eTb2f/B9w81ZNpPJNIExhosXL0728fH56vLly2Os37ceJHHy5MmQgTowoCdtcfHixckymUx/\n8uTJEL5j5bstrLdHH330zYE8iq+7tvjqq698wsLCPmpraxt67dq1kf7+/ufKysp8+Y6bj7Z49tln\n/7Jx48aXGWOor68XicXimoaGBne+4+6rzWAwSG0HSVhG5W3duvX5jgZJtLa2utx1111fGwwGaUtL\ni2tPBknw/kGdZZs7d+4nvr6+ZUql8szHH388n7GeP7M10Lbu2mLlypX/cnd3bwgMDCwJDAwsmTVr\nVhHfMfP5/8KyDfQE1ZO2eO2119b7+vqW+fv7n9u+fXsC3zHz1RbffffduPvuu+9IQEBAqb+//7m3\n3357Od8x99UWFxe338PDo1YoFJolEkn1nj17VnT2fKrRaJy0aNGibEvdzp5v7WwTMDbgbqMQQggZ\nAOgeFCGEEKdECYoQQohTogRFCCHEKVGCIoQQ4pQoQRHSjz366KN7Dx06FAMAoaGhBT4+PhVBQUEl\nvr6+5f/85z8f5zs+QnqDZpIgpB+zfmpfIBCwd955Z/n06dO/bGpqul0mk329YsWKNwfKHHBk8KEe\nFCFO6tSpU7OUSmVpS0vLsGvXrt3m7+9//vz58/5PP/30Th8fn4rw8PBj33777QTrOuzHqZauXLky\nZtSoUf8ZOnToD/xET0jvUQ+KECc1a9asU2q1OuvFF1/8040bN0Y8/PDD+y5cuOB14cIFr6+++mpq\nfX39RF9f3/KVK1fuBrjk9OCDD749bNiwFp1Op9i+ffu6gThfJBk8KEER4sReeumlV2bOnHl65MiR\n13fs2JHwu9/97i/Lly9/RyAQMA8Pj7oFCxZ8bClrfYnv+++/HzdnzpwvFi5c+OHkyZMv8fkZCLlV\ndImPECf2/fffj7t27dptV69eHX3z5s3hllnTu6s3bty476dPn/5lYWGhyhFxEmIPlKAIcWKrVq36\nx5/+9KcXly9f/k5SUlLK3Xff/cmBAwdi29vbh9TV1XkcP358vnV5S/K6fv36yJKSkiC5XK7nJ3JC\neo8u8RHipNLT0x8ZNmxYS1xcXEZ7e/uQOXPmfHH//ff/W6FQ6Hx9fcsnT558ac6cOV9Y13nwwQff\nHjFixI2WlpZhK1aseDMoKKiEr/gJ6S2aLJYQQohTokt8hBBCnBIlKEIIIU6JEhQhhBCnRAmKEEKI\nU6IERQghxClRgiKEEOKU/j9XO1m8HYmiTgAAAABJRU5ErkJggg==\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x38eaa90>"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Eb/N0 ratio with allowable BER of 10^-5 and implementation margin of 2dB is 11.6 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_12.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_12.ipynb
new file mode 100755
index 00000000..17f2b0db
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_12.ipynb
@@ -0,0 +1,932 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:7a06e4236eec67757bd708fe8b0da2c40e097cf72b93ac25eb7d44065acbeff1"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12: The Space Link"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.1, Page 306"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "P=6 #Transmit power(Watts)\n",
+ "G=48.2 #Antenna Gain(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "EIRP=10*math.log10(P)+G #Equivalent isotropic radiated power(dB)\n",
+ "EIRP=round(EIRP)\n",
+ "#Result\n",
+ "\n",
+ "print \"Hence the Equivalent isotropic radiated power is\",EIRP,\"dBW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hence the Equivalent isotropic radiated power is 56.0 dBW\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.2, Page 306"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "D=3 #Antenna size(m)\n",
+ "f=12 #Operating Frequency(GHz)\n",
+ "n=0.55 #Aperture efficiency\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "G=n*(10.472*f*D)**2 #Antenna Gain\n",
+ "G=10*math.log10(G) #Converting Antenna gain to dB\n",
+ "G=round(G,1)\n",
+ "#Result\n",
+ "\n",
+ "print \"The Antenna gain with given parameters is\", G,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Antenna gain with given parameters is 48.9 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.3, Page 308"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "r=42000 #Range between ground station and satellite\n",
+ "f=6000 #Frequency(MHz)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "FSL=32.4+20*math.log10(r)+20*math.log10(f) #Free space loss(dB)\n",
+ "FSL=round(FSL,1)\n",
+ "#Result\n",
+ "\n",
+ "print \"The free space loss at given frequency is\", FSL, \"dB\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The free space loss at given frequency is 200.4 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.4, Page 311"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "FSL=207 #Free space loss(dB)\n",
+ "RFL=1.5 #receiver feeder loss(dB)\n",
+ "AA=0.5 #Atmospheric Absorption loss(dB)\n",
+ "AML=0.5 #Antenna Alignment loss(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "LOSSES=FSL+RFL+AA+AML #Total link loss (dB)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The total link loss is\", LOSSES,\"dB\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The total link loss is 209.5 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.5, Page 312"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "TAn=35 # Antenna Noise Temperature(Kelvin)\n",
+ "TRn=100 # Receiver Noise Temperature(Kelvin)\n",
+ "k=1.38*10**-23 #Boltzman constant(joules)\n",
+ "B=36*10**6 #Bandwidth\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "N0=(TAn+TRn)*k #noise power density(10**-21 joules)\n",
+ "PN=N0*B/10**-12 #Noise power for given bandwidth(picoWatts)\n",
+ "\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The noise Power density is\", N0,\"Joules\"\n",
+ "print \"The noise power for given bandwidth is\",PN,\"pW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The noise Power density is 1.863e-21 Joules\n",
+ "The noise power for given bandwidth is 0.067068 pW\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.6, Page 317"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "TRn=12 #Receiver Noise figure(dB)\n",
+ "G=40 #Gain of LNA(dB)\n",
+ "T0=120 #Noise temperature(Kelvin)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "F=10**(TRn/float(10)) #Converting noise power to ratio\n",
+ "Te=(F-1)*290 #Noise Temperature of the amplifier\n",
+ "G=10**(G/10) #Converting Gain of LNA to ratio\n",
+ "Tn=T0+Te/G #Overall Noise Temperature(Kelvin)\n",
+ "Tn=round(Tn,2)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The overall noise temperature is\", Tn, \"Kelvin\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The overall noise temperature is 120.43 Kelvin\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.7, Page 319"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "Tant=35 #Antenna noise temperature(kelvin)\n",
+ "Te1=150 #Receiver noise temperature(kelvin)\n",
+ "L=5 #Cable Loss (dB)\n",
+ "T0=290 \n",
+ "G1=10**5 #LNA Gain\n",
+ "F=12 #Receiver Noise figure(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "L=10**(L/float(10)) #Converting L into ratio\n",
+ "F=10**(F/float(10)) #Converting F into ratio\n",
+ "Ts=Tant+Te1+(L-1)*T0/G1+L*(F-1)*T0/G1 #Noise Temperature referred to the input(Kelvin)\n",
+ "Ts=round(Ts)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The noise temperature referred to the input is\",Ts,\"Kelvin\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The noise temperature referred to the input is 185.0 Kelvin\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.8, Page 320"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "Tant=35 #Antenna noise temperature(kelvin)\n",
+ "Te1=150 #Receiver noise temperature(kelvin)\n",
+ "L=5 #Cable Loss (dB)\n",
+ "T0=290 \n",
+ "G1=10**5 #LNA Gain\n",
+ "F=12 #Receiver Noise figure(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "L=10**(L/float(10)) #Converting L into ratio\n",
+ "F=10**(F/float(10)) #Converting F into ratio\n",
+ "\n",
+ "\n",
+ "Ts=Tant+(L-1)*T0+L*Te1+L*(F-1)*T0/G1 #Noise Temperature referred to the input(Kelvin)\n",
+ "Ts=round(Ts)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The noise temperature referred to the input is\",Ts,\"Kelvin\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The noise temperature referred to the input is 1137.0 Kelvin\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.9, Page 322"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "FSL=206 #Free space loss(dB)\n",
+ "APL=1 #Antenna Pointing loss(dB)\n",
+ "AAL=2 #Atmospheric Absorption loss(dB)\n",
+ "RFL=1 #Receiver feeder loss(dB)\n",
+ "EIRP=48 #Equivalent isotropically radiated power(dBW)\n",
+ "f=12 #Frequency(GHz)\n",
+ "GTR=19.5 #G/T ratio(dB/K)\n",
+ "k=-228.60 #Value of k(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "LOSSES=FSL+APL+AAL+RFL #Total loss(dB)\n",
+ "CNR=EIRP+GTR-LOSSES-k #Carrier to noise ratio(dBHz)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The carrier to noise ratio is\",CNR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The carrier to noise ratio is 86.1 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.10, Page 324"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "f=14 #Frequency(GHz)\n",
+ "Ps=-120 #Flux density required to saturate the transponder(dBW/m2)\n",
+ "LOSSES=2 #Propogation Losses(dB)\n",
+ "FSL=207 #Free-space loss(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "A0=-21.45-20*math.log10(f) #Effective antenna aperture(dB)\n",
+ "EIRP=Ps+A0+LOSSES+FSL #Equivalent isotropically radiated power(dB)\n",
+ "EIRP=round(EIRP,2)\n",
+ "\n",
+ "#Result\n",
+ "print \"The earth station EIRP required for saturation is\",EIRP,\"dBW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The earth station EIRP required for saturation is 44.63 dBW\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.11, Page 325"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "Ps=-91.4 #saturation flux density(dBW/m2)\n",
+ "f=14 #uplink frequency(GHz)\n",
+ "GTR=-6.7 #G/T (dB/k)\n",
+ "BO=11 #Input Back off(dB)\n",
+ "k=-228.6 #Value of k(dB)\n",
+ "RFL=0.6 #receiver feeder loss\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "A0=-21.5-20*math.log10(f) #Effective antenna aperture(dB)\n",
+ "A0=round(A0,1)\n",
+ "CNR=Ps+A0-BO+GTR-k-RFL #carrier to noise ratio(dB)\n",
+ "\n",
+ "#Result\n",
+ "print A0\n",
+ "print \"The carrier to noise ratio is\",CNR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "-44.4\n",
+ "The carrier to noise ratio is 74.5 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.12, Page 326"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "B=36 #Transponder Bandwidth(MHz)\n",
+ "CNR=22 #Carrier to noise ratio(dB)\n",
+ "LOSSES=200 #Total transmission losses(dB)\n",
+ "GTR=31 #Earth station G/T (dB/K)\n",
+ "k=-228.6 #Value of k(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "B=10*math.log10(B*10**6) #Converting Bandwidth to dB\n",
+ "EIRP=CNR-GTR+LOSSES+k+B #Equivalent isotropically radiated power(dB)\n",
+ "EIRP=round(EIRP)\n",
+ "#Result\n",
+ "\n",
+ "print \"Satellite EIRP required is\",EIRP,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Satellite EIRP required is 38.0 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.13, Page 327"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "B=36*10**6 #Transponder Bandwidth(Hz)\n",
+ "R=0.2 #Roll off factor \n",
+ "GTR=31 #Earth station G/T(dB/K)\n",
+ "LOSSES=200 #Total transmission losses(dB)\n",
+ "k=-228.6 #Value of k(dB)\n",
+ "BER=10**-5 #Value of Bit error rate\n",
+ "EbN0R=9.6 #Value of Eb/N0 from fig.10.17\n",
+ "#Calculation\n",
+ "\n",
+ "Rb=2*B/(1+R) #Bit rate(sec^-1)\n",
+ "Rb=10*math.log10(Rb) #Converting Rb into decibels\n",
+ "CNR=EbN0R+Rb #Carrier to noise ratio(dB)\n",
+ "EIRP=CNR-GTR+LOSSES+k #Equivalent Isotropically radiated power(dBW)\n",
+ "Rb=round(Rb,1)\n",
+ "EIRP=round(EIRP,1)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"Bit rate that can be accommodated is\",Rb,\"dB\"\n",
+ "print \"The EIRP required is\",EIRP,\"dBW\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Bit rate that can be accommodated is 77.8 dB\n",
+ "The EIRP required is 27.8 dBW\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.14, Page 328"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "EIRP=25 #Satellite saturation value(dBW)\n",
+ "BO=6 #Output Backoff loss(dB)\n",
+ "FSL=196 #Free space loss(dB)\n",
+ "DL=1.5 #Downlink losses(dB)\n",
+ "GTR=41 #Earth station G/T(dB/K)\n",
+ "k=-228.6 #Value of k(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "CNR=EIRP-BO+GTR-FSL-DL-k #Carrier to noise ratio(dB)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The Carrier to noise density ratio at the earth station is\",CNR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Carrier to noise density ratio at the earth station is 91.1 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.15, Page 329"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "EIRP=56 #Equivalent Isotropically radiated power(dBW)\n",
+ "BO=6 #Output Backoff(dB)\n",
+ "TFL=2 #Transmitter feeder loss(dB)\n",
+ "GT=50 #Antenna gain(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "PTWTA=EIRP-GT+TFL #Power output of TWTA(dBW)\n",
+ "PTWTAS=PTWTA+BO #Saturated power output of TWTA(dBW)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"Power output of the TWTA required for full saturated EIRP is\",PTWTAS,\"dBW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Power output of the TWTA required for full saturated EIRP is 14 dBW\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.16, Page 332"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "alpha=1.9 #Rain attenuation(dB)\n",
+ "CNR=20 #Downlink carrier to noise ratio(dB)\n",
+ "Tn=400 #Effective Noise temperature(Kelvin)\n",
+ "Ta=280 #Reference temperature(Kelvin)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "alpha1=10**(alpha/10) #Converting alpha to ratio\n",
+ "Trn=Ta*(1-1/alpha1) #Equivalent noise temperature of rain(kelvin)\n",
+ "Trn=round(Trn,1)\n",
+ "Ts=Tn+Trn #New system noise temperature\n",
+ "delp=10*math.log10(Ts/Tn) #Decibel increase in noise power\n",
+ "CNRN=CNR-delp-alpha #Value below which CNR falls(dB)\n",
+ "CNRN=round(CNRN,2)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The value below which C/N falls for 0.1 percent of time is\",CNRN,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The value below which C/N falls for 0.1 percent of time is 17.14 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.17, Page 333"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "CNR=17.4 #Clear sky input C/N (dB)\n",
+ "T=10 #Threshold level for FM etector(dB)\n",
+ "Ta=272 #Value of Ta(Kelvin)\n",
+ "Tscs=544 #Value of Tscs(Kelvin)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "TM=CNR-T #Threshold margin at FM detector(dB)\n",
+ "CNR=10**(CNR/10) #Converting CNR to ratio\n",
+ "NCR=1/float(CNR)\n",
+ "\n",
+ "import scipy\n",
+ "import scipy.optimize\n",
+ "def f(A):\n",
+ " y=0.1-NCR*(A+(A-1)*Ta/Tscs)\n",
+ " return y\n",
+ "A=scipy.optimize.fsolve(f,2)\n",
+ "\n",
+ "A=10*math.log10(A) #Converting A into decibels\n",
+ "A=round(A)\n",
+ "\n",
+ "# Getting the value of probablity of exceeding A from the curve\n",
+ "\n",
+ "if (A==6):\n",
+ " P=2.5*10**-4 \n",
+ "else:\n",
+ " print \"error\"\n",
+ "\n",
+ "Av=100*(1-P) #Availability(percentage)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The time system stays above threshold is\",Av,\"percentage\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time system stays above threshold is 99.975 percentage\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.18, Page 336"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "Nu=100 #Noise spectral density for uplink(dBHz)\n",
+ "Nd=87 #Noise spectral density for downlink(dBHz)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "N0CR=10**(-Nu/10)+10**(-Nd/10) #Noise to carrier ratio\n",
+ "CNR=-10*math.log10(N0CR) #Combined c/N0 ratio(dBHz)\n",
+ "CNR=round(CNR,2)\n",
+ "#Result\n",
+ "\n",
+ "print \"The combined carrier to noise ratio is\",CNR,\"dBHz\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The combined carrier to noise ratio is 89.59 dBHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.19, Page 337"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable declaration\n",
+ "\n",
+ "#For uplink\n",
+ "\n",
+ "Ps=-67.5 #Saturation flux density(dB)\n",
+ "A0=-37 #Antenna aperture at 6GHz(dB)\n",
+ "IBO=-11 #Input Backoff(dB)\n",
+ "GTRs=-11.6 #Satellite saturation G/T (dB)\n",
+ "k=-228.6 #Value of k(dB)\n",
+ "\n",
+ "#For Downlink\n",
+ "\n",
+ "EIRP=26.6 #Satellite EIRP(dB)\n",
+ "OBO=-6 #output Backoff(dB)\n",
+ "FSL=-196.7 #Free Space loss(dB)\n",
+ "GTRe=40.7 #Earth station G/T(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "CNRu=Ps+A0+IBO+GTRs-k #Carrier to noise ratio for uplink(dB)\n",
+ "CNRd=EIRP+OBO+FSL+GTRe-k#Carrier to noise ratio for downlink(dB)\n",
+ "N0CR=10**(-CNRu/10)+10**(-CNRd/10) #Noise to carrier ratio\n",
+ "CNR=-10*math.log10(N0CR) #Combined c/N0 ratio(dBHz)\n",
+ "CNR=round(CNR,2)\n",
+ "#results\n",
+ "\n",
+ "print \"The Carrier to noise ratio for uplink is\",CNRu,\"dB\"\n",
+ "print \"The Carrier to noise ratio for downlink is\",CNRd,\"dB\"\n",
+ "print \"The combined carrier to noise ratio is\",CNR,\"dBHz\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Carrier to noise ratio for uplink is 101.5 dB\n",
+ "The Carrier to noise ratio for downlink is 93.2 dB\n",
+ "The combined carrier to noise ratio is 92.6 dBHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 12.20, Page 338"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "CNRu=23 #carrier to noise ratio for uplink(dB)\n",
+ "CNRd=20 #carrier to noise ratio for downlink(dB)\n",
+ "CNRm=24 #carrier to noise ratio for intermodulation(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "NCR=10**(-CNRu/float(10))+10**(-CNRd/float(10))+10**(-CNRm/float(10)) #Combined Noise to carrier ratio\n",
+ "\n",
+ "\n",
+ "CNR=-10*math.log10(NCR) #Combined carrier to noise ratio(dB)\n",
+ "CNR=round(CNR,2)\n",
+ "#Result\n",
+ "\n",
+ "print \"The combined carrier to noise ratio is\",CNR,\"dB\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The combined carrier to noise ratio is 17.21 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_13.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_13.ipynb
new file mode 100755
index 00000000..7a2ded04
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_13.ipynb
@@ -0,0 +1,302 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:15f18d4eac7b181ba51c6696eba06fa436baa89f07a517b2b2096748a0e3b407"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13: Interference"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.1, Page 350"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "EIRP1=34 #desired carrier EIRP from satellite(dB)\n",
+ "G1=44 # ground station receiving antenna gain(dB)\n",
+ "G2=24.47 #Gain in desired direction(dB)\n",
+ "EIRP2=34 #EIRP by interfering satellite(dB)\n",
+ "PD=4 #Polarization discrimination(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "CIR=EIRP1-EIRP2+G1-G2+PD #Carrier to Interference ratio(dB)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The Carrier to interfernce ratio at the ground receiving antenna is\",CIR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Carrier to interfernce ratio at the ground receiving antenna is 23.53 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.2, Page 350"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Decalration\n",
+ "\n",
+ "PA=24 #Transmit power by station A(dBW)\n",
+ "G1=54 #Antenna Gain(dB)\n",
+ "PC=30 #Transmit power by station C(dBW)\n",
+ "G2=24.47#off-axis gain in the S1 direction(dB)\n",
+ "PD=4 #Polarization discrimination(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "CIR=PA-PC+G1-G2+PD #Carrier to Interference ratio(dB)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The Carrier to interfernce ratio on uplink is\",CIR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Carrier to interfernce ratio on uplink is 27.53 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.3, Page 351"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "CIR1=27.53 #Carrier to interference ratio from Example 13.1(dB)\n",
+ "CIR2=23.53 #Carrier to interference ratio from Example 13.2(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "ICRu=10**(-CIR1/10) #Interferece to carrier ratio for uplink\n",
+ "ICRd=10**(-CIR2/10) #Interferece to carrier ratio for downlink\n",
+ "\n",
+ "ICRant=ICRu+ICRd #Overall Interferece to carrier ratio\n",
+ "CIRant=-10*math.log10(ICRant)#Overall Carrier to interference ratio (dB)\n",
+ "CIRant=round(CIRant,2)\n",
+ "#Result\n",
+ "\n",
+ "print \"The overall carrier to interference ratio is\",CIRant,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The overall carrier to interference ratio is 22.07 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.4, Page 352"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "SSi=4 #Initial satellite spacing(degrees)\n",
+ "SSl=2 #Later Satellite spacing(degrees)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "IIR=(29-25*math.log10(SSl))-(29-25*math.log10(SSi)) #Increase in Interference(dB)\n",
+ "IIR=round(IIR,1)\n",
+ "#Result\n",
+ "\n",
+ "print \"The degradation in downlink C/I is\",IIR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The degradation in downlink C/I is 7.5 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.5, Page 356"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "f=4.2 #modualating frequency(MHz)\n",
+ "m=2.571 #Modulation index\n",
+ "QIF1=4.2 #Quality Impairment factor(a)\n",
+ "QIF2=4.5 #Quality Impairment factor(b)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "Dv=2*m*f #Peak to peak deviation(MHz)\n",
+ "\n",
+ "PR1=12.5-20*math.log10(Dv/12)-QIF1+1.1*QIF1**2 #Protection ratio for case(a)\n",
+ "PR1=round(PR1,1)\n",
+ "PR2=12.5-20*math.log10(Dv/12)-QIF2+1.1*QIF2**2 #Protection ratio for case(b)\n",
+ "PR2=round(PR2,1)\n",
+ "#Results\n",
+ "\n",
+ "print \"The protection ratio for quality impairment factor of 4.2 is\",PR1,\"dB\"\n",
+ "\n",
+ "print \"The protection ratio for quality impairment factor of 4.5 is\",PR2,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The protection ratio for quality impairment factor of 4.2 is 22.6 dB\n",
+ "The protection ratio for quality impairment factor of 4.5 is 25.2 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 13.6, Page 363"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Decalration\n",
+ "LU=200 #Uplink propogation loss(dB)\n",
+ "LD=196 #Downlink propogation loss(dB)\n",
+ "GE=25 #Receiving gain of earth station(dB)\n",
+ "GE1=25 #Transmit gain of E1 in the direction of S(dB)\n",
+ "GS=9 #receive gain of S in the direction of E1(dB)\n",
+ "GS1=9 #Transmit gain of satellite S1 in the direction of E(dB)\n",
+ "GTE=48 #Transmit gain of E(dB)\n",
+ "GRE=48 #Receive gain of E(dB)\n",
+ "GRS=19 #Receive gain of S(dB)\n",
+ "GTS=19 #Transmit gain of S(dB)\n",
+ "US=-60 #Maximum power spectral density(dBJ)\n",
+ "US1=1 #Maximum power spectral density(uJ)\n",
+ "UE1=10 #Maximum power spectral density transmitted by earth station(uJ)\n",
+ "UE=-50 #Maximum power spectral density transmitted by earth station(dBJ)\n",
+ "k=-228.6\n",
+ "#Calculation\n",
+ "\n",
+ "URS=UE+GTE+GRS-LU#Received power spectral density at satellite S(dB)\n",
+ "URE=US+GTS+GRE-LD#Received power spectral density at satellite E(dB)\n",
+ "y=URE-URS #Transmission gain for network R(dB)\n",
+ "\n",
+ "I1=US+GS1+GE-LD #Interference received by earth station(dB)\n",
+ "I2=UE+GE1+GS-LU #Uplink Interference(dB)\n",
+ "\n",
+ "delTE=I1-k #Earth station receiver input(dBK)\n",
+ "delTE=10**(delTE/float(10)) #Earth station receiver input(K)\n",
+ "delTS=I2-k #Noise temperature at satellite receiver input(dBK)\n",
+ "\n",
+ "delTSE=y+delTS #Noise Temperature rise(dBKelvin)\n",
+ "delTSE=10**(delTSE/10) #Noise Temperature rise(Kelvin)\n",
+ "delT=delTSE+delTE #Equivalent noise temperature rise\n",
+ "delT=round(delT,2)\n",
+ "\n",
+ "print URE,URS\n",
+ "#Results\n",
+ "\n",
+ "print \"The transmission gain is\",y,\"dB\"\n",
+ "print \"The interference levels I1 an I2 are\",I1,I2,\"dBJ respectively\"\n",
+ "print \"The equivalent temperature rise overall is\",delT,\"Kelvin\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "-189 -183\n",
+ "The transmission gain is -6 dB\n",
+ "The interference levels I1 an I2 are -222 -216 dBJ respectively\n",
+ "The equivalent temperature rise overall is 9.14 Kelvin\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_14.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_14.ipynb
new file mode 100755
index 00000000..1688a7bb
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_14.ipynb
@@ -0,0 +1,398 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:d9b4ccf4f2a187fd084eba547fc42fa3dd2f9e48328d5cbf1ac129f9eacc40d0"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14: Satellite Access"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.1, Page 381"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "Btr=36 #Transponder Bandwidth(MHz)\n",
+ "B=3 #Carrier Bandwidth(MHz)\n",
+ "EIRP=27 #saturated EIRP(dBW)\n",
+ "BO=6 #Back off loss(dB)\n",
+ "LOSSES=196 #Combined losses(dB)\n",
+ "GTR=30 #Earth station G/T ratio(dB)\n",
+ "k=228.6 #Value of k(dB)\n",
+ "#Calculation\n",
+ "\n",
+ "Btr1=10*math.log10(Btr*10**6) #Converting transponder Bandwidth into decibels\n",
+ "B1=10*math.log10(B*10**6) #Converting carrier Bandwidth into decibels\n",
+ "\n",
+ "CNR=EIRP+GTR-LOSSES+k-Btr1 #Carrier to noise ratio for single carrier operation(dB)\n",
+ "CNR=round(CNR)\n",
+ "alpha=-BO\n",
+ "K=alpha+Btr1-B1 #Fraction of Bandwidth actually occupied(dB)\n",
+ "K=10**(K/10) #Converting decibels to ratio\n",
+ "K=round(K)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The downlink carrier to noise ratio is\",CNR,\"dB\"\n",
+ "print \"Fraction of Bandwidth actually occupied is\",K\n",
+ "print \"No. of carriers that would be accommodated without backoff is\",Btr/B\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The downlink carrier to noise ratio is 14.0 dB\n",
+ "Fraction of Bandwidth actually occupied is 3.0\n",
+ "No. of carriers that would be accommodated without backoff is 12\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.2, Page 396"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable decalration\n",
+ "\n",
+ "N=40 #No.of bits\n",
+ "E=5 #Maximum number of errors allowed\n",
+ "p=10**-3 #Average probability of error in transmission\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "Pmiss=0\n",
+ "for i in range(E+1,N):\n",
+ " Pmiss=Pmiss+(math.factorial(N)/float((math.factorial(i)*math.factorial(N-i))))*(p**i)*((1-p)**(N-i))\n",
+ "\n",
+ "Pmiss=Pmiss*10**12\n",
+ "Pmiss=round(Pmiss,1)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The probability of miss is\",Pmiss,\"*10^-12\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The probability of miss is 3.7 *10^-12\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.3, Page 397"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable decalration\n",
+ "\n",
+ "N=40 #No.of bits\n",
+ "E=5 #Maximum number of errors allowed\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "Pfalse=0\n",
+ "for i in range(0,E+1):\n",
+ " Pfalse=Pfalse+(math.factorial(N)*2**-N)/float((math.factorial(i)*math.factorial(N-i)))\n",
+ "\n",
+ "\n",
+ "\n",
+ "Pfalse=Pfalse*10**7\n",
+ "Pfalse=round(Pfalse,1)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The probability of miss is\",Pfalse,\"*10^-7\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The probability of miss is 6.9 *10^-7\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.4, Page 399"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable ecalration\n",
+ "Lf=120832 #Total frame length\n",
+ "Tb=14 #Traffic burts per frame\n",
+ "Rb=2 #Reference bursts per frame\n",
+ "T=103 #Guard interval(symbols)\n",
+ "P=280 #Preamble Symbols\n",
+ "R=P+8 #Reference channel symbols with addition of CDC\n",
+ "#Calculation\n",
+ "\n",
+ "OH=2*(T+R)+Tb*(T+P) #Overhead Symbols\n",
+ "\n",
+ "nF=1-(OH/float(Lf)) #Frame Efficiency\n",
+ "nF=round(nF,3)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"Hence the frame efficiency of INTELSAT frame is\",nF"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hence the frame efficiency of INTELSAT frame is 0.949\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.5, Page 400"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "Lf=120832 #Number of symbols per frame\n",
+ "Tf=2 #Frame period(ms)\n",
+ "nF=0.949 #INTELSAT fram efficiency from Example 14.4\n",
+ "#Calculation\n",
+ "\n",
+ "Rs=(Lf/float(Tf))*10**-3 #Symbol rate(megasymbol/s)\n",
+ "Rt=Rs*2 #Transmission Rate\n",
+ "n=nF*Rt*10**3/64 #Voice channel capacity\n",
+ "n=round(n)\n",
+ "#Result\n",
+ "\n",
+ "print \" The voice channel capacity for the INTELSAT frame is\",n,\"Channels\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The voice channel capacity for the INTELSAT frame is 1792.0 Channels\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.6, Page 408"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "CNR=87.3 #Downlink Carrier to noise ratio(dBHz)\n",
+ "BER=10**-5 #Bit Error Rate Required\n",
+ "R=0.2 #Roll off factor\n",
+ "EbN0R=9.5 #Eb/N0 ratio(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "Rb=CNR-EbN0R #Maximum Transmission Rate(dBb/s)\n",
+ "Rb1=10**(Rb/10) #Maximum Transmission Rate(b/s)\n",
+ "BIF=Rb1*1.2*10**-6/2 #IF Bandwith required\n",
+ "BIF=round(BIF,2)\n",
+ "#Result\n",
+ "\n",
+ "print \"The Maximum Transmission rate is\",Rb,\"dBb/s\"\n",
+ "print \"The IF bandwidth required is\",BIF,\"MHz\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Maximum Transmission rate is 77.8 dBb/s\n",
+ "The IF bandwidth required is 36.15 MHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.7, Page 410"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "T1=1.544 #Bit rate from sec.10.4(Mb/s)\n",
+ "R=62 #Bit rate from sec.10.4(dBMb/s)\n",
+ "EbN0R=12 #Required Eb/N0 ratio for uplink(dB)\n",
+ "LOSSES=212 #Transmission losses of uplink(dB)\n",
+ "GTR=10 #G/T ratio for earth station(dB/K)\n",
+ "G1=46 #Uplink antenna gain(dB)\n",
+ "Rd=74 #Downlink Transmission Rate(dBb/s)\n",
+ "#Calculation\n",
+ "CNR=EbN0R+R #Carrier to noise ratio for uplink(dB)\n",
+ "EIRP=CNR-GTR+LOSSES-228.6 #EIRP of earth station antenna\n",
+ "P=EIRP-G1 #Transmitted Power Required(dBW)\n",
+ "P=10**(P/float(10)) #Transmitted Power Required(Watts)\n",
+ "P=round(P,2)\n",
+ "\n",
+ "Ri=Rd-R #Rate increase with TDMA operation(dB)\n",
+ "P1=1.4+Ri #Uplink power increase required for TDMA operation(Watts)\n",
+ "P2=10**(P1/float(10))\n",
+ "P2=round(P2,1)\n",
+ "#Results\n",
+ "\n",
+ "print \"Earth station transmission power required for transmission of T1 baseband signal is\",P,\"Watts\"\n",
+ "\n",
+ "print \"Uplink power increase required for TDMA operation is\",P1,\"dBWatts or\",P2,\"Watts\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Earth station transmission power required for transmission of T1 baseband signal is 1.38 Watts\n",
+ "Uplink power increase required for TDMA operation is 13.4 dBWatts or 21.9 Watts\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 14.8, Page 429"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "BIF=36 #Bandwidth of channel over which carriers are spread(MHz)\n",
+ "R=0.4 #Rolloff factor for filtering\n",
+ "Rb=64 #Information bit rate(kb/s)\n",
+ "BER=10**-5 #Bit error rate required\n",
+ "EbN0R=9.6 #Eb/N0 ratio for BER given from Fig.10.18\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "Rch=BIF*10**6/(1+R) #Rate of unspreaded signal(chips/s)\n",
+ "Gp=Rch/(Rb*10**3) #Processing gain\n",
+ "Gp1=round(10*math.log10(Gp)) #Processing gain(dB)\n",
+ "EbN0R1=10**(EbN0R/float(10)) #Converting Eb/N0 into ratio\n",
+ "K=1+(1.4*Gp/EbN0R1) #Number of channels\n",
+ "K=math.floor(K)\n",
+ "\n",
+ "#Result\n",
+ "print \"The Processing Gain is\",Gp1,\"dB\"\n",
+ "print \"An estimate of maximum number of channels that can access the system is\",K\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Processing Gain is 26.0 dB\n",
+ "An estimate of maximum number of channels that can access the system is 62.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_16.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_16.ipynb
new file mode 100755
index 00000000..8a1e81ed
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_16.ipynb
@@ -0,0 +1,186 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:4b08bbb242b14bb2e9d6b297d6c2efe9724a5525d0e315485c89f280e01ac4b8"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 16: Direct Broadcast Satellite Services"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16.1, Page 474"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Varaible Declaration\n",
+ "\n",
+ "EIRP=55 #EIRP for satellite(dBW)\n",
+ "fD=12.5 #Downlink frequency(GHz)\n",
+ "Pss=-101 #Receiving at ground station direction(degrees west)\n",
+ "Rb=40*10**6 #Transmission Rate(Hz)\n",
+ "D=18 #Diameter of antenna(inches)\n",
+ "n=0.55 #Efficiency of antenna\n",
+ "Tant=70 #Antenna noise(Kelvin)\n",
+ "Teq=100 #Equivalent noise temperature at LNA(Kelvin)\n",
+ "R=6371 #Radius of earth(Km)\n",
+ "L=2 #Transmission losses(dB)\n",
+ "aGSO=42164 #Circumference of earth(km)\n",
+ "k=-228.6 #Boltzmann's constant (dB)\n",
+ "PE=-90 #Longitude of Earth station(degrees west)\n",
+ "LE=45 #Latitude of Earth station(degrees north)\n",
+ "f=14 #Frequency(GHz)\n",
+ "#Calculation\n",
+ "B=PE-Pss\n",
+ "b=math.acos(math.cos(B*3.142/180)*math.cos(LE*3.142/180))\n",
+ "b=b*180/3.142\n",
+ "A=math.asin(math.sin(abs(B)*3.142/180)/math.sin(b*3.142/180))\n",
+ "A=A*180/3.142\n",
+ "Az=180+A #Azimuth angle of antenna(degrees)\n",
+ "d=(R**2+aGSO**2-2*R*aGSO*math.cos(b*3.142/180))**0.5 #Range of antenna(km)\n",
+ "El=math.acos(aGSO*math.sin(b*3.142/180)/d) #Elevation angle of antenna(radians)\n",
+ "El=El*180/3.142 #Elevation angle of antenna(degrees)\n",
+ "Az=round(Az,1)\n",
+ "El=round(El)\n",
+ "d=round(d)\n",
+ "FSL=32.4+20*math.log10(d)+20*math.log10(f*10**3) #Free space loss(dB)\n",
+ "LOSSES=FSL+L #Total Transmission Losses\n",
+ "Ts=Teq+Tant #Total system noise temperature(Kelvin)\n",
+ "T=10*math.log10(Ts) #Total system noise temperature(dBK)\n",
+ "G=n*(3.192*f*(D/float(12)))**2\n",
+ "G=10*math.log10(G) #Antenna Gain(dB)\n",
+ "GTR=G-T #G/T ratio(dB)\n",
+ "CNR=EIRP+GTR-LOSSES-k #Carrier to noise ratio(dB)\n",
+ "Rb=10*math.log10(Rb) #Transmission Rate(dBHz)\n",
+ "EbN0R=CNR-Rb #Eb/N0 ratio at IRD(dB)\n",
+ "EbN0R=round(EbN0R,1)\n",
+ "#Results\n",
+ "\n",
+ "print \"The Azimuth angle of antenna is\",Az,\"degrees\"\n",
+ "print \"The Elevaation Angle of Antenna is\",El,\"degrees\"\n",
+ "print \"The Range of Antenna is\",d,\"km\"\n",
+ "print \"The Eb/N0 ratio at IRD is\",EbN0R,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Azimuth angle of antenna is 195.4 degrees\n",
+ "The Elevaation Angle of Antenna is 37.0 degrees\n",
+ "The Range of Antenna is 38020.0 km\n",
+ "The Eb/N0 ratio at IRD is 10.3 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 16.2, Page 480"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Varaible Declaration\n",
+ "\n",
+ "R01=42 #Rainfall at earth station(mm/hr)\n",
+ "p=0.01 #Percentage of time for which rain exceeds\n",
+ "LE=45 #Latitue of earth station(degrees)\n",
+ "hR=3.5 #Rain Height(km)\n",
+ "h0=0 #Mean Sea level(km)\n",
+ "Ta=272 #\n",
+ "El=37 #Elevation angle of the antenna(degrees)\n",
+ "Ts=170 #Total system noise temperature(Kelvin)\n",
+ "NCR=2.3*10**-9 #Carrier to noise ratio\n",
+ "fD=12.5 #Frequency of operation(GHz)\n",
+ "f12=12 #Frequency 12GHz(GHz)\n",
+ "f15=15 #Frequency 15GHz(GHz)\n",
+ "#Coefficients for horizontal and vertical polarizations at 12GHz and 15GHz as given in Table 4.2\n",
+ "\n",
+ "ah12=0.0188\n",
+ "av12=0.0168\n",
+ "bh12=1.217\n",
+ "bv12=1.2\n",
+ " \n",
+ "ah15=0.0367\n",
+ "av15=0.0335\n",
+ "bh15=1.154\n",
+ "bv15=1.128\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "#Using Interpolation to find coefficients at 12.5 GHz\n",
+ "\n",
+ "ah=round(ah12+(ah15-ah12)*(fD-f12)/(f15-f12),3)\n",
+ "bh=round(bh12+(bh15-bh12)*(fD-f12)/(f15-f12),3)\n",
+ "av=round(av12+(av15-av12)*(fD-f12)/(f15-f12),3)\n",
+ "bv=round(bv12+(bv15-bv12)*(fD-f12)/(f15-f12),3)\n",
+ "\n",
+ "#Coefficients for circular polarization\n",
+ "\n",
+ "ac=(ah+av)/2\n",
+ "ac=round(ac,3)\n",
+ "bc=(ah*bh+av*bv)/(2*ac)\n",
+ "bc=round(bc,3)\n",
+ "Ls1=(hR-h0)/math.sin(El*3.142/180) #Slant Path Length(km)\n",
+ "Ls=round(Ls1,1) #Slant Path Length(km)\n",
+ "LG=round(Ls*math.cos(El*3.142/180),1) #Horizontal projection of slant path length(km)\n",
+ "r011=90/(90+4*LG) #Reduction Factor\n",
+ "r01=round(r011,1) #Reduction Factor\n",
+ "L=round(Ls1*r01,1) #Effective path length(km)\n",
+ "alpha=round(ac*R01**bc,3) #Specific attenuation(dB/km)\n",
+ "A=round(10**(alpha*L/float(10)),1) #Total Attenuation(dB)\n",
+ "Trn=Ta*(1-1/A) #noise temperature with effect of rain\n",
+ "Tscs=Ts\n",
+ "NCrain=NCR*(A+(A-1)*Ta/Tscs) #Noise to carrier ratio due to rain\n",
+ "CNrain=-10*math.log10(NCrain)#Noise to carrier ratio due to rain(dB)\n",
+ "Rb=10*math.log10(40*10**6) #Transmission rate(dB)\n",
+ "EbN0rain=round(CNrain-Rb,1) #Upper limit of Eb/N0 ratio in prescence of rain(dB)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"Hence the upper limit for Eb/N0 for given conditions is\",EbN0rain,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hence the upper limit for Eb/N0 for given conditions is -2.1 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_2.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_2.ipynb
new file mode 100755
index 00000000..b62cd703
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_2.ipynb
@@ -0,0 +1,1002 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:9c5b783b7af2e7759af05c065786293bfda0657b22d7595e2418aaa43901e7b0"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2: Orbits and Launching Methods"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.1, Page 23"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "u=3.986*(10**14) #Earth's Gravitational constant(m^3/sec^2)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "n=(2*3.14)/(24*60*60) #Mean Motion(rad/sec)\n",
+ "a=((u/n**2)**(0.33333))/1000 #Radius of the orbit by kepler's 3rd law(km)\n",
+ "a=round(a,2)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The Radius of the circular orbit with 1 day period is:\", a,\"km\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Radius of the circular orbit with 1 day period is: 42247.94 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.2, Page 29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "NN=14.22296917 #Mean Motion (1/day)\n",
+ "u=3.986005*(10**14) #Earth's Gravitational COnstant(m^3/sec^2)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "n0=(NN*2*3.142)/(24*60*60) #Mean Motion(rad/sec)\n",
+ "a=((u/n0**2)**(0.33333))/1000 #Radius of the orbit by kepler's 3rd law(km)\n",
+ "a=round(a,2)\n",
+ "#Result\n",
+ "\n",
+ "print \"The Semimajor axis for given satellite parameters is:\", a,\"km\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Semimajor axis for given satellite parameters is: 7193.97 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.3, Page 29"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "R=6371 #Mean Earth's radius(km)\n",
+ "e=0.0011501 #Eccentricity\n",
+ "a=7192.3 #Semimajor axis(km)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "ra=a*(1+e) #Radius Vector at apogee(km)\n",
+ "rp=a*(1-e) #Radius Vector at perigee(km)\n",
+ "ha=round(ra-R,2) #Apogee height(km)\n",
+ "hp=round(rp-R,2) #Perigee height(km)\n",
+ "\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The Apogee height for given orbital parameters is:\", ha,\"km\"\n",
+ "print \"The Apogee height for given orbital parameters is:\", hp,\"km\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Apogee height for given orbital parameters is: 829.57 km\n",
+ "The Apogee height for given orbital parameters is: 813.03 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.4, Page 31"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "aE=6378.141 #Earth's equitorial radius(km)\n",
+ "e=0.002 #Eccentricity\n",
+ "p=12 #period from perigee to perigee (hours)\n",
+ "K1=66063.1704 #Constant (km^2)\n",
+ "u=3.986005*(10**14) #Earth's Gravitational constant(m^3/sec^2)\n",
+ "\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "n=(2*math.pi)/(12*60*60) #Mean Motion(rad/sec)\n",
+ "anp=((u/n**2)**(0.3333))/1000 #Radius of the orbit by kepler's 3rd law(km)\n",
+ "k2=(1-e**2)**1.5\n",
+ "# Solving for perturbed value of semimajor axis\n",
+ "import scipy\n",
+ "import scipy.optimize\n",
+ "def f(a):\n",
+ " y=(n-((u/a**3)**0.5)*(1+K1/a**2*k2))\n",
+ " return y\n",
+ "a=scipy.optimize.fsolve(f,2)\n",
+ "a=a/1000 #Converting a into km\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The nonperturbed value of semimajor axis is\", anp,\"km\"\n",
+ "print \"The perturbed value of semimajor axis is\", a,\"km\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The nonperturbed value of semimajor axis is 26564.7679852 km\n",
+ "The perturbed value of semimajor axis is [ 26610.22410209] km\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.5, Page 34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "i=98.6328 #Angle(degrees)\n",
+ "e=0.0011501 #eccentricity\n",
+ "n=14.23304826 #Mean Motion(1/day)\n",
+ "a=7192.3 #Semimajor axis(km)\n",
+ "K1=66063.1704 #Known constant(km^2)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "n0=(2*180*n) #Mean Motion (deg/sec)\n",
+ "K=(n0*K1)/((a**2)*((1-e**2)**2)) #Constant (deg/day)\n",
+ "w=-K*math.cos(i*3.142/180) #Rate of regression of nodes(deg/day)\n",
+ "W=K*(2-2.5*(math.sin(i*3.142/180))**2) #Rate of rotation of line of apsides(deg/day)\n",
+ "w=round(w,3)\n",
+ "W=round(W,3)\n",
+ "#Results\n",
+ "\n",
+ "print \"The rate of regression of nodes is:\", w,\"deg/day\"\n",
+ "print \"The rate of rotation of line of apsides is:\", W,\"deg/day\"\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The rate of regression of nodes is: 0.984 deg/day\n",
+ "The rate of rotation of line of apsides is: -2.902 deg/day\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.6, Page 34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "w=0.982 #rate of regression of nodes from Example 2.5(deg/day)\n",
+ "W=-2.903 #rate of rotation of line of apsides from Example 2.5)deg/day)\n",
+ "n=14.23304826 #Mean Motion(1/day)\n",
+ "W0=113.5534 #Argument of perigee(deg)\n",
+ "w0=251.5324 #Right ascension of the ascending node(deg)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "PA=1/n #Period \n",
+ "w=round(w0+w*PA,2) #New value of rate of regression of nodes(deg)\n",
+ "W=round(W0+W*PA,2) #New Value of rate of rotation of line of apsides(deg)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"New value of rate of regression of nodes is:\", w,\"deg\"\n",
+ "print \"New value of rate of rotation of line of apsides is:\", W,\"deg\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "New value of rate of regression of nodes is: 251.6 deg\n",
+ "New value of rate of rotation of line of apsides is: 113.35 deg\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.7, Page 38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculation\n",
+ "\n",
+ "ndays=400*365 #Nominal number of days in 400years\n",
+ "nleapyrs=400/4 #Nominal number of leap years\n",
+ "gregoriandays=ndays+nleapyrs-3 #number of days in 400 years of Gregorian calendar\n",
+ "gregavg=round(gregoriandays/float(400),2) #number of days in 400 years of Gregorian calendar\n",
+ "\n",
+ "#Result\n",
+ "print gregoriandays\n",
+ "print \"The average length of the civil year in gregorian calender is:\", gregavg,\"days\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "146097\n",
+ "The average length of the civil year in gregorian calender is: 365.24 days\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.8, Page 38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculation and Results\n",
+ "\n",
+ "if 1987%4==0:\n",
+ " print \"1987 is a leap year\"\n",
+ "else:\n",
+ " print \"1987 is not a leap year\"\n",
+ "\n",
+ "\n",
+ "if 1988%4==0:\n",
+ " print \"1988 is a leap year\"\n",
+ "else:\n",
+ " print \"1988 is not a leap year\"\n",
+ "\n",
+ "\n",
+ "if 2000%400==0:\n",
+ " print \"2000 is a leap year\"\n",
+ "else:\n",
+ " print \"2000 is not a leap year\"\n",
+ "\n",
+ "\n",
+ "if 2100%400==0:\n",
+ " print \"2100 is a leap year\"\n",
+ "else:\n",
+ " print \"2100 is not a leap year\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "1987 is not a leap year\n",
+ "1988 is a leap year\n",
+ "2000 is a leap year\n",
+ "2100 is not a leap year\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.9, Page 38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Calculation\n",
+ "days=324 #Number of days\n",
+ "hours=math.floor(24*0.95616765) # Number of hours\n",
+ "decimalfraction1=24*0.95616765-hours\n",
+ "minutes=math.floor(60*decimalfraction1) # Number of minutes\n",
+ "decimalfraction2=60*decimalfraction1-minutes\n",
+ "seconds=round(60*decimalfraction2,2) # Number of seconds\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print decimalfraction1,decimalfraction2\n",
+ "print \"An Epoch day has\", days,\"days\",hours,\"hours\",minutes,\"minutes\",seconds,\"seconds\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "0.9480236 0.881416\n",
+ "An Epoch day has 324 days 22.0 hours 56.0 minutes 52.88 seconds\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.10, Page 39"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable Declaration\n",
+ "\n",
+ "y=2000 #year\n",
+ "mon=12 #month\n",
+ "dy=18 #day\n",
+ "hours=13 #hours of the day\n",
+ "minutes=0 #Minutes of the day\n",
+ "seconds=0 #Seconds of the day\n",
+ "\n",
+ "\n",
+ "#Calculation\n",
+ "d=dy+(hours/24)+(minutes/(24*60))+seconds #Days in December \n",
+ "if mon<=2:\n",
+ " y=y-1\n",
+ " mon=mon+12\n",
+ "else:\n",
+ " y=y\n",
+ " mon=mon\n",
+ "\n",
+ "A=math.floor(y/100) #Converting years to days\n",
+ "B=2-A+math.floor(A/4) #Converting years to days\n",
+ "C=math.floor(365.25*y) #rounding the days \n",
+ "D=math.floor(30.6001*(mon+1)) #Converting months to days\n",
+ "JD=B+C+D+d+1720994.5 #Adding reeference to number of days\n",
+ "\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The Julian day of given day is:\", JD,\"Days\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Julian day of given day is: 2451896.5 Days\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.11, Page 41"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "JDref=2415020 #Reference Julian days\n",
+ "JC=36525\n",
+ "JD=2451897.0417 #Julian days with reference from Example 2.10\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "T=round((JD-JDref)/JC,4) #Time in julian Centuries\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The time for given date is:\", T,\"Julian Centuries\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time for given date is: 1.0096 Julian Centuries\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.12, Page 43"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "n=14.23304826 #Mean Motion (rev/day)\n",
+ "M0=246.6853 #Mean Anomaly (degrees)\n",
+ "t0=223.79688452 #Time of anomaly\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "T=round(t0-(M0/(n*360)),3) #Time of perigee passage\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "\n",
+ "print \"The time of perigee passage for NASA elements is:\", T,\"days\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The time of perigee passage for NASA elements is: 223.749 days\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.13, Page 44"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "M=205 #Mean anomaly(degrees)\n",
+ "e=0.0025 #Eccentricity\n",
+ "E=math.pi #Initial guess value for eccentric anomaly\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "import scipy\n",
+ "import scipy.optimize\n",
+ "def f(E):\n",
+ " y=M-E+e*math.sin(E)\n",
+ " return y\n",
+ "E=scipy.optimize.fsolve(f,3.142)\n",
+ "E=round(E,3)\n",
+ "\n",
+ "print \"The Eccentric anomaly is:\",E,\"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Eccentric anomaly is: 204.998 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.14, Page 45"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "n=14.2171401*2*math.pi/86400 #Mean motion (rad/sec)\n",
+ "M=204.9779+0.001*180*5/math.pi #Mean anomaly(rad)\n",
+ "e=9.5981*10**-3 #Eccentricity\n",
+ "a=7194.9 #Semimajor axis(km)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "v=(M*math.pi/180)+2*e*math.sin(M*math.pi/180)+(5*e**2*math.sin(2*M*math.pi)/(4*180)) #True Anomaly (radians)\n",
+ "v=v*180/math.pi #True anomaly(degrees)\n",
+ "r=a*(1-e**2)/(1+e*math.cos(v)) #Magnitude of radius vector after 5s(km)\n",
+ "v=round(v,2)\n",
+ "r=round(r,2)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The true anomaly is:\",v,\"degrees\"\n",
+ "print \"The magnitude of radius vector 5s after epoch is:\",r,\"km\"\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The true anomaly is: 204.79 degrees\n",
+ "The magnitude of radius vector 5s after epoch is: 7252.02 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.15, Page 46"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "v=204.81 #True anomaly(degrees) from Example 2.14\n",
+ "r=7257 #Magnitude of radius vector(km) from Example 2.14\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "rP=r*math.cos(v*math.pi/180) #P coordinate of radius vector(km)\n",
+ "rQ=r*math.sin(v*math.pi/180) #Q coordinate of radius vector(km)\n",
+ "rP=round(rP,2)\n",
+ "rQ=round(rQ,2)\n",
+ "#Result\n",
+ "\n",
+ "print \"r in the perifocal coordinate system is\", rP,\"Pkm\", rQ,\"Qkm\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "r in the perifocal coordinate system is -6587.21 Pkm -3045.11 Qkm\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Exanple 2.17, Page 50"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "T=1.009638376 #Time in Julian centuries from Example 2.11\n",
+ "UT=13 #Universal time(hours)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "GST=(99.6910+36000.7689*T+0.004*T**2)*3.142/180 #GST(radians)\n",
+ "UT=2*math.pi*UT/24 #Universal time converted to fraction of earth rotation (radians)\n",
+ "\n",
+ "GST=GST+UT \n",
+ "\n",
+ "\n",
+ "GST=(math.fmod(GST,2*math.pi))*180/math.pi#using fmod multiplr revolutions are removed (degrees)\n",
+ "GST=round(GST,2)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The GST for given date and time is \", GST,\"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The GST for given date and time is 287.18 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.18, Page 51"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declararion\n",
+ "\n",
+ "WL=-89.26 #Expressing the longitude in degrees west\n",
+ "GST=282.449 #GST from Example 2.17 (degrees)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "EL=2*math.pi+WL #Longitude in degrees East \n",
+ "LST=(GST+EL)*math.pi/180 #LST(radians)\n",
+ "LST=(math.fmod(LST,2*math.pi))*180/math.pi #fmod removes multiple revolutions(Degrees)\n",
+ "LST=round(LST,2)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"LST for Thunder Bay on given day is:\" ,LST,\"Degrees\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "LST for Thunder Bay on given day is: 199.47 Degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.19, Page 52"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "LST=167.475 #LST(degrees)\n",
+ "LE=48.42 #Latitude at thunder bay(degrees)\n",
+ "H=200 #Height above sea level(metres)\n",
+ "aE=6378.1414 #Semimajor axis(km)\n",
+ "eE=0.08182 #Eccentricity\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "l=(aE/math.sqrt(1-eE**2*math.sin(LE*3.142/180)**2)+H/1000)*math.cos(LE*3.142/180) \n",
+ "\n",
+ "z=((aE*(1-eE**2))/math.sqrt(1-eE**2*math.sin(LE*3.142/180)**2)+H/1000)*math.sin(LE*3.142/180) \n",
+ "\n",
+ "RI=round(l*math.cos(LST*3.142/180),2) #I component of radius vector at thunder bay(km)\n",
+ "\n",
+ "RJ=round(l*math.sin(LST*3.142/180),2) #J component of radius vector at thunder bay(km)\n",
+ "\n",
+ "RK=round(z,2) #Z component of radius vector at thunder bay(km)\n",
+ "\n",
+ "R=math.sqrt(RI**2+RJ**2+RK**2)\n",
+ "R=round(R,2)\n",
+ "\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The Radius vector components are\" ,RI,\"ikm+\",RJ,\"jkm+\",RK,\"kkm\"\n",
+ "print \"The Magnitude of radius component is\" ,R,\"km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Radius vector components are -4139.81 ikm+ 918.02 jkm+ 4748.46 kkm\n",
+ "The Magnitude of radius component is 6366.21 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.20, Page 55"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "PI=-1280 #I component of range vector for a satellite(km)\n",
+ "PJ=-1278 #J component of range vector for a satellite(km)\n",
+ "PK=66 #K component of range vector for a satellite(km)\n",
+ "GST=240 #GST(degrees)\n",
+ "LE=48.42 #Latitude(Degrees)\n",
+ "PE=-89.26 #Longitude(Degrees)\n",
+ "H=200 #Height above mean sea level(metres)\n",
+ "aE=6378.1414 #Semimajor axis(km)\n",
+ "eE=0.08182 #Eccentricity\n",
+ "\n",
+ "import math\n",
+ "#Calculation\n",
+ "\n",
+ "l=(aE/math.sqrt(1-eE**2*math.sin(LE*3.142/180)**2)+H/1000)*math.cos(LE*3.142/180) \n",
+ "\n",
+ "z=((aE*(1-eE**2))/math.sqrt(1-eE**2*math.sin(LE*3.142/180)**2)+H/1000)*math.sin(LE*3.142/180) \n",
+ "\n",
+ "SE=(math.atan(z/l))*180/3.142 #Geocentric latitude angle (degrees)\n",
+ "LST=240+PE\n",
+ "\n",
+ "from numpy import matrix\n",
+ "from numpy import linalg\n",
+ "a=math.sin(SE*3.142/180)*math.cos(LST*3.142/180)\n",
+ "b=math.sin(SE*3.142/180)*math.sin(LST*3.142/180)\n",
+ "c=-math.cos(SE*3.142/180)\n",
+ "d=-math.sin(LST*3.142/180)\n",
+ "e=math.cos(LST*3.142/180)\n",
+ "f=0\n",
+ "g=math.cos(SE*3.142/180)*math.cos(LST*3.142/180)\n",
+ "h=math.cos(SE*3.142/180)*math.sin(LST*3.142/180)\n",
+ "i=math.sin(SE*3.142/180)\n",
+ "\n",
+ "D = matrix( [[a,b,c],[d,e,f],[g,h,i]]) \n",
+ "\n",
+ "P=matrix( [[PI],[PJ],[PK]] )\n",
+ "\n",
+ "R=D*P #Components of range of earth station\n",
+ "Ro=math.sqrt(R[0,0]**2+R[1,0]**2+R[2,0]**2) #Magnitude of range of earth station(km)\n",
+ "Ro=round(Ro,2) \n",
+ "El=math.asin(R[2,0]/Ro) #Antenna elevation angle for the earth station(radians) \n",
+ "El=round(El*180/3.142,2) #Converting El to degrees\n",
+ "alpha=(math.atan(R[1,0]/R[2,0]))*180/3.142\n",
+ "if (R[0,0]<0 and R[1,0]>0):\n",
+ " Aza=alpha\n",
+ "else:\n",
+ " Aza=0\n",
+ "if (R[0,0]>0 and R[1,0]>0):\n",
+ " Azb=180-alpha\n",
+ "else:\n",
+ " Azb=0\n",
+ "if (R[0,0]>0 and R[1,0]<0):\n",
+ " Azc=180+alpha\n",
+ "else:\n",
+ " Azc=0\n",
+ "if (R[0,0]<0 and R[1,0]<0):\n",
+ " Azd=360-alpha\n",
+ "else:\n",
+ " Azd=0\n",
+ "Az=round(Aza+Azb+Azc+Azd,2) #Azimuth angle (degrees)\n",
+ "\n",
+ "print \"The magnitude of range of earth station is\" ,Ro,\"km\"\n",
+ "print \"The antenna elevation angle for the earth station are\",El,\"degrees\"\n",
+ "print \"The Azimuth angle for the earth station is\",Az,\"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The magnitude of range of earth station is 1809.98 km\n",
+ "The antenna elevation angle for the earth station are 12.03 degrees\n",
+ "The Azimuth angle for the earth station is 102.24 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 2.21, Page 58"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "rI=-4685.3 #I component of radius vector from Example 2.16(km)\n",
+ "rJ=5047.7 #J component of radius vector from Example 2.16(km)\n",
+ "rK=-3289.1 #K component of radius vector from Example 2.16(km)\n",
+ "aE=6378.1414 #Semimajor axis (km)\n",
+ "eE=0.08182 #Eccentricity\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "r=math.sqrt(rI**2+rJ**2+rK**2)\n",
+ "a=math.pi #Guess value for LST(radians)\n",
+ "b=math.atan(rK/rI) #Guess Value for latitude(radians)\n",
+ "c=r-aE #Guess value for height(km)\n",
+ "\n",
+ "from scipy.optimize import fsolve\n",
+ "\n",
+ "\n",
+ "def equations(p):\n",
+ " L,h,LST = p\n",
+ " return (rI-((aE/math.sqrt(1-eE**2*math.sin(L)**2))+h)*math.cos(L)*math.cos(LST),rJ-((aE/math.sqrt(1-eE**2*math.sin(L)**2))+h)*math.cos(L)*math.sin(LST),rK-((aE*(1-eE**2)/math.sqrt(1-eE**2*math.sin(L)**2))+h)*math.sin(L))\n",
+ "\n",
+ "L,h,LST = fsolve(equations, (b,c,a))\n",
+ "L=round(L*180/3.142,2) #Converting L into degrees\n",
+ "h=round(h)\n",
+ "LST=round(LST*180/3.142,1) #Converting LST into degrees\n",
+ "\n",
+ "print \"The latitude of subsatellite is\",L,\"degrees\"\n",
+ "print \"The height of subsatellite is\",h,\"km\"\n",
+ "print \"The LST of subsatellite is\",LST,\"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The latitude of subsatellite is -25.65 degrees\n",
+ "The height of subsatellite is 1258.0 km\n",
+ "The LST of subsatellite is 132.9 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_3.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_3.ipynb
new file mode 100755
index 00000000..0f386934
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_3.ipynb
@@ -0,0 +1,268 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:cf5342643c702b9d8304367e59517c8b40b2c0d171b088582d18b96d8620a619"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3: The Geostationary Orbit"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.1, Page 71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "Pss=-90 #Location of geostationary satellite(degrees)\n",
+ "PE=-100 #Longitude of the earth station antenna(degrees)\n",
+ "LE=35 #Latitude of the earth station antenna(degrees)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "B=PE-Pss #Angle between planes containing a and c(degrees)\n",
+ "b=math.acos(math.cos(B)*math.cos(LE)) #Angle of plane containing b(radians)\n",
+ "A=math.asin(math.sin(abs(B*3.142/180))/math.sin(b)) #Angle between planes containing b and c (radians)\n",
+ "\n",
+ "A=A*180/3.142 #Converting A into degrees\n",
+ "#LE>0 and B<0 by observation\n",
+ "Az=round(180-A,2) #Azimuth angle(degrees)\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "print \"The azimuth angle for the given earth station antenna is\", Az,\"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The azimuth angle for the given earth station antenna is 164.55 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.2, Page 73"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "R=6371 #Radius of earth (km)\n",
+ "aGSO= 42164 #Circumference of earth(km)\n",
+ "b=0.632 #values of b from Example 3.1 (radians)\n",
+ "#Calculation\n",
+ "import math\n",
+ "d=math.sqrt(R**2+aGSO**2-2*R*aGSO*math.cos(b)) #Range of earth station antenna (km)\n",
+ "El=math.acos(aGSO*math.sin(b)/d)*180/math.pi #Elevation angle(degrees)\n",
+ "d=round(d)\n",
+ "El=round(El)\n",
+ "#Results\n",
+ "\n",
+ "print \"The range of earth station antenna is\", d,\"km\"\n",
+ "print \"Elevation angle is\", El,\"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The range of earth station antenna is 37214.0 km\n",
+ "Elevation angle is 48.0 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.3, Page 77"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "LE=49 #Latitude of earth station(degrees)\n",
+ "aGSO=42164 #Circumference of earth(km)\n",
+ "R=6371 #Radius of earth(km)\n",
+ "\n",
+ "#Calculation\n",
+ "d=(R**2+aGSO**2-2*R*aGSO*math.cos(LE*3.142/180))**0.5 #Range of earth station antenna\n",
+ "\n",
+ "El0=math.acos(aGSO*math.sin(LE*3.142/180)/d) #Elevation angle(radians)\n",
+ "\n",
+ "El0=El0*180/3.142 #Converting El0 to degrees\n",
+ "\n",
+ "delta=round(90-El0-LE) #Angle of tilt required for polar mount\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "\n",
+ "print \"The Angle of tilt required for polar mount is\", delta,\"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Angle of tilt required for polar mount is 7.0 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.4, Page 78"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "LE=48.42 #Latitude of earth station(degrees)\n",
+ "PE=-89.26 #Longitute of earth station(degrees)\n",
+ "Elmin=5 #Minimum angle of elevation(degrees)\n",
+ "aGSO=42164 #Circumference of earth(km)\n",
+ "R=6371 #Radius of earth(km)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "Smin=90+Elmin\n",
+ "S=math.asin(R*math.sin(Smin*3.142/180)/aGSO)*180/math.pi #Angle subtended at the satellite(degrees)\n",
+ "\n",
+ "b=180-Smin-S #Angle of plane containing b(degrees)\n",
+ "B=math.acos(math.cos(b*3.142/180)/math.cos(LE*3.142/180))*180/math.pi#Angle between the planes containing a and c(degrees)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The satellite limit east of the earth station is at\", round(PE+B),\"Degrees approximately\"\n",
+ "print \"The satellite limit west of the earth station is at\", round(PE-B),\"Degrees approximately\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The satellite limit east of the earth station is at -20.0 Degrees approximately\n",
+ "The satellite limit west of the earth station is at -158.0 Degrees approximately\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 3.5, Page 80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "y=2000 #year\n",
+ "d=223.153 #day\n",
+ "n=1.002716 #mean motion(1/day)\n",
+ "w=272.5299 #rate of regression of nodes(degrees)\n",
+ "e=0.000352 #Eccentricity\n",
+ "W=247.9161 #Rate of regression of line of apsides(degrees)\n",
+ "M=158.0516 #Mean Anomaly at given time\n",
+ "JD00=2451543.5 #Julian days for Jan 0.0 2000\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "JD=JD00+d #Julian days for given day\n",
+ "JDref=2415020 #Reference Julian days\n",
+ "JC=36525\n",
+ "T=round((JD-JDref)/JC,4) #Time in julian Centuries\n",
+ "UT=d-223 #Universal Time, fraction of the day\n",
+ "GST=(99.6910+36000.7689*T+0.004*T**2)*3.142/180 #GST(radians)\n",
+ "UT=2*math.pi*UT #Universal time converted to fraction of earth rotation (radians)\n",
+ "\n",
+ "GST=(GST+UT)*180/3.1421\n",
+ "\n",
+ "\n",
+ "GST=(math.fmod(GST,360))#using fmod multiplr revolutions are removed (degrees)\n",
+ "GST=round(GST,3)\n",
+ "v=M+2*e*M #True Anomaly(degrees)\n",
+ "\n",
+ "Pssmean=W+w+M-GST #longitude for INTELSAT(degrees)\n",
+ "Pssmean=math.fmod(Pssmean,360) #fmod removes multiple revolutions\n",
+ "Pss=w+W+v-GST#longitude for INTELSAT(degrees)\n",
+ "Pss=math.fmod(Pss,360)#fmod removes multiple revolutions\n",
+ "\n",
+ "#Results\n",
+ "print \"The longitude of INTELSAT 805 is\", round(Pss,3),\"Degrees\"\n",
+ "print \"The average longitude of INTELSAT 805 is\", round(Pssmean,3),\"Degrees\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The longitude of INTELSAT 805 is 304.625 Degrees\n",
+ "The average longitude of INTELSAT 805 is 304.514 Degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_4.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_4.ipynb
new file mode 100755
index 00000000..7f767a84
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_4.ipynb
@@ -0,0 +1,124 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:3889f080e541059ccdb3a0ca28e3a8926a614c5d9e6ab3f2de315570240fb716"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4: Radio Wave Propagation"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.1, Page 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "El=50 #Elevation Angle(degrees)\n",
+ "h0=0.6 #Earth station altitude(km)\n",
+ "hr=3 #Rain height(km)\n",
+ "R01=10 #Point Rain Rate(mm/hr)\n",
+ "f=12 #frequency(GHz)\n",
+ "ah=0.0188\n",
+ "bh=1.217\n",
+ "av=0.0168\n",
+ "bv=1.2\n",
+ "#Calculation\n",
+ "Ls=(hr-h0)/math.sin(El*3.142/180) #Slant path length(km)\n",
+ "LG=Ls*math.cos(El*3.142/180) #Horizontal projection(km)\n",
+ "r01=90/(90+4*LG) #Reduction factor\n",
+ "L=Ls*r01 #Effective path length(km)\n",
+ "alphah=ah*R01**bh #Specific Attenuation\n",
+ "AdBh=round(alphah*L,2)#Rain Attenuation for horizontal polarization\n",
+ "alphav=av*R01**bv #Specific Attenuation\n",
+ "AdBv=round(alphav*L,2)#Rain Attenuation for vertical polarization\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print\"Rain Attenuation for given conditions and horizontal polarization is\",AdBh,\"dB\"\n",
+ "print\"Rain Attenuation for given conditions and vertical polarization is\",AdBv,\"dB\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Rain Attenuation for given conditions and horizontal polarization is 0.89 dB\n",
+ "Rain Attenuation for given conditions and vertical polarization is 0.77 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.2, Page 99"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "ah=0.0188\n",
+ "bh=1.217\n",
+ "av=0.0168\n",
+ "bv=1.2\n",
+ "R01=10 #Point Rain Rate(mm/hr)\n",
+ "L=2.8753812 #Effective path length calculated in Example 4.1(km)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "#Factors depending on frequency and polarization\n",
+ "ac=(ah+av)/2 #a for circular polarization\n",
+ "bc=(ah*bh+av*bv)/(2*ac) #b for circular polarization\n",
+ "\n",
+ "alpha=ac*R01**bc #Specific Attenuation(dB)\n",
+ "AdB=round(alpha*L,2) #Rain Attenuation(dB)\n",
+ "\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The Rain Attenuation for circular polarization is\",AdB,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Rain Attenuation for circular polarization is 0.83 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_5.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_5.ipynb
new file mode 100755
index 00000000..aeb7af0d
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_5.ipynb
@@ -0,0 +1,83 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:7a8d496ef0b6af4e2ff18bbc317ae6cd0dcf6c23c6e6b55a17cef7eadf262706"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5: Polarization"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 5.1, Page 112"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declararion\n",
+ "\n",
+ "L=18 #Latitude of earth station(degrees)\n",
+ "PE=-73 #Longitude of earth station(degrees)\n",
+ "Pss=-105 #Satellite location(degrees)\n",
+ "aGSO=42164 #Circumference of earth (km)\n",
+ "R=6371 #Radius of earth(km)\n",
+ "\n",
+ "import math\n",
+ "#Calculation\n",
+ "\n",
+ "B=PE-Pss #Angle between the planes containing a and c (degrees)\n",
+ "Rx=R*math.cos(L*3.142/180)*math.cos(B*3.142/180) #Geocentric-equitorial coordinate(km)\n",
+ "Ry=R*math.cos(L*3.142/180)*math.sin(B*3.142/180) #Geocentric-equitorial coordinate(km)\n",
+ "Rz=R*math.sin(L*3.142/180) #Geocentric-equitorial coordinate(km)\n",
+ "import numpy as np\n",
+ "r=np.array([Rx,Ry,Rz]) #Coordinates for local gravity direction\n",
+ "k=np.array([Rx-aGSO,Ry,Rz])#geocentric-equitorial coordinates for propagation direction\n",
+ "e=np.array([0,0,1]) # #geocentric-equitorial coordinates for polarization vector\n",
+ "\n",
+ "f=np.cross(k,r) #Direction of normal to reference plane\n",
+ "modf=(f[0]**2+f[1]**2+f[2]**2)**0.5\n",
+ "g=np.cross(k,e)# Direction of normal to plane contaning e and k\n",
+ "h=np.cross(g,k) #Direction of polarization of the plane \n",
+ "modh=(h[0]**2+h[1]**2+h[2]**2)**0.5\n",
+ "p=(h/modh)\n",
+ "p[0]=round(p[0],3)\n",
+ "p[1]=round(p[1],3)\n",
+ "p[2]=round(p[2],3)\n",
+ "E=round(math.asin(np.dot(p,f)/modf)*180/3.142,2)\n",
+ "\n",
+ "print \"The Angle of polarization at given location is\",E,\"degrees\"\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Angle of polarization at given location is -58.67 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_6.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_6.ipynb
new file mode 100755
index 00000000..db813f9b
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_6.ipynb
@@ -0,0 +1,226 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:d37ccbfd5f3c0bd5bc07cc06bbf51cbb242c58f6b867e2289a02a699857760db"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6: Antennas"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.1, Page 137"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "from pylab import *\n",
+ "%matplotlib inline\n",
+ "#Variable Decalration\n",
+ "a=3\n",
+ "b=2\n",
+ "dB=1\n",
+ "\n",
+ "#Calculation\n",
+ "#Initializations\n",
+ "tita=arange(-90,92,2)\n",
+ "tita[45]=1\n",
+ "tita1=arange(-90,92,2)\n",
+ "Y=linspace(0,0,91)\n",
+ "E=linspace(0,0,91)\n",
+ "gE=linspace(0,0,91)\n",
+ "GE=linspace(0,0,91)\n",
+ "X=linspace(0,0,91)\n",
+ "E1=linspace(0,0,91)\n",
+ "gH=linspace(0,0,91)\n",
+ "GH=linspace(0,0,91)\n",
+ "for i in range(0,size(Y)-1):\n",
+ " Y[i]=math.pi*b*math.sin(tita[i]*3.142/180)\n",
+ " X[i]=math.pi*a*math.sin(tita[i]*3.142/180)\n",
+ " E[i]=(math.sin(Y[i]))/Y[i] \n",
+ " E1[i]=math.cos(tita1[i]*3.142/180)*(math.sin(X[i]))/X[i]\n",
+ " gE[i]=(E[i])**2 #Raiation pattern in E-Plane\n",
+ " gH[i]=E1[i]**2 #Raiation pattern in H-Plane\n",
+ " GE[i]=10*math.log10(gE[i]) #Raiation pattern in E-Plane(dB)\n",
+ " GH[i]=10*math.log10(gH[i]) #Raiation pattern in H-Plane(dB)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "figure(0)\n",
+ "plot(tita,GE) #Plotting E-Plane radiation pattern\n",
+ "ylim([-30,0])\n",
+ "xlim([-90,90])\n",
+ "xlabel('tita degrees')\n",
+ "ylabel('GE(tita)')\n",
+ "figure(1)\n",
+ "plot(tita1,GH) #Plotting H-Plane radiation pattern\n",
+ "ylim([-30,0])\n",
+ "xlim([-90,90])\n",
+ "xlabel('tita degrees')\n",
+ "ylabel('GH(tita)')\n",
+ "show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nvokpKSltecdljhc3N7e0O3fuNCx73bRp0xYvWrToI0EQsHDhwunTp09fyDtOpV2oS9hMCc/pupLb\nOg5zEhcXF+ju7n7Vzc0t3cbGpui1117buGvXrv684zJX5V/fUVFR4aNHj14HAKNHj163c+fOAXwi\nUy5KBmZq+fLlk319fZPGjRu3+v79+/YAcOvWrWYuLi6Zuvu4uLhkZmVl0X6sIsjKynJ2dXXN0H1P\nv1vpqFQqoVevXgcDAgLO/O9//3sTAHJzcx0dHR1zAcDR0TE3NzfXkW+UysNlApkYr6J1HPPmzftk\nwoQJKz///PPZANsHaurUqUtXr1497nmPQxP04qDfo+kcP368m5OTU3ZeXl5jjUYT4+Xldans7SqV\nSqC/R9VRMlAoQ9dxjB8//tuwsLDdAK3jkFL5321GRoZr2VEYEY+Tk1M2ADRu3Dhv4MCBO+Li4gId\nHR1zc3JymjZt2jQnOzvbqUmTJrd5x6k0VCYyQ9nZ2U66r3fs2DHQx8fnPEDrOKQUEBBwJjU11SM9\nPd1Nq9Xabtq0aVh4eHgU77jMzePHj2sXFBTYAcCjR4/qREdHh/r4+JwPDw+PWrdu3WgAWLdu3egB\nAwbs5Bup8tDIwAxNnz59UWJiop9KpRJatmyZtmrVqrcBWschJWtr6+IVK1ZM6t2794GSkhKrcePG\nrW7btu1F3nGZm9zcXMeBAwfuAIDi4mLrkSNH/hQaGhodEBBwZujQoZtXr149zs3NLX3z5s1Deceq\nNCpBoPcCQgixdFQmIoQQQsmAEEIIJQNCCCGgZEAIIQSUDIgZe/DgQX3djrgAW4E9ZMiQLQCQlJTk\n+/PPP79szOOPGTNm7bZt2wYbGychckDJgJite/fuNYiMjJyo+75Zs2a3tmzZMgQAEhIS1Pv27etr\nzOOLtdK1uLiYWrwJd5QMiNn6+OOPF167dq21Wq1OmD59+qIbN2608PHxOV9UVGTz+eefz960adMw\ntVqdsHnz5qGnT5/u1LVr1xP+/v7x3bp1O37lyhXP5z3mpEmTVnh5eV3SaDQxt2/fbqLbMO3s2bMd\ng4ODYwMCAs706dNnv26rkNOnT3fq0KHDObVanTBt2rQlugWAa9euHRMeHh4VEhJySKPRxDx+/Lj2\n2LFj1wQFBf3m7+8fHxUVFQ4AJSUlVtOmTVsSGBgY5+vrm/TNN9+8BbCFhT169DiqVqsTfHx8zv/6\n66/dTfNbJWaL97apdKGLVJf09PQW7du3P6/7Pi0tzU33/dq1a0dPnjz5P7rbHj58aFdcXGwlCAJi\nYmJ6DR48eGv5x9u2bdsgjUYTXVpaqrp165aTvb39vW3btg3SarU2Xbp0OZGfn+8gCAI2btw4bOzY\nsasFQUC7du0unDp1KkgQBHz88ccLfHx8zgmCgO+++26Mi4tLhm7f/RkzZsz/8ccfRwqCgHv37tl7\nenpefvToUe1Vq1a9NXfu3E8EQcCTJ09qBgQEnE5LS3NbunTplHnz5s0UBAGlpaWqgoKCurx/33RR\n9oWGp8RsCc/ZxrvsbWVvv3//vv2oUaO+v3r1qrtKpRKKiopsyv/MsWPHXhgxYsR6lUolODk5Zb/0\n0kuHAeDy5cttkpOT2/Xq1esgwD7NN2vW7NaDBw/qFxYW1g0KCvoNYOd979mzp5/u8TQaTYy9vf19\nAIiOjg7dvXt32JdffvkhADx9+rTmzZs3m0dHR4eeP3/eZ+vWra8CwMOHD+tdvXrVvVOnTqfHjh27\npqioyGbAgAE7fX19k8T5rRFLRcmAELDdXUNCQg7t2LFj4I0bN1oEBwfHPu9+FSWYdu3aJZ84caJr\n2et0W4dX9LN16tR5VPb77du3D/Lw8Egt/9grVqyYpNFoYspff+zYsRf27NnTb8yYMWunTJny1Rtv\nvPFDhf+DhOhBcwbEbNnZ2RXoNjUrr169eg/L3vbw4cN6zZo1uwUA33333f8972d69OhxdNOmTcNK\nS0trZGdnO/3yyy8vAkCbNm0u5+XlNT516lRnACgqKrJJSUnxtre3v29nZ1egO0Bo48aNr1UUa+/e\nvQ/85z//eU/3fUJCglp3fWRk5ETdJPOVK1c8Hz9+XPvmzZvNGzdunDd+/Phvx48f/63u/oRUFyUD\nYrYcHBzudOvW7biPj8/56dOnLyrb/fPiiy/+kpKS4q2bQP7oo48Wz5gxY4G/v398SUmJ1fO6hAYO\nHLjDw8Mj1dvbO2X06NHrunbtegIAbGxsirZu3frq9OnTF/n5+SWq1eqEkydPdgGA1atXj3vzzTf/\np1arEx4/fly7fv36D4BnO5E+++yzOUVFRTYdOnQ41759+wuzZs36AmBbkHt7e6f4+/vH+/j4nJ8w\nYcLK4uJi69jY2GA/P79Ef3//+M2bNw99//33/22K3ykxX7RRHSESevToUR1dOWjhwoUf5+bmOi5b\ntuyfvOMipDyaMyBEQnv37n1lwYIFM4qLi63d3NzS165dO4Z3TIQ8D40MCCGE0JwBIYQQSgaEEEJA\nyYAQQggoGRBCCAElA0IIIaBkQAghBMD/A3RTo/iF9sKdAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x321d450>"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nAkoGhBBCAPx/Kt27827mDS4AAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x423ebd0>"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.2, Page 159"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "from pylab import *\n",
+ "%matplotlib inline\n",
+ "#Varable Declaration\n",
+ "\n",
+ "N=5 #Number of elements of dipole\n",
+ "s=0.25 #Space between dipole elements(wavelengths)\n",
+ "phi0=0#Angle between array factor and array(degrees)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "alpha=-2*3.142*s*math.cos(phi0) #Current phase(radians)\n",
+ "phi=arange(-180,182,2)\n",
+ "Si=linspace(0,0,181)\n",
+ "for k in range(0,180):\n",
+ " Si[k]=alpha+2*3.142*s*math.cos(phi[k]*3.142/180)\n",
+ "AFR=linspace(0,0,181)\n",
+ "AFI=linspace(0,0,181)\n",
+ "for i in range(0,180):\n",
+ " for j in range(0,N-1):\n",
+ " AFR[i]=AFR[i]+math.cos(j*Si[i]) #Real part of Array factor\n",
+ " AFI[i]=AFI[i]+math.sin(j*Si[i])#Imaginary part of Array factor\n",
+ "\n",
+ "teta=linspace(-3.142,3.142,181)\n",
+ "AF=linspace(0,0,181)\n",
+ "for k in range(0,180):\n",
+ " AF[k]=AF[k]+(AFR[k]**2+AFI[k]**2)**0.5\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "polar(teta,AF)\n",
+ "title('Polar plot of Array Factor')\n",
+ "show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nMWOS6urqzIVl1KhRKdevX582ZsyYJEtLS7q5uXldZGTkdGH9ZWVl9i4uLgUd1SdqNxG/3wAAjo6O\nxaK/jSy/7cuKVpnIgK2tbUVxcbGj8BgRaaWlpQ52dnbl4td+/PHHfw0dOjQ7Pz/ftaGhwey33377\nXtzwKIthr6SkpL/o/yW1ZWdnVy6tX521Y2trW1FUVOQkPGYymcZ0Ot1SUlvisFgso4sXL74fHR39\npo2NTaWNjU1lYGDgl1lZWZ4PHjzwkCYr2q/i4mLHVatWHdq3b9+a2tpai7q6OvNhw4Y9QhHbx5Il\nS06cPn160alTpxa/9957lwwMDDid9U8Im83u8e67717ZsGHDHzU1NVZ1dXXm06dPjxTW7+DgUJqf\nn+/aWT8B2t9vYf9F75e6VvW6IlplIgPvv//+xYiIiLejo6Pf5HK5+oGBgV8aGhq2vPbaawni1zIY\nDBNTU9Omnj17Nufk5Az+66+/PiZpc/PmzT+wWCyjx48fux8/fnzpvHnzLohf8957712S1i9ra+vq\ngoICl47aWLBgwbng4OBlWVlZnmw2u8f//ve/LWPGjEkS/+sriWvXrs3W09PjPXnyZEhWVpZnVlaW\n55MnT4aMHz8+/uTJkx8CyLbyxGQyjWk0Gvbp0+cFRVE6wcHBy0QNrgAAixYtOn316tV3zpw588GH\nH354srM6ReFwOAYcDsegT58+L3R0dKjr169Pu3nz5hTh+RUrVhwNDg5eFh0d/SZFUTrl5eV2ubm5\nbgDt79/06dMj8/LyBp07d24Bj8fTu3DhwrycnJzBAQEB4cJrZPnOLytaZSIDgwYNyjt9+vSidevW\n/dm3b9/nERERb4eFhc3Q09PjiV+7Y8eOr86ePbuwV69ejatWrTo0f/7886J/rWT9yzVhwoQ4V1fX\n/EmTJt3++uuvt0+aNOm2UF5Yh5ubW660fn333XdbN2/e/IO5uXndzp07vxBvw9/fP+rXX3/d+O67\n716xtbWtKCwsHHD+/Pn5svTv5MmTHy5fvvyYvb19mZWVVY2VlVWNtbV19dq1a/eePXt2IZ/P15XF\n/2bo0KHZX375ZeDYsWMT+/XrV/Xo0aNh48aNuyt6jYODQ6m3t3e6jo4OJX5OFEntmZqaNu3Zs+fT\n999//6KFhUXtuXPnFsyaNStEeN7X1zc1ODh42fr164N69+5d7+fnFyscFX722We7L1++PNfCwqL2\n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\nRK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x35677d0>"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 6.3, Page 160"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "from pylab import *\n",
+ "%matplotlib inline\n",
+ "#Varable Declaration\n",
+ "\n",
+ "N=5 #Number of elements of dipole\n",
+ "s=0.25 #Space between dipole elements(wavelengths)\n",
+ "phi0=90*math.pi/180 #Angle between array factor and array(radians)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "alpha=-2*math.pi*s*math.cos(phi0) #Current phase(radians)\n",
+ "phi=arange(-180,185,5)\n",
+ "Si=linspace(0,0,73)\n",
+ "for k in range(0,73):\n",
+ " Si[k]=alpha+2*math.pi*s*math.cos(phi[k]*math.pi/180)\n",
+ "\n",
+ "AFR=linspace(0,0,73)\n",
+ "AFI=linspace(0,0,73)\n",
+ "\n",
+ "for i in range(0,73):\n",
+ " for j in range(0,N):\n",
+ " AFR[i]=AFR[i]+math.cos(j*Si[i]) #Real part of Array factor\n",
+ " AFI[i]=AFI[i]+math.sin(j*Si[i])#Imaginary part of Array factor\n",
+ "\n",
+ "teta=phi*math.pi/180\n",
+ "AF=linspace(0,0,73)\n",
+ "for k in range(0,73):\n",
+ " AF[k]=AF[k]+(AFR[k]**2+AFI[k]**2)**0.5\n",
+ "\n",
+ "#Result\n",
+ "\n",
+ "polar(teta,AF)\n",
+ "title('Polar plot of Array Factor')\n",
+ "show()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x3489950>"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/Chapter_9.ipynb b/Satellite_Communications_by_Dennis_Roddy/Chapter_9.ipynb
new file mode 100755
index 00000000..2c093f32
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/Chapter_9.ipynb
@@ -0,0 +1,295 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:784ed0940f5ca0d7641a379ee4884ada589406f7ce20917d271026274ac607a6"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9: Analog Signals"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.1, Page 235"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "Bs=4.2 #Signal Bandwidth(MHz)\n",
+ "delf=2.56 #Deviation Ratio\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "delF=Bs*delf #Peak Deviation(MHz)\n",
+ "BIF=2*(delF+Bs) #Signal Bandwidth(MHz)\n",
+ "BIF=round(BIF,1)\n",
+ "#Results\n",
+ "\n",
+ "print \"The peak deviation is:\" , delF,\"MHz\"\n",
+ "print \"Signal Bandwidth is\" , BIF,\"MHz\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The peak deviation is: 10.752 MHz\n",
+ "Signal Bandwidth is 29.9 MHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.2, Page 236"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "delF=200 #Peak Deviation(kHz)\n",
+ "f=0.8 #Test tone frequency (kHz)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "m=delF/f #Modualtion index\n",
+ "B=2*(delF+f) #Bandwidth of the signal(kHz)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The modulation index is\" , m\n",
+ "print \"Bandwidth of the signal is\", B,\"kHz\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The modulation index is 250.0\n",
+ "Bandwidth of the signal is 401.6 kHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.3, Page 236"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable Declaration\n",
+ "\n",
+ "Bs1=4.2 #Signal Bandwidth(MHz) of Example 9.1\n",
+ "delf=2.56 #Deviation Ratio of Example 9.1\n",
+ "\n",
+ "delF2=200 #Peak Deviation(kHz) of Example 9.2\n",
+ "Bs2=0.8 #Test tone frequency (kHz) of Example 9.2\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "delF1=Bs1*delf #Peak Deviation(MHz) of Example 9.1\n",
+ "\n",
+ "BIF1=2*(delF1+2*Bs1) #Signal Bandwidth(MHz) of Example 9.1 according to Carson's rule\n",
+ "BIF1=round(BIF1,1)\n",
+ "BIF2=2*(delF2+2*Bs2) #Signal Bandwidth(kHz) of Example 9.2 according to Carson's rule.\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"Signal Bandwidth of Example 9.1 by Carson's rule is\",BIF1,\"MHz\"\n",
+ "\n",
+ "print \"Signal Bandwidth of Example 9.2 by Carson's rule is\",BIF2,\"kHz\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Signal Bandwidth of Example 9.1 by Carson's rule is 38.3 MHz\n",
+ "Signal Bandwidth of Example 9.2 by Carson's rule is 403.2 kHz\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.4, Page 241"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "delf=5 #Deviation frequency (kHz)\n",
+ "Bs=1 #Test Tone Frequency (kHz)\n",
+ "CNR=30 #Carrier to noise ration(dB)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "m=delf/Bs #Modulation Index\n",
+ "Gp=3*(m**2)*(m+1) #Processing gain for sinusoidal modulation\n",
+ "Gp=10*math.log10(Gp) #Converting Gp into dB\n",
+ "SNR=CNR+Gp\n",
+ "\n",
+ "Gp=round(Gp,1)\n",
+ "SNR=round(SNR,1)\n",
+ "\n",
+ "#Results\n",
+ "\n",
+ "print \"The receiver processing gain is\",Gp,\"dB\"\n",
+ "print \"The Signal to noise ratio is\", SNR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The receiver processing gain is 26.5 dB\n",
+ "The Signal to noise ratio is 56.5 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.5, Page 245"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "n=24 #Number of channels\n",
+ "g=13.57 #Peak/rms factor(dB)\n",
+ "b=3.1 #Channel Bandwidth(kHz)\n",
+ "P=4 #Emphasis improvement (dB)\n",
+ "W=2.5 #Noise weighting improvement(dB)\n",
+ "CNR=25 #Carrier to noise ratio (dB)\n",
+ "delFrms=35 #rms value of Peak Deviation(kHz)\n",
+ "fm=108 #Baseband frequency (kHz)\n",
+ "#Calculation\n",
+ " \n",
+ "L=10**((-1+4*math.log10(n))/20)\n",
+ "g=10**(g/20) #Converting process gain to ratio\n",
+ "delF=g*delFrms*L #Peak Deviation(Hz)\n",
+ "BIF=2*(delF+fm) #Signal Bandwidth(kHz) by Carson's rule\n",
+ "Gp=(BIF/b)*((delFrms/float(fm))**2) #Processing Gain\n",
+ "Gp=10*math.log10(Gp) #Converting Gp to dB\n",
+ "SNR=CNR+Gp+P+W #Signal to noise ratio for top channel in 24-channel FDM basseband signal\n",
+ "SNR=round(SNR,1)\n",
+ "#Results\n",
+ "\n",
+ "print \"Signal to noise ratio for top channel in 24-channel FDM Baseband signal is\", SNR,\"dB\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Signal to noise ratio for top channel in 24-channel FDM Baseband signal is 45.7 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 9.6, Page 246"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "#Variable Declaration\n",
+ "\n",
+ "delF=9 #Peak Deviation (MHz) \n",
+ "fm=4.2 #Baseband frequency(MHz)\n",
+ "SNR=62 #Signal to noise ration(dB)\n",
+ "M=11.8 #Noise weighing(P)+emphasis improvement(W)-implementation margin(IMP)\n",
+ "\n",
+ "#Calculation\n",
+ "\n",
+ "D=delF/fm #Modulation Index\n",
+ "GPV=12*(D**2)*(D+1) #Processing Gain for TV\n",
+ "GPV=10*math.log10(GPV) #Converting GPV into dB\n",
+ "CNR=SNR-GPV-M #carrier to noise ratio(dB)\n",
+ "CNR=round(CNR,1)\n",
+ "#Results\n",
+ "\n",
+ "print \"The Carrier to noise ratio required at the input of FM detector is\",CNR,\"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The Carrier to noise ratio required at the input of FM detector is 27.8 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/README.txt b/Satellite_Communications_by_Dennis_Roddy/README.txt
new file mode 100755
index 00000000..f1f45fe2
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/README.txt
@@ -0,0 +1,10 @@
+Contributed By: Edulakante Nagarjun Reddy
+Course: be
+College/Institute/Organization: Sardar Vallabhbhai National Institute of Technology
+Department/Designation: Electronics & CommunicationsEngg
+Book Title: Satellite Communications
+Author: Dennis Roddy
+Publisher: McGraw-Hill
+Year of publication: 2001
+Isbn: 0-07-137176-1
+Edition: 3rd \ No newline at end of file
diff --git a/Satellite_Communications_by_Dennis_Roddy/screenshots/arrayfactor.png b/Satellite_Communications_by_Dennis_Roddy/screenshots/arrayfactor.png
new file mode 100755
index 00000000..a9ff70d1
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/screenshots/arrayfactor.png
Binary files differ
diff --git a/Satellite_Communications_by_Dennis_Roddy/screenshots/polararray.png b/Satellite_Communications_by_Dennis_Roddy/screenshots/polararray.png
new file mode 100755
index 00000000..28ea8bf0
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/screenshots/polararray.png
Binary files differ
diff --git a/Satellite_Communications_by_Dennis_Roddy/screenshots/tita.png b/Satellite_Communications_by_Dennis_Roddy/screenshots/tita.png
new file mode 100755
index 00000000..907983f3
--- /dev/null
+++ b/Satellite_Communications_by_Dennis_Roddy/screenshots/tita.png
Binary files differ