How to speed up the computing time?
Afficher commentaires plus anciens
Dear guys! My code is computationally to expensive and I'm looking for your help.
I have 3 input table with different legths in which each column represents:
1- position in X
2- position in Y
3- timestamp (in nanosec)
What I'm looking for is to create one table with the position in X and Y of the three tags with a common timestamp.
To do so I find the absolute maximum and minimum of the timestamps and then I create a coloumn vector as it follows A=min:seconds(5):max.
At this point, for each interval with the find function I check how many timestamp of the three tags belongs to it (es. find(A(i) > = tag3(:,3) & A(i+1)< tag3(.,3)). The output of the find thanks to the mean function allows me to calculate the mean position in X and Y inside this time interval.
I tested this procedure with a subset of my real data set and everything is as expected but unfortunately using my entire dataset It takes hours to be fully computed.
How could I speed up the entire running time?
Thanks to all of you in advance for your time ! :)
1 commentaire
Julius Muschaweck
le 19 Juil 2021
Did you check out the "Run and Time" feature, under "HOME" -> "CODE", to determine where your code really spends its time?
Réponse acceptée
Plus de réponses (1)
Walter Roberson
le 19 Juil 2021
discretize() all of the A values at the same time, getting out group number G
Now you can
grpstats([X(:), Y(:)], G, @(x) mean(x,1))
and the result should be a max(G) by 2 array where first column is mean of X for the group and second column is mean of Y for the group.
2 commentaires
Riccardo Tronconi
le 19 Juil 2021
Walter Roberson
le 19 Juil 2021
Assuming that A is a vector in monotonic increasing order:
G = discretize(tag3, A);
XYmean_per_group = grpstats([X(:), Y(:)], G, @(x) mean(x,1));
Xmean_per_group = XYmean(:,1);
Ymean_per_group = XYmean(:,2);
Catégories
En savoir plus sur Logical 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!