User:Balluwun-enjoyer
Hello[edit]
Aloha, namaste, greetings, etc.
I work in aerospace research, and generally try to edit within this field. If I have code that can produce pretty plots to help explain things in an article, I'll put some of those plots in the article, and dump the code on this page.
Code Snippets[edit]
Array Factor[edit]
import multiprocessing as mp
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['text.usetex'] = True
# configurable values
freq = 1e9
steering_azimuth = 0
steering_elevation = 0
array_dims = [16,16]
array_lambda_spacing = 2.0
# deduced values
steering_azimuth *= np.pi / 180
steering_elevation *= np.pi / 180
steering_theta = np.arccos(np.cos(steering_azimuth) * np.cos(steering_elevation))
steering_phi = np.arctan2(np.sin(steering_elevation),np.sin(steering_azimuth) * np.cos(steering_elevation))
wavelength = 3e8/freq
k = 2.0 * np.pi * freq / 3e8
d = wavelength * array_lambda_spacing
azimuth_meshgrid, elevation_meshgrid = np.meshgrid(np.linspace(-60,60,800),np.linspace(60,-60,800))
azimuth_meshgrid *= np.pi / 180.
elevation_meshgrid *= np.pi / 180.
theta = np.arccos(np.cos(azimuth_meshgrid) * np.cos(elevation_meshgrid))
phi = np.arctan2(np.sin(elevation_meshgrid),np.sin(azimuth_meshgrid) * np.cos(elevation_meshgrid))
af = np.ndarray(shape=np.shape(phi), dtype=np.complex64)
af.fill(0+0.j)
beta_x = -k * d * np.sin(steering_theta) * np.cos(steering_phi)
beta_y = -k * d * np.sin(steering_theta) * np.sin(steering_phi)
phase_x = k * d * np.sin(theta) * np.cos(phi) + beta_x
phase_y = k * d * np.sin(theta) * np.sin(phi) + beta_y
for n in range(array_dims[0]):
y_comp = np.exp(1.j * n * phase_y)
af_x = np.ndarray(shape=np.shape(phi), dtype=np.complex64)
af_x.fill(0+0.j)
for m in range(array_dims[1]):
af_x += np.exp(1.j * m * phase_x)
af += af_x * y_comp
af = 10*np.log10(np.abs(af))
plt.title(r'$' + f'{array_dims[0]}' + r'\times' + f'{array_dims[1]}' + '\mathrm{\;Array,\;} ' + f'{array_lambda_spacing}' + r'\lambda\mathrm{\; Spacing}$', fontsize=20)
plt.pcolormesh(azimuth_meshgrid * 180. / np. pi, elevation_meshgrid * 180. / np.pi, af, vmin=-50)
plt.xlabel(r"$\mathrm{Azimuth\;(degrees)}$", fontsize=18)
plt.ylabel(r"$\mathrm{Elevation\;(degrees)}$", fontsize=18)
plt.gca().invert_xaxis()
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
cbar = plt.colorbar()
cbar.ax.tick_params(labelsize=16)
cbar.set_label(r"$10\log_{10}\|\mathrm{AF}\|$", fontsize=20, rotation=-90, labelpad=24)
dp_val = int(np.floor(array_lambda_spacing))
pd_val = int(1000 * array_lambda_spacing - dp_val * 1000)
plt.savefig(f'phased-array/{array_dims[0]}x{array_dims[1]}_{dp_val}p{pd_val}_lambda_spacing_planar_array_factor.png', dpi=500, bbox_inches='tight')
plt.close()
Ackley Function[edit]
import numpy as np
import matplotlib.pylab as plt
import matplotlib
matplotlib.rcParams['text.usetex'] = True
x_linspace, y_linspace = np.meshgrid(np.linspace(-5,5,1500),np.linspace(-5,5,1500))
ackley = -20. * np.exp(-0.2 * np.sqrt(0.5 * (x_linspace**2 + y_linspace**2))) - np.exp(0.5 * (np.cos(2 * np.pi * x_linspace) + np.cos(2 * np.pi * y_linspace))) + np.e + 20
plt.pcolormesh(x_linspace, y_linspace, ackley)
plt.xlabel(r"$x$", fontsize=20)
plt.ylabel(r"$y$", fontsize=20)
plt.xticks(fontsize=18)
plt.yticks(fontsize=18)
cbar = plt.colorbar(ticks=np.linspace(0,14,8))
cbar.ax.tick_params(labelsize=18)
cbar.set_label(r"$f\left(x,y\right)$", fontsize=20, rotation=-90, labelpad=24)
contour_lines = plt.contour(x_linspace, y_linspace, ackley, colors='w', levels=np.linspace(2,14,7), linewidths=0.5)
plt.gca().set_aspect(1)
plt.tight_layout()
plt.savefig(f'ackley-function/ackley_2d.png', dpi=500, bbox_inches='tight')
plt.close()