Searching a huge array with a for loop - How to increase speed?
Afficher commentaires plus anciens
Hi!
I have a humongous datetime array containing upwards of a hundred million entries of the timestamps of financial market quote updates. What I want to do is count the number of updates falling into each hour of trading. I'm doing it as follows which works but is glacially slow.
t = '20130102 00:00:00:000'; %start date
te = '20170731 23:00:00:000'; %end date
kl = datetime(t, 'InputFormat','yyyyMMdd HH:mm:ss:SSS'):hours(1):datetime(te, 'InputFormat','yyyyMMdd HH:mm:ss:SSS'); %creating an array with each time interval that is to be searched
ys = zeros(length(kl)+1,1); %preassigning the array that will contain the solutions
c = 1; %variable counting through search intervals
for k=1:length(kl);
ys(c) = sum(isbetween(Time,kl(c),kl(c)+hours(1))); %counting all entries between a one hour period an a specific day and saving the it in variable ys
c=c+1
end
So essentially I'm making matlab search the huge array 'Time' and count all the entries within all one hour periods.
Is there anyway to make my code more efficient to speed up the process? One solution would be to just make Matlab go through the Database 23 times (for each trading hour) instead of 40000 times but I can't figure out how to do that.
4 commentaires
madhan ravi
le 10 Nov 2018
Upload a sample of your data Time
madhan ravi
le 10 Nov 2018
are you sure its working? I'm trying to run your code but facing errors
Ben
le 10 Nov 2018
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Dates and Time dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!