Skip to content
Snippets Groups Projects
save.m 3.43 KiB
function [success] = save()
%SAVE Test function for saving a RFC file.
% Uses a test rfb data file from the data folder. Uses only dummy fields
% for saving, because the actual algorithm for creating the data is not yet
% implemented.

[currentDirectory, ~, ~] = fileparts(mfilename('fullpath'));
dataFileName = fullfile(currentDirectory, '..', 'testdata', 'input', '0272.rfb');

rfb = artoa.load.rfb(dataFileName);
% load test mat file exported from old version of artoa3
load(fullfile(currentDirectory, '..', 'testdata', 'input', 'float_0272_globals.mat'));

track = 2;

% get global variables that have been imported from the track data
global TEMP_REF TEMP_DATE TEMP_DEL TEMP_SEL TEMP PRES_DEL PRES_SEL PRES
global TRAJ afoffbeg afoffend

% IFLAG MESSAGE_NUMBER MESSAGE_DATE TEMP PRES LAT LON u v w
lineCount = size(TEMP_REF, 1);
data = [];
data(:, 1) = repmat(999, lineCount, 1);
data(:, 2) = TEMP_REF;
data(:, 3) = TEMP_DATE;
data(:, 4) = repmat(-9.99, lineCount, 1);
indices = (~TEMP_DEL&(TEMP_SEL~=0));
data(indices, 4) = TEMP(indices);
data(:, 5) = repmat(-999, lineCount, 1);
indices = (~PRES_DEL&(PRES_SEL~=0));
data(indices, 5) = PRES(indices);
data(:, 6) = repmat(999, lineCount, 1);
data(:, 7) = repmat(999, lineCount, 1);
data(:, 8) = repmat(999, lineCount, 1);
data(:, 9) = NaN(1, lineCount);
data(:, 10) = repmat(999, lineCount, 1);


%% RFC without trajectory
saveToFilename = fullfile(currentDirectory, '..', 'testdata', 'output', 'testOutput.rfc');

success = artoa.save.rfc(saveToFilename, rfb.FLOAT, data);

%% Setup trajectory object

trajectory = struct();
trajectory.trackingMethod = TRAJ(track).tmethod;
trajectory.interval = TRAJ(track).interval;
trajectory.gapSize = TRAJ(track).gapsize;
trajectory.interpolationMethod = TRAJ(track).imethod;
trajectory.soundSpeedMethod = TRAJ(track).ssmethod;
trajectory.dopplerCorrection = TRAJ(track).doppler;
trajectory.velocityMethod = TRAJ(track).vmethod;
trajectory.status = TRAJ(track).status;
% The toaData is not required for this test.
%trajectory.toaData = TRAJ(track).toa;
trajectory.latitude = TRAJ(track).lat;
trajectory.longitude = TRAJ(track).lon;
trajectory.date = TRAJ(track).date;
trajectory.pressure = TRAJ(track).pres;
trajectory.temperature = TRAJ(track).temp;
trajectory.iflag = TRAJ(track).iflag;
trajectory.clockError = TRAJ(track).clockerror;
trajectory.misfits = TRAJ(track).misfits;
trajectory.residualsPlotted = TRAJ(track).plotresiduals;
trajectory.velocityTotal = TRAJ(track).vtot;
trajectory.velocityLatitude = TRAJ(track).vlat;
trajectory.velocityLongitude = TRAJ(track).vlon;
trajectory.velocityVertical = TRAJ(track).vvert;
trajectory.velocityVerticalDate = TRAJ(track).vvert_date;
trajectory.additionalFloatOffsetBegin = afoffbeg;
trajectory.additionalFloatOffsetEnd = afoffend;

% create soundSourceCombination struct
sourceCombination = struct();
for i = 1:length(TRAJ(track).comb)
    sourceCombination(i).sources = TRAJ(track).comb(i).sources;
    sourceCombination(i).begin = TRAJ(track).comb(i).begin;
    sourceCombination(i).end = TRAJ(track).comb(i).end;
    sourceCombination(i).referencePosition = TRAJ(track).comb(i).refpos;
    sourceCombination(i).soundSpeed = TRAJ(track).comb(i).soundspeed;
end

% add it to the trajectory
trajectory.soundSources = sourceCombination;



%% RFC including trajectory
saveToFilename = fullfile(currentDirectory, '..', 'testdata', 'output', 'testOutputIncludingTrajectory.rfc');

success = success && artoa.save.rfc(saveToFilename, rfb.FLOAT, data, trajectory);

end