I've several sensors positioned at various points in the $X$,$Y$-Cartesian coordinate system, and I've experienced a problem to inject a planar Sine wave to the spatially positioned sensors, the sensor position has known to me and I provide the sensor position as follows:
x = [2.1, 2.1, -0.7, -2.1, -2.1, -0.7, -0.7, 0.6, -5.7, -8.5, -11.4, -7.7, -6.3, -3.5, -2.1, -3.4, 5.4, -5.2, -8.9, -10,
-10, 5.4, 5.4, -0.8, -3.6, -6.2, -6.8, -12.2, -17.1, -19, -18.6, -13.5, 14.8, 14.8]
y = [6.65, 4.15, 3.65, 5.05, 7.25, 8.95, 11.85, 8.95, -2, -0.6, -0.9, 1.25, 2.9, 0.9, -0.1, -1.4, 9.2, 5.2, 4.8, 6.1,
8.9, 13.3, 17.1, 17.9, 13.8, -9.3, -5.2, -3.6, -3.6, -0.9, 3.7, 3.7, -1.8, 5.7]
The sensor's position is at irregular intervals and spatial resolution has not been maintained here. What would be the possible approach to inject a plane wave to these sensors structure?
The equation for the 2D Sine wave is, $Z = A \sin(k_x X + k_y Y - \omega t)$, Wavenumber,$K = 2 \pi f/c$, for example, the temporal frequency, $f = 10$ Hz or $50$ Hz, and speed of the wave vector,$c = 50$ m/s, now if I draw the 2D K-space plot with the following script
f = 10; # frequency
fs = 100; # sample frequency
Ts = 1/ fs; # sample period
t = np.arange(0, 25, Ts); # time index
lamda = 12 # Meters
c = f * lamda # 40; # speed of wave
w = 2 * np.pi * f; # angular frequency
k = w / c # 2*np.pi/lamda # wave number
amp = 1
x = [2.1, 2.1, -0.7, -2.1, -2.1, -0.7, -0.7, 0.6, -5.7, -8.5, -11.4, -7.7, -6.3, -3.5, -2.1, -3.4, 5.4, -5.2, -8.9, -10,
-10, 5.4, 5.4, -0.8, -3.6, -6.2, -6.8, -12.2, -17.1, -19, -18.6, -13.5, 14.8, 14.8]
y = [6.65, 4.15, 3.65, 5.05, 7.25, 8.95, 11.85, 8.95, -2, -0.6, -0.9, 1.25, 2.9, 0.9, -0.1, -1.4, 9.2, 5.2, 4.8, 6.1,
8.9, 13.3, 17.1, 17.9, 13.8, -9.3, -5.2, -3.6, -3.6, -0.9, 3.7, 3.7, -1.8, 5.7]
dx = np.array(x);
M = len(dx)
dy = np.array(y);
N = len(dy)
[xx, yy] = np.meshgrid(x, y);
theta = 60; # in degrees::: direction of propagation
kxx = k * np.around(np.cos(math.radians(theta)), decimals=3) # use this method to find exact Zero
kyy = k * np.around(np.sin(math.radians(theta)), decimals=3)
# Single 2D sine wave data
t = 0.5
sig = np.sin(kxx * xx + kyy * yy - w * t); # plane wave
plt.figure()
c = plt.imshow(sig, cmap='seismic', vmin=sig.min(), vmax=sig.max(),
extent=[min(x), max(x), min(y), max(y)],
interpolation='nearest', origin='lower') #
plt.colorbar(c)
plt.rcParams.update({'font.size': 18})
plt.xlabel("Distance, $X$-axis [Meter]", fontsize=18)
plt.ylabel("Distance,$Y$-axis [Meter]", fontsize=18)
plt.title(f'injected Wave_angle={theta}_degree', weight="bold") # 'Channel %d' %i
figure = plt.gcf()
figure.set_size_inches(13, 8)
When the angle of propagation= 0 degree then the injected plane wave looks as and when the angle of propagation= 60 degree then the injected plane wave looks as .
Is that the right process to inject the array of sensors? In which process the noise/non-periodicity can be removed from the figures? Thanks in advance.