Calcuating equally-spaced sums from unevenly-spaced time-series data
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
dormant
am 4 Aug. 2022
Bearbeitet: Cris LaPierre
am 5 Aug. 2022
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:
Akzeptierte Antwort
Cris LaPierre
am 4 Aug. 2022
Bearbeitet: Cris LaPierre
am 5 Aug. 2022
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 Kommentare
Cris LaPierre
am 5 Aug. 2022
Bearbeitet: Cris LaPierre
am 5 Aug. 2022
Nice job and nice solution. You are very welcome.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Language Support finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!