summaryrefslogtreecommitdiff
path: root/Antennas_and_Wave_Propagation/chapter2.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Antennas_and_Wave_Propagation/chapter2.ipynb')
-rw-r--r--Antennas_and_Wave_Propagation/chapter2.ipynb486
1 files changed, 486 insertions, 0 deletions
diff --git a/Antennas_and_Wave_Propagation/chapter2.ipynb b/Antennas_and_Wave_Propagation/chapter2.ipynb
new file mode 100644
index 00000000..84f28496
--- /dev/null
+++ b/Antennas_and_Wave_Propagation/chapter2.ipynb
@@ -0,0 +1,486 @@
+{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h1>Chapter 2: Antenna Basics<h2>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-3.1, Page number: 14<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "e_half_power = 1/math.sqrt(2) #E(theta) at half power (relative quantity)\n",
+ "\n",
+ "#Calculation\n",
+ "theta = math.acos(math.sqrt(e_half_power)) # theta (radians)\n",
+ "hpbw = 2*theta*180/math.pi # Half power beamwidth (degrees)\n",
+ "\n",
+ "#Result\n",
+ "print \"The half power beamwidth is \", round(hpbw), \"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The half power beamwidth is 66.0 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-3.2, Page number: 14<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "e_half_power = 1/math.sqrt(2) #E(theta) at half power(unitless)\n",
+ "e_null = 0 #E(theta) = 0 at null points (unitless)\n",
+ "theta_1 = 0 #theta' (degrees)\n",
+ "theta = 1 #theta (degrees)\n",
+ "\n",
+ "#Calculation\n",
+ "for x in range(3): #Iterate till theta = i\n",
+ " theta = 0.5*math.acos(e_half_power/math.cos(theta_1*math.pi/180)) \n",
+ " #theta(radian)\n",
+ " theta_1 = theta*180/math.pi #set i = theta for next iteration (degrees)\n",
+ " \n",
+ "hpbw = 2*(theta*180/math.pi) #Half-power beamwidth (Degrees)\n",
+ "theta = 0.5*math.acos(e_null) #theta (radians)\n",
+ "fnbw = 2*(theta*180/math.pi) #Beamwidth between first null (degrees)\n",
+ "\n",
+ "#Result\n",
+ "print \"The half power beamwidth is\", round(hpbw), \"degrees\"\n",
+ "print \"The beamwidth between first nulls is \", round(fnbw), \"degrees\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The half power beamwidth is 41.0 degrees\n",
+ "The beamwidth between first nulls is 90.0 degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-4.1, Page number: 17<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import scipy.integrate\n",
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "def integrand(x):\n",
+ " return math.sin(x) #Function sin(theta)\n",
+ "\n",
+ "def integrand2(x):\n",
+ " return 1 #Contant function\n",
+ "\n",
+ "#Calculation\n",
+ "omega = scipy.integrate.quad(integrand, 20*math.pi/180, 40*math.pi/180) \n",
+ "omega = omega[0]*(180/math.pi) * scipy.integrate.quad(integrand2 ,30 ,70)[0]\n",
+ "#Integration between the ranges gives solid angle, omega (square degrees)\n",
+ "\n",
+ "#Result\n",
+ "print \"The solid angle, omega is\", round(omega), \"square degrees\" "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The solid angle, omega is 398.0 square degrees\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-4.2, Page number: 17<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "import scipy.integrate\n",
+ "\n",
+ "#Variable declaration\n",
+ "def func1(x,y):\n",
+ " return (math.cos(x)**4)*math.sin(x)*1 #Function for integration\n",
+ "\n",
+ "#Calculation\n",
+ "beam_area = scipy.integrate.dblquad(func1, 0, 2*math.pi, \n",
+ " lambda x: 0, lambda x: math.pi/2)\n",
+ "#Beam area (steradians)\n",
+ "\n",
+ "#Result\n",
+ "print \"The beam area of the given pattern is\", round(beam_area[0], 2), \"sr\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The beam area of the given pattern is 1.26 sr\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-7.1, Page number: 21<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import scipy.integrate\n",
+ "from math import pi,sin,cos,log10\n",
+ "\n",
+ "#Variable declaration\n",
+ "n = 10 #Number of isotropic point sources\n",
+ "dr = pi/2 #Distance(radians)\n",
+ "hpbw = 40 #Half power beamwidth (degrees)\n",
+ "def integrand(x,phi):\n",
+ " E_norm = (sin(pi/20))*(sin((pi/2)*(5*cos(phi)-6))/sin((pi/20)*(5*cos(phi)-6)))\n",
+ " return (E_norm**2)\n",
+ "\n",
+ "#Calculation\n",
+ "gain = scipy.integrate.dblquad(integrand, 0, 2*pi,\n",
+ " lambda x: 0, lambda x: pi/2)[0]\n",
+ "gain = (4*pi)/gain #Gain (unitless)\n",
+ "gain_db = 10*log10(gain)#Gain (dB)\n",
+ "gain_hpbw = 40000/(hpbw**2) #Gain from approx. equation (unitless)\n",
+ "gain_hpbw_db = 10*log10(gain_hpbw) #Gain from approx. equation (dB)\n",
+ "gain_diff = gain_hpbw_db - gain_db #Difference in gain (dB)\n",
+ "\n",
+ "#Result\n",
+ "print \"The gain G is\", round(gain_db,2),\"dB\"\n",
+ "print \"The gain from approx. equation is\", round(gain_hpbw_db),\"dB\"\n",
+ "print \"The difference is\", round(gain_diff,2),\"dB\"\n",
+ "\n",
+ "#The solution is incorrect due to the incorrect integration of the normalized power pattern\n",
+ "#As a result, the difference in gain is slightly higher"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The gain G is 10.01 dB\n",
+ "The gain from approx. equation is 14.0 dB\n",
+ "The difference is 3.97 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-7.2, Page number: 21<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "import scipy.integrate\n",
+ "\n",
+ "#Variable declaration\n",
+ "theta_hp = 90\n",
+ "phi_hp = 90\n",
+ "\n",
+ "def integrand(theta, phi):\n",
+ " return ((math.sin(theta)**3)*(math.sin(phi)**2))\n",
+ "\n",
+ "#Calculation\n",
+ "direct_exact = 4*math.pi/scipy.integrate.dblquad(integrand, 0, math.pi,\n",
+ " lambda x: 0, lambda x: math.pi)[0]\n",
+ " #Exact Directivity(No unit) \n",
+ "direct_apprx = 41253.0/(theta_hp*phi_hp) #Approximate directivity (No unit)\n",
+ "db_diff = 10*math.log10(direct_exact/direct_apprx) #Difference (decibels)\n",
+ "\n",
+ "#Result\n",
+ "print \"The exact directivity is\", round(direct_exact, 1)\n",
+ "print \"The approximate directivity is\", round(direct_apprx,1)\n",
+ "print \"The decibel difference is \", round(db_diff, 1), \"dB\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The exact directivity is 6.0\n",
+ "The approximate directivity is 5.1\n",
+ "The decibel difference is 0.7 dB\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-10.1, Page number: 28<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Z = 120*math.pi #Intrinsic impedence of free space (ohm)\n",
+ "\n",
+ "#Calculation\n",
+ "max_aper = Z/(320*math.pi**2) #Max. effective aperture (lambda^2)\n",
+ "direct = 4*math.pi*max_aper #directivity (unitless)\n",
+ "\n",
+ "#Result\n",
+ "print \"The maximum effective aperture is\", round(max_aper, 3), \"lambda^2\"\n",
+ "print \"The direcitivity is\", direct"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The maximum effective aperture is 0.119 lambda^2\n",
+ "The direcitivity is 1.5\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-10.2, Page number: 29<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "R_r = 73 #Radiation resistance (ohm)\n",
+ "\n",
+ "#Calculation\n",
+ "eff_aper = 30/(R_r*math.pi) #Effective aperture (lambda^2)\n",
+ "directivity = 4*math.pi*eff_aper #Directivity (unitless)\n",
+ "\n",
+ "#Result\n",
+ "print \"The effective aperture is\", round(eff_aper, 2), \"lambda^2\"\n",
+ "print \"The directivity is\", round(directivity,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The effective aperture is 0.13 lambda^2\n",
+ "The directivity is 1.64\n"
+ ]
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-11.1, Page number: 31<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "P_t = 15 #Transmitter power (W)\n",
+ "A_et = 2.5 #Effective aperture of transmitter (meter^2)\n",
+ "A_er = 0.5 #Effective aperture of receiver (meter^2)\n",
+ "r = 15e3 #Distance between the antennas (Line of sight) (m)\n",
+ "freq = 5e9 #Frequency (Hz)\n",
+ "c = 3e8 #speed of light (m/s)\n",
+ "\n",
+ "#Calculation\n",
+ "wave_len = c/freq #Wavelength (m)\n",
+ "P_r = (P_t*A_et*A_er)/((r**2)*(wave_len**2)) #received power (W)\n",
+ "\n",
+ "#Result\n",
+ "print \"The power delivered to the receiver is\", round(P_r,6), \"watts\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The power delivered to the receiver is 2.3e-05 watts\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-16.1, Page number: 40<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Variable declaration\n",
+ "E1 = 3 #Magnitude of electric field in x direction (V/m)\n",
+ "E2 = 6 #Magnitude of electric field in y direction (V/m)\n",
+ "Z = 377 #Intrinsic impedence of free space (ohm)\n",
+ "\n",
+ "#Calculation\n",
+ "avg_power = 0.5*(E1**2 + E2**2)/Z #average power per unit area (W/m^2)\n",
+ "\n",
+ "#Result\n",
+ "print \"The average power per unit area is\", avg_power, \"watts/meter^2\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The average power per unit area is 0.0596816976127 watts/meter^2\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 2-17.1, Page number: 43<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "AR_w = 4 #Axial Ratio for left elliptically polarized wave (unitless)\n",
+ "tau_w = 15 #Tilt angle for left elliptically polarized wave (degrees)\n",
+ "AR_a = -2 #Axial Ratio for right elliptically polarized wave (unitless) \n",
+ "tau_a = 45 #Tilt angle for right elliptically polarized wave (degrees)\n",
+ "tau_w2 = 20.7 #2*Tilt angle for left elliptically polarized wave (degrees) \n",
+ "tau_a2 = 39.3 #2*Tilt angle for right elliptically polarized wave (degrees)\n",
+ "\n",
+ "#Calculation\n",
+ "eps_a2 = 2*math.atan2(1,AR_a)*180/math.pi #polarisation latitude (degrees)\n",
+ "eps_w2 = 2*math.atan2(1,AR_w)*180/math.pi #antenna latitude (degrees)\n",
+ "gamma_w2 =math.acos(math.cos(eps_w2*math.pi/180)*math.cos(tau_w2*math.pi/180));\n",
+ " #great-circle angle - antenna (radians)\n",
+ "gamma_a2 =math.acos(math.cos(eps_a2*math.pi/180)*math.cos(tau_a2*math.pi/180));\n",
+ " #great-circle angle - wave (radians)\n",
+ "M_Ma = (gamma_w2*180/math.pi) + (gamma_a2*180/math.pi) \n",
+ " #total great-circle angle (degrees)\n",
+ "F = math.cos((M_Ma/2)*math.pi/180)**2 \n",
+ " #Polarisation matching factor (relative quantity)\n",
+ "\n",
+ "#Result\n",
+ "print \"The polarization matching factor is\", round(F,2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The polarization matching factor is 0.44\n"
+ ]
+ }
+ ],
+ "prompt_number": 23
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file