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

2 views (last 30 days)
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 Comment
Sean de Wolski
Sean de Wolski on 3 Aug 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)?

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 3 Aug 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.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!