53 lines
1.4 KiB
Matlab
53 lines
1.4 KiB
Matlab
function f = plotParameters(obj)
|
|
arguments (Input)
|
|
obj (1, 1) {mustBeA(obj, "rfSensor")};
|
|
end
|
|
arguments (Output)
|
|
f (1, 1) {mustBeA(f, "matlab.ui.Figure")};
|
|
end
|
|
|
|
% Agent altitude layers and angle sample points
|
|
alt_values = 10.^[1, 2, 3, 4];
|
|
t_values = 0:2.5:87.5; % 0=nadir (center), <90=near horizon (edge)
|
|
a_values = 0:2.5:360;
|
|
|
|
[T, A] = meshgrid(t_values, a_values); % Naz x Nel
|
|
Ar = deg2rad(A);
|
|
|
|
f = figure;
|
|
hold("on");
|
|
|
|
for ii = 1:numel(alt_values)
|
|
alt = alt_values(ii);
|
|
|
|
% For agent at altitude alt, ground target at tilt T has slant distance:
|
|
D = alt ./ cosd(T);
|
|
|
|
% Compute RSS for each (d, t, a) triple
|
|
rss = obj.RSS(D(:), T(:), A(:));
|
|
Fslice = reshape(rss, size(D));
|
|
|
|
% Disc geometry: t=0 (nadir) -> center, t~90 (horizon) -> edge
|
|
r = log10(alt) .* T ./ 90;
|
|
X = r .* cos(Ar);
|
|
Y = r .* sin(Ar);
|
|
Z = log10(alt) * ones(size(X));
|
|
|
|
hs = surf(X, Y, Z, Fslice);
|
|
hs.EdgeColor = 'none';
|
|
hs.FaceColor = 'interp';
|
|
hs.FaceAlpha = 0.25;
|
|
end
|
|
|
|
colormap(turbo);
|
|
colorbar;
|
|
daspect([1 1 0.2]);
|
|
xlabel('X (log_{10} units)'); ylabel('Y (log_{10} units)'); zlabel('log_{10} Altitude (m)');
|
|
set(gca, 'ZDir', 'reverse');
|
|
view(3);
|
|
axis("vis3d");
|
|
grid("on");
|
|
scatter3(0, 0, 0, 'rx');
|
|
hold("off");
|
|
end
|