From 61eea945ce706f5176a8507bd1568cacaf4cb26f Mon Sep 17 00:00:00 2001
From: Lewin Probst <info@emirror.de>
Date: Tue, 17 Sep 2019 15:31:30 +0200
Subject: [PATCH] Demystified dmy2rd and hms2rd. Updated documentation in
 +convert/rafosJulianDay

---
 lib/+artoa/+convert/dmy2rd.m                  | 64 ++++++++++++-------
 lib/+artoa/+convert/hms2rd.m                  | 30 +++++----
 lib/+artoa/+convert/rafosJulianDay.m          |  3 +
 .../+data/addFloatOffsetAndSignalLength.m     |  3 +
 4 files changed, 65 insertions(+), 35 deletions(-)

diff --git a/lib/+artoa/+convert/dmy2rd.m b/lib/+artoa/+convert/dmy2rd.m
index 799c2e0..8f1072d 100644
--- a/lib/+artoa/+convert/dmy2rd.m
+++ b/lib/+artoa/+convert/dmy2rd.m
@@ -1,7 +1,5 @@
-function rjul = dmy2rd(day,mon,yr)
-%
-%function rjul = dmy2rd(day,month,yr)
-%
+function [rafosJulianDay] = dmy2rd(pDay, pMonth, pYear)
+%DMY2RD Converts the given parameters to rafos julian day.
 %     converts (day, month, year) to RAFOS JULIAN day (rjul)
 %     RAFOS JULIAN day = julian day (ref. to 24 nov 4713BC) - 2440000
 %
@@ -11,27 +9,49 @@ function rjul = dmy2rd(day,mon,yr)
 %          and converted to RAFOS JULIAN day   20.03.91 kst
 %          This routine is valid forever ....
 %
-%   NOTE:  this RAFOS JULIAN day = old ARGOS day - 6718 + 1
+%   NOTE:   this RAFOS JULIAN day = old ARGOS day - 6718 + 1
+%
+%   NOTE:   The rafos day has been redefined, to shorten numbers.
+%           It has been:
+%           rafosJulianDay = rafosJulianDay - 2440000
+%           but is now:
+%           rafosJulianDay = rafosJulianDay - 2451545
+%
+%   Parameters:
+%       pDay (int)      The day.
+%       pMonth (int)    The month.
+%       pYear (int)     The year.
+%
+%   Returns:
+%       rafosJulianDay (int)        The converted rafos julian day.
+
+%% Parameter check
 
 if (nargin == 1)
-  d = day;
-  day = d(:,1);
-  mon = d(:,2);
-  yr = d(:,3);
+  d = pDay;
+  pDay = d(:,1);
+  pMonth = d(:,2);
+  pYear = d(:,3);
 end
-day = day(:);  mon = mon(:);  yr = yr(:);
 
-gttwo = find( mon > 2 );
-letwo = find( mon < 3 );
-mon(gttwo) = mon(gttwo) - 3;
-mon(letwo) = mon(letwo) + 9;
-yr(letwo) = yr(letwo) - 1;
+%% Setup variables
+pDay = pDay(:);
+pMonth = pMonth(:);
+pYear = pYear(:);
+
+%% Convert
+gttwo = find( pMonth > 2 );
+letwo = find( pMonth < 3 );
+pMonth(gttwo) = pMonth(gttwo) - 3;
+pMonth(letwo) = pMonth(letwo) + 9;
+pYear(letwo) = pYear(letwo) - 1;
 
-ic = floor( yr / 100 );
-iy = yr - 100*ic;
-rjul = floor((146097*ic)/4) + floor((1461*iy)/4) + floor((153*mon+2)/5) ...
-    + day + 1721119;
+ic = floor( pYear / 100 );
+iy = pYear - 100 * ic;
+rafosJulianDay = floor((146097 * ic) / 4) ...
+    + floor((1461 * iy) / 4) ...
+    + floor((153 * pMonth + 2) / 5) ...
+    + pDay ...
+    + 1721119;
 
-% rjul = rjul - 2440000;
-% OB redefined rafos day, to shorten numbers
-rjul = rjul - 2451545;
\ No newline at end of file
+rafosJulianDay = rafosJulianDay - 2451545;
\ No newline at end of file
diff --git a/lib/+artoa/+convert/hms2rd.m b/lib/+artoa/+convert/hms2rd.m
index 871e0c9..2630cad 100644
--- a/lib/+artoa/+convert/hms2rd.m
+++ b/lib/+artoa/+convert/hms2rd.m
@@ -1,17 +1,21 @@
-function rd=hms2rd(h,m,s)
-%HMS2RD  Convert hours minutes seconds into rafos day
+function [rafosJulianDay] = hms2rd(pHour, pMinute, pSecond)
+%HMS2RD  Converts hours, minutes and seconds into rafos day.
+%
+%   Parameters:
+%       pHour (int) The hour.
+%       pMinute (int) The minute.
+%       pSecond (int) The second.
+%
+%   Returns:
+%       rafosJulianDay (double) The converted time.
 
-% sz=size(hms);
-% if sz(2)~=3
-%   hms=hms';
-% end
+%% Convert
+hours = pHour * 60 * 60;
+minutes = pMinute * 60;
+seconds = pSecond;
 
-hours=h*60*60;
-minutes=m*60;
-seconds=s;
+dayInSeconds = 24 * 60 * 60;
 
-dayins=24*60*60;
+rafosJulianDay = (hours + minutes + seconds) / dayInSeconds;
 
-rd=(hours+minutes+seconds)/dayins;
-
-% end hms2rd
+end
\ No newline at end of file
diff --git a/lib/+artoa/+convert/rafosJulianDay.m b/lib/+artoa/+convert/rafosJulianDay.m
index 6272c98..6a797de 100644
--- a/lib/+artoa/+convert/rafosJulianDay.m
+++ b/lib/+artoa/+convert/rafosJulianDay.m
@@ -3,6 +3,9 @@ function [ddmmyyyy] = rafosJulianDay(pRafosJulianDay)
 %
 %   Parameters:
 %       pRafosJulianDay (double) The input time format.
+%
+%   Returns:
+%       ddmmyyyy (matrix) The 1D vector, containing day month and year.
 
 offset = 2451545;
 
diff --git a/lib/+artoa/+data/addFloatOffsetAndSignalLength.m b/lib/+artoa/+data/addFloatOffsetAndSignalLength.m
index b86a09d..5b6df68 100644
--- a/lib/+artoa/+data/addFloatOffsetAndSignalLength.m
+++ b/lib/+artoa/+data/addFloatOffsetAndSignalLength.m
@@ -31,6 +31,9 @@ end
 
 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;
-- 
GitLab