RF antenna azimuth, plotting improvements

This commit is contained in:
2026-04-26 10:28:28 -07:00
parent 6cb6dabcb5
commit d07df25528
13 changed files with 88 additions and 65 deletions
+37 -20
View File
@@ -7,32 +7,49 @@ function f = plotParameters(obj)
end
% Distance and tilt sample points
d_values = [0.01, 0.1, 0.25, 0.5, 0.75, 1, 2, 3, 4, 5:5:100];
% t = zeros(size(d));
t_values = -90:15:90;
d_values = [0.1, 0.5, 1:1:9, 10:2:19, 20:5:49, 50:10:100];
t_values = -90:0.5:90;
a_values = 0:0.5:360;
% Make grid of values of distances and tilts
[d_mg, t_mg] = meshgrid(d_values, t_values);
d = d_mg(:); t = t_mg(:); % flatten
[d_mg, t_mg, a_mg] = meshgrid(d_values, t_values, a_values);
d = d_mg(:); t = t_mg(:); a = a_mg(:); % flatten
% Sample SINR (SNR) function by distances, tilts
% using SINR method with no other transmitters defined is equivalent to SNR
s_x = obj.sensorPerformance(d, t); % don't define other sensors
% Sample received signal strength (no interference or noise)
s_x = obj.RSS(d, t, a);
s_x = reshape(s_x, size(d_mg));
% Plot resultant sigmoid curves
[T, A] = meshgrid(t_values, a_values); % Naz x Nel
Tr = deg2rad(T);
Ar = deg2rad(A);
figure;
plot(d_values.', s_x(repmat((t_values == 0).', 1, size(d_values, 2))), "LineWidth", 2);
grid("on");
title("SNR vs Distance at 0 tilt");
xlabel("Distance (m)");
ylabel("SNR (dB)");
hold("on");
figure;
surf(d_mg, t_mg, s_x);
for ii = 1:numel(d_values)
% geometry (your "tilt from nadir, stack by distance")
X = d_values(ii) * cos(Ar) .* sin(Tr);
Y = d_values(ii) * sin(Ar) .* sin(Tr);
Z = d_values(ii) * ones(size(X));
% evaluate or extract this slice
Fslice = squeeze(s_x(:, ii, :))';
% plot as its own surface
h = surf(X, Y, Z, Fslice);
h.EdgeColor = 'none';
h.FaceColor = 'interp';
h.FaceAlpha = 0.25;
end
colormap(turbo);
colorbar;
daspect([1 1 0.2]) % Separate Z further for more distinct layers
xlabel('X'); ylabel('Y'); zlabel('Distance (m)');
set(gca,'ZDir','reverse');
view(3);
axis("vis3d");
grid("on");
title("SNR vs Distance and Tilt");
xlabel("Distance (m)");
ylabel("Tilt (deg)");
zlabel("SNR (dB)");
scatter3(0, 0, 0, 'rx');
hold("off");
end