run.m 1.75 KiB
function [] = run(~, ~)
%RUN Summary of this function goes here
% Detailed explanation goes here
global artoaWorkspace artoaDataInput;
%% Validate soundsource table input
[success, message] = artoa.controller.track.parameter.validateCombinationsInput( ...
artoaWorkspace.trackParameter.soundsourceCombinations ...
);
if ~success
errordlg(message, 'Input error');
return;
end
%% Prepare variable if required
if ~artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'trajectories'})
artoaWorkspace.trajectoryOutput.trajectories = {};
end
%% Calculate and append track
trajectory = artoa.float.calculateTrajectory( ...
artoaWorkspace.float, ...
artoaWorkspace.toaData, ...
artoaWorkspace.filteredSoundsources, ...
artoaWorkspace.trackParameter, ...
artoaDataInput.ini.leapseconds ...
);
if trajectory == false
errordlg( [ ...
'The trajectory could not be calculated. ' ...
'Please check the inputs of the tracking parameter window and make sure ' ...
' the combinations you chose have applied TOAs!' ...
], ...
'Trajectory error' ...
);
return;
end
trajectoryObject = struct();
trajectoryObject.trackParameter = artoaWorkspace.trackParameter;
% trajectory contains [lat lon]
trajectoryObject.latitude = trajectory(:, 1);
trajectoryObject.longitude = trajectory(:, 2);
trajectoryObject.id = length(artoaWorkspace.trajectoryOutput.trajectories) + 1;
trajectoryObject.hidden = false;
% store to workspace
artoaWorkspace.trajectoryOutput.trajectories{end + 1} = trajectoryObject;
%% Open track gui
artoa.controller.track.trajectoryOutput.open();
%% Plot
artoa.controller.track.trajectoryOutput.plot();
%% Plot trajectory
%artoa.controller.track.trajectoryOutput.plotTrajectory(trajectory);
end