function [ correctedToa ] = addFloatOffsetAndSignalLength(pFloatRfb, pToa) %ADDFLOATOFFSETANDSIGNALLENGTH Adds the float offset, substracts signal length % % Parameters: % pFloatRfb (struct) The RFB file loaded using artoa.load.rfb function. % pToa (double) The 1D Toa vector. %% Initialize return variables correctedToa = false; %% Parameter check parameterError = false; if (~isstruct(pFloatRfb)) warning([mfilename ': Given rfb data is not a struct!']); parameterError = true; end if (~isnumeric(pToa)) warning([mfilename ': Given TOA data is not numeric!']); parameterError = true; end if (parameterError) return; else clear parameterError; end %% Add offset and subtract signal length signalLength = pFloatRfb.FLOAT.signal_length; floatOffset = pFloatRfb.FLOAT.offset(:, 6); if size(floatOffset, 1) == 1 floatOffset = [floatOffset; NaN]; end schedule = pFloatRfb.FLOAT.schedule; step = schedule / 24; cycle = pFloatRfb.FLOAT.cycle; cycleBegin = artoa.convert.dmy2rd(cycle(6), cycle(5), cycle(4)) ... + artoa.convert.hms2rd(cycle(7), cycle(8), 0); cycleEnd = artoa.convert.dmy2rd(cycle(13), cycle(12), cycle(11)) ... + artoa.convert.hms2rd(cycle(14), cycle(15), 0); toaDate = repmat([cycleBegin:step:cycleEnd]', 6, 1); offsetCorrection = ... ((floatOffset(2) - floatOffset(1)) / (cycleEnd - cycleBegin)) ... * (toaDate - min(toaDate)) + floatOffset(1); correctedToa = pToa + offsetCorrection - signalLength; end