Matching 2 date column in Matlab

조회 수: 4 (최근 30일)
Samantha Chong
Samantha Chong 2016년 1월 12일
댓글: Samantha Chong 2016년 1월 21일
Hi, I have a matrix called "a" which consists of a column that should contain the date and time from (01/01/2015 00:00:00) to (31/12/2015 23:54:00), with interval 6mins, the 2nd and 3rd columns contain the measured water level in "m" of the corresponding date in the first column. The dates and time in the first column are not all in the interval of 6 mins. So, for example, in between row 28321 and row 28323, there are missing dates with interval of 6 mins which I would like to fill in. My aim is to add the missing dates into column 1 so I can have a column with complete date and time range from (01/01/2015 00:00:00) to (31/12/2015 23:54:00), with interval of 6mins. Attached is the example of my array. Thanks!

답변 (1개)

Peter Perkins
Peter Perkins 2016년 1월 16일
Samantha, your question isn't all that clear. The first thing is I recommend you use a table, not a cell array. With that, and using datetimes, here's one way to do what you might be asking for:
Create some short data with two gaps.
>> d = datetime(2015,2,28,23,[0 6 24 30 48 54]',0);
>> x = [.91; .91; .73; .74; .68; .66];
>> y = [.97; .93; .74; .76; .67; .65];
>> t = table(d,x,y)
t =
d x y
____________________ ____ ____
28-Feb-2015 23:00:00 0.91 0.97
28-Feb-2015 23:06:00 0.91 0.93
28-Feb-2015 23:24:00 0.73 0.74
28-Feb-2015 23:30:00 0.74 0.76
28-Feb-2015 23:48:00 0.68 0.67
28-Feb-2015 23:54:00 0.66 0.65
Find the gaps in the data.
>> dt = diff(t.d)
dt =
00:06:00
00:18:00
00:06:00
00:18:00
00:06:00
>> gaps = d(find(dt~= minutes(6)))
gaps =
28-Feb-2015 23:06:00
28-Feb-2015 23:30:00
Create a time vector with no gaps, broadcast the x and y values out to similarly-sized vectors.
>> dComplete = (d(1):minutes(6):d(end))';
>> [~,i] = ismember(d,dComplete);
>> xComplete = NaN(size(dComplete));
>> xComplete(i) = x;
>> yComplete = NaN(size(dComplete));
>> yComplete(i) = y;
>> tComplete = table(dComplete,xComplete,yComplete)
tComplete =
dComplete xComplete yComplete
____________________ _________ _________
28-Feb-2015 23:00:00 0.91 0.97
28-Feb-2015 23:06:00 0.91 0.93
28-Feb-2015 23:12:00 NaN NaN
28-Feb-2015 23:18:00 NaN NaN
28-Feb-2015 23:24:00 0.73 0.74
28-Feb-2015 23:30:00 0.74 0.76
28-Feb-2015 23:36:00 NaN NaN
28-Feb-2015 23:42:00 NaN NaN
28-Feb-2015 23:48:00 0.68 0.67
28-Feb-2015 23:54:00 0.66 0.65
  댓글 수: 1
Samantha Chong
Samantha Chong 2016년 1월 21일
Hi Peter,
Thanks for your reply. Thats exactly what I'm looking for :)
Cheers, Sam

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Dates and Time에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by