MATLAB Answers

0

Incomplete time series, how to fill in NaN in data column?

Latest activity Commented on by Ingrid
on 1 Feb 2016
Hi
I have a time series consisting of date, time, longitude and latitude. Due to errors there are gaps in my date/time but the data just continue at the next date when a position is registered. What I want is to get a complete time serie (for a year) with NaN values in Long and Lat columns when a position is missing. The data is registerede (when no errors) every three hours, so I have constructed a Date/Time vector using datenum, with values every three hours, so 2920 values (8*365) for a whole year. Now I want to put in NaN in my Long and Lat on the times that matches the errors - how can I do that? I have looked at similar questions in here, but they all seem to be a bit different or just wanting to fill in NaN in the time column.
Here is a couple of lines from my data:
Date, Time, Lat, Long, Voltage(V)
01-30-2014,18:00:33,73.09214,-54.11712,N/A
01-30-2014,21:00:33,73.09213,-54.11710,N/A
01-31-2014,00:00:34,73.09212,-54.11719,N/A
02-24-2014,00:00:33,73.09113,-54.12063,N/A
02-24-2014,03:00:33,73.09112,-54.12063,N/A
02-24-2014,06:00:33,73.09113,-54.12068,N/A
So what i want is to fill in the dates from 02-01-2014 to 02-23-2014 with date and time (I have done that) and then fill in NaN in the Long and Lat columns.
Would be gratefull for help...

  0 Comments

Sign in to comment.

1 Answer

Answer by Ingrid
on 1 Feb 2016
 Accepted Answer

you could just first create a NaN matrix and then fill in your original values at the dates that you have them available
newData = nan(length(timeVector),2);
[~,Ia,Ib] = intersect(round(originalData(:,1:2)*100),round(timeVector*100));
newData(Ib,:) = originalData(Ia,3:4);

  2 Comments

Thank you so much, it works, pretty simple, but i'm relatively new in Matlab.. Thanks....
If this helped you, could you please accept the answer so that it is marked as solved so other people know this no longer requires an answer. Thank you

Sign in to comment.