Calcuating equally-spaced sums from unevenly-spaced time-series data
1 次查看(过去 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
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Language Support 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!