Hi everyone.. I'm new to matlab and am trying to populate a 3D array by the results of a loop:
for j=1:4 A=randi([0 1],2,3); C(:,:,j)=A end
And I am getting different 2x3 C matrices where j=1, 2, then j=1,2,3 then j=1,2,3,4. Is there a way I can run the loop just for j=1, then j=2, thenj=3 and j=4? I thought I should be getting a 3D array containing just 4 "pages" (i-e, 4 matrices??
No products are associated with this question.
I am confused about your question. You say you want to have C be a 2-by-3-by-4 array at the end of the loop, correct? That is exactly what you have at the end of your loop!
>> clear all for jj = 1:4 A=randi([0 1],2,3); C(:,:,jj)=A; % Semicolon!! end whos C % This tells us what we have in C. Name Size Bytes Class Attributes
C 2x3x4 192 double
Notice that C is the exact size you want. I wonder if you got confused by leaving off the semicolon so that while the loop was running and so you saw C being built-up for every iteration? This is just one reason to not forget to put a semicolon on your lines of code! There is no practical reason to watch all that screen-dump!
Also, why not just do:
C = randi([0 1],2,3,4); % No loop needed...
Play games and win prizes!Learn more