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 件のコメント
Cris LaPierre
2022 年 8 月 5 日
編集済み: Cris LaPierre
2022 年 8 月 5 日
Nice job and nice solution. You are very welcome.
その他の回答 (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!