42 lines
1.2 KiB
Matlab
42 lines
1.2 KiB
Matlab
function f = plot(obj, ind, f)
|
|
arguments (Input)
|
|
obj (1,1) {mustBeA(obj, "sensingObjective")};
|
|
ind (1, :) double = NaN;
|
|
f (1,1) {mustBeA(f, "matlab.ui.Figure")} = figure;
|
|
end
|
|
arguments (Output)
|
|
f (1,1) {mustBeA(f, "matlab.ui.Figure")};
|
|
end
|
|
|
|
% Create axes if they don't already exist
|
|
f = firstPlotSetup(f);
|
|
|
|
normalized = obj.values ./ sum(obj.values, "all");
|
|
cRange = [min(normalized, [], "all"), max(normalized, [], "all")];
|
|
|
|
% Plot gradient on the "floor" of the domain
|
|
if isnan(ind)
|
|
ax = f.CurrentAxes;
|
|
hold(ax, "on");
|
|
o = surf(ax, obj.X, obj.Y, zeros(size(obj.X)), normalized, "EdgeColor", "none");
|
|
o.HitTest = "off";
|
|
o.PickableParts = "none";
|
|
clim(ax, cRange);
|
|
hold(ax, "off");
|
|
else
|
|
ax = f.Children(1).Children(ind(1));
|
|
hold(ax, "on");
|
|
o = surf(ax, obj.X, obj.Y, zeros(size(obj.X)), normalized, "EdgeColor", "none");
|
|
o.HitTest = "off";
|
|
o.PickableParts = "none";
|
|
clim(ax, cRange);
|
|
hold(ax, "off");
|
|
end
|
|
|
|
% Add to other perspectives
|
|
if size(ind, 2) > 1
|
|
for ii = 2:size(ind, 2)
|
|
copyobj(o, f.Children(1).Children(ind(ii)));
|
|
end
|
|
end
|
|
end |