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