Skip to content
Snippets Groups Projects
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