Azzera filtri
Azzera filtri

Faster way to concatenate arrays with unknown size ?

9 visualizzazioni (ultimi 30 giorni)
In my application, I have a huge for loop and at each iteration, I concatenate the 'result' array with the matrix obtained at the current loop. The function returns this 'result' array at the end of the for loop. Is there a way I can speed things up because concatenating seems very slow when the result array gets large enough. I won't know the final size of the array but I will know the size of the matrix at the current loop if that helps..

Risposta accettata

Walter Roberson
Walter Roberson il 7 Lug 2016
If you know the final data size then pre-allocate the output and store into the array as you go.
If you do not know the final data size then store the pieces in a cell array until the end (better yet if you can at least pre-allocate the cell array itself.) You can then cell2mat()
  3 Commenti
per isakson
per isakson il 7 Lug 2016
Modificato: per isakson il 7 Lug 2016
"know the maximum size it can take" &nbsp
One approach: Assume the result_array is &nbsp<kxm double>. Preallocate total_result as &nbsp<kxmxn double> where n is maximum number of loops that can occur.
total_result = zeros(k,m,n)
loop over huge number
total_result(:,:,jj) = result_array;
end
delete unused space of total_result
Walter Roberson
Walter Roberson il 7 Lug 2016
Yes, removing extra rows afterwards is efficient.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by