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

 Réponse acceptée

Walter Roberson
Walter Roberson le 13 Avr 2021

0 votes

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 commentaire

Tarek
Tarek le 13 Avr 2021
thanks, Mat2cell function is perfect, I did not know about it before.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by