From b9cb47434e96a3ddf66ed33dbb813fc676775785 Mon Sep 17 00:00:00 2001
From: Lewin Probst <info@emirror.de>
Date: Fri, 19 Jul 2019 17:31:27 +0200
Subject: [PATCH] Added function that adds the float offset and signal length
 to the toa data.

---
 .../+data/addFloatOffsetAndSignalLength.m     | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 lib/+artoa/+data/addFloatOffsetAndSignalLength.m

diff --git a/lib/+artoa/+data/addFloatOffsetAndSignalLength.m b/lib/+artoa/+data/addFloatOffsetAndSignalLength.m
new file mode 100644
index 0000000..87d29af
--- /dev/null
+++ b/lib/+artoa/+data/addFloatOffsetAndSignalLength.m
@@ -0,0 +1,50 @@
+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 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);
+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
+
-- 
GitLab