Calcuating equally-spaced sums from unevenly-spaced time-series data

조회 수: 2 (최근 30일)
I need to create an equally-spaced vector of values which are the sums from a vector of unequally-spaced values.
More specifically, I have a file which has the number of bytes received and the time they were received. There are usually more than a million lines in the file. I want to plot the data rate every five minutes. To make things more difficult, the timestamps might not always be in order.
This is my code so far. I could write a loop to populate kbps, but is there an easier way to do it?
D = textscan( fid, '%f %d\n' );
datim = D{1}; % Posix timestamp
bytes = D{2}; % Number of bytes
t1 = dateshift(datetime(min(datim), 'ConvertFrom', 'posixtime'), 'start','day');
t2 = dateshift(datetime(max(datim), 'ConvertFrom', 'posixtime'), 'end','day');
t = t1:minutes(5):t2;
kbps = nan( size(t) );
And here are the variables:

채택된 답변

Cris LaPierre
Cris LaPierre 2022년 8월 4일
편집: Cris LaPierre 2022년 8월 5일
I would put your datetime and bytes into a table (consider cell2table). Convert your times to datetime, and then use sortrows to place them in order (if desired).
With the data in a table, you can use groupsummary to compute the number of datapoints in bins you specify, where groupbins is the bin edges.
You could use the data you already have captured in t for your edges:
Consider sharing your data and we can test actual code. You can attach it using the paperclip icon.
  댓글 수: 4
dormant
dormant 2022년 8월 5일
Here is my working code. Many, many, many thanks.
D = readtable( fileSniff );
D = sortrows(D,1);
D.Var1 = datetime( D.Var1, 'ConvertFrom', 'posixtime' );
tBeg = dateshift(D.Var1(1), 'start', 'hour');
tEnd = dateshift(D.Var1(end), 'end', 'hour');
T = tBeg:minutes(5):tEnd;
G = groupsummary(D,'Var1',T,'sum');
Cris LaPierre
Cris LaPierre 2022년 8월 5일
편집: Cris LaPierre 2022년 8월 5일
Nice job and nice solution. You are very welcome.

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

추가 답변 (0개)

카테고리

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

태그

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by