How to speed up the computing time?
Ältere Kommentare anzeigen
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 Kommentar
Julius Muschaweck
am 19 Jul. 2021
Did you check out the "Run and Time" feature, under "HOME" -> "CODE", to determine where your code really spends its time?
Akzeptierte Antwort
Weitere Antworten (1)
Walter Roberson
am 19 Jul. 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 Kommentare
Riccardo Tronconi
am 19 Jul. 2021
Walter Roberson
am 19 Jul. 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);
Kategorien
Mehr zu Logical finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!