How would I keep adding matrices to an array using a for loop?
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
Sean de Wolski
2015-8-3
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)?
采纳的回答
the cyclist
2015-8-3
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.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!