array exceeds maximum array size preference (when summing)

3 visualizaciones (últimos 30 días)
Yugarshi Mondal
Yugarshi Mondal el 1 de Sept. de 2020
Comentada: Rik el 1 de Sept. de 2020
I'm running a simulation that outputs a very long vector (of length 4 by 599901 -- only taking the fourth row).
I want to keep producing simulations of this length and add it to the previous result:
storage(kk,kkk,:) = soln(4,:) + storage(kk,kkk,:);
However I'm recieving the following error:
Requested 1x599901x599901 (2681.3GB) array exceeds maximum array size preference. Creation of arrays
greater than this limit may take a long time and cause MATLAB to become unresponsive.
I can complete the simulation and plot it, but I can't sum it in the way I've described? I think I'm bungling something. Can anyone help?

Respuestas (1)

Rik
Rik el 1 de Sept. de 2020
Use squeeze around the two terms you want to sum. The dimensions are different, so your current code attempts to use dynamic expansion, which would result in a huge matrix.
  2 comentarios
Yugarshi Mondal
Yugarshi Mondal el 1 de Sept. de 2020
Maybe I should say kk and kkk are fixed by a loop.
Neither of the following worked:
storage(kk,kkk,:) = squeeze(soln(4,:))+squeeze(storage(kk,kkk,:));
storage(kk,kkk,:) = squeeze(soln(4,:)+storage(kk,kkk,:));
Other ideas?
Rik
Rik el 1 de Sept. de 2020
Yes: put squeeze around both terms:
storage(kk,kkk,:) = squeeze(soln(4,:)) + squeeze(storage(kk,kkk,:));

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by