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