MATLAB Answers

how to speed up code

1 view (last 30 days)
Tarek
Tarek on 13 Apr 2021
Commented: Tarek on 13 Apr 2021
I am dealing with big amount of data where the for loop takes a long time to process.
tic
% index_tracks_matching_temp is a vector of 60 million (1*60m), also track_length_dns is 150k long
index_points_matching_temp=index_points_matching;
for i=1:1000 % just first 100 tracks %% or for i=1:track_length_DNS
mycell_track_index{i,1}=index_tracks_matching_temp(1:track_length_DNS(i));
mycell_points_index{i,1}=index_points_matching_temp(1:track_length_DNS(i));
index_tracks_matching_temp(1:track_length_DNS(i))=[];
index_points_matching_temp(1:track_length_DNS(i))=[];
end
clear index_tracks_matching_temp index_tracks_matching_temp
toc
% processing for i=1000 takes 30 seconds and I need to process up to 500k that's why i need a different way to do it. I always used loops so im not sure about other ways to do it

Accepted Answer

Walter Roberson
Walter Roberson on 13 Apr 2021
If I read the code correctly, then
numused = sum(track_length_DNS);
mycell_tracks_index = mat2cell(index_tracks_matching(1:numused), 1, track_length_DNS);
mycell_points_index = mat2cell(index_points_matching(1:numused), 1, track_length_DNS);
with no loop.
  1 Comment
Tarek
Tarek on 13 Apr 2021
thanks, Mat2cell function is perfect, I did not know about it before.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by