How would I keep adding matrices to an array using a for loop?

2 visualizaciones (últimos 30 días)
I have managed to concatenate two matrices, but I would like to have ten total - what is wrong with my code?
A=zeros(60,96);
for exp = 1:10;
n=1;
while n<61
pop=randperm(96,60);
m = pop(n);
A(n,m)=1;
start=A;
array=cat(3,start,A);
n=n+1;
end
end
  1 comentario
Sean de Wolski
Sean de Wolski el 3 de Ag. de 2015
Perhaps this will help clarify for us: What is your end goal, i.e. what do you want the end array to look like (forget the steps for getting there right now)?

Iniciar sesión para comentar.

Respuesta aceptada

the cyclist
the cyclist el 3 de Ag. de 2015
It is not perfectly clear to me what you are trying to do, but I think the core of your problem is that in the line
array=cat(3,start,A);
You simply append start and A, over and over again. This does not "grow" the array. It just keeps making a (60,96,2) array.
It seems that what you actually want to do is to append to array, and then keep appending to array. So, maybe you want this line to be something like
array=cat(3,start,array);
Does that seem right?
Now, that being said, growing an array like this is a bad idea, from a memory usage point of view. Better practice (with potentially huge execution time benefit) would be to preallocate array
array = zeros(60,96,10)
and then fill in each "slice" as you go.
But it is OK start by fixing your own code, before you worry about optimizing.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by