Skip to content

Instantly share code, notes, and snippets.

View johngrantuk's full-sized avatar

John Grant johngrantuk

View GitHub Profile
"""
13/07/18
Reads csv file and plots lat/lng positions.
Markers are coloured to match satellite number when signal > -100 or are coloured red when signal = -100
"""
import cartopy.crs as ccrs
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime
import traceback
def FieldSumHorn(ElementArray, Freq):
"""
Summation of field contributions from each horn element in array, at frequency freq for theta 0°-95°, phi 0°-360°.
Horn pattern estimate using cos q(theta) function.
Element = xPos, yPos, zPos, ElementAmplitude, ElementPhaseWeight
Returns arrayFactor[theta, phi, elementSum]
"""
arrayFactor = np.ones((360, 95))
def FieldSumPatch(ElementArray, Freq, W, L, h, Er):
"""
Summation of field contributions from each patch element in array, at frequency freq for theta 0°-95°, phi 0°-360°.
Element = xPos, yPos, zPos, ElementAmplitude, ElementPhaseWeight
Returns arrayFactor[theta, phi, elementSum]
"""
arrayFactor = np.ones((360, 95))
Lambda = 3e8 / Freq
def ArrayFactor(ElementArray, Freq):
"""
Summation of field contributions from each element in array, at frequency freq at theta 0°-95°, phi 0°-360°.
Element = xPos, yPos, zPos, ElementAmplitude, ElementPhaseWeight
Returns arrayFactor[theta, phi, elementSum]
"""
arrayFactor = np.ones((360, 95))
Lambda = 3e8 / Freq
"""
Returns the efficiency of a rectangular microstrip patch as a percentage. Based on ArrayCalc calc_patchr_eff.m.
References:
Microstrip Antennas, I.J Bahl and P.Bhartia, Published Atrech House, Page 60
Advances in Microstrip and Printed Antennas", Lee and Chen (Ch5)
Some useful numbers :
CONDUCTORS DIELECTRICS
"""
Function to calculate peak directivity.
Also includes some examples that are used to check result.
"""
from math import sin, sqrt, pi, log10, radians
import numpy as np
import patch
def SqrtSinPattern(Theta, Phi, *args):
""" Functions dealing with rectangular patch antenna."""
import math
import matplotlib.pyplot as plt
import numpy as np
from sph2cart1 import sph2cart1
from cart2sph1 import cart2sph1
from math import cos, sin, sqrt
from mpl_toolkits.mplot3d import Axes3D
@johngrantuk
johngrantuk / Patch.py
Created February 27, 2017 15:40
Calculates total E-field pattern for patch as a function of theta and phi
import math
from math import cos, sin, sqrt, atan2, acos
def PatchFunction(thetaInDeg, phiInDeg, Freq, W, L, h, Er):
"""
Taken from Design_patchr
Calculates total E-field pattern for patch as a function of theta and phi
Patch is assumed to be resonating in the (TMx 010) mode.
E-field is parallel to x-axis
@johngrantuk
johngrantuk / readSensor.py
Created March 29, 2016 18:20
Django Channels background worker
from channels import Group
from django.core.management import BaseCommand
import time
#The class must be named Command, and subclass BaseCommand
class Command(BaseCommand):
# Show this when the user types help
help = "Simulates reading sensor and sending over Channel."
# A command must define handle()
@johngrantuk
johngrantuk / sensor.js
Created March 29, 2016 18:11
Django Channels javascript example
$(function() {
// When we're using HTTPS, use WSS too.
var ws_scheme = window.location.protocol == "https:" ? "wss" : "ws";
var chatsock = new ReconnectingWebSocket(ws_scheme + '://' + window.location.host + "/sensor/");
chatsock.onopen = function() {
console.log("Connected!");
$('#sensor').text("Connected!");
chatsock.send("Connected!");
};