Result producing 1x5 array instead of 10x5?
    12 views (last 30 days)
  
       Show older comments
    
    Thomas Veith
 on 4 Jun 2019
  
    
    
    
    
    Commented: Alex Mcaulley
      
 on 4 Jun 2019
            Hi all,
I have the following code which I'm expecting to produce a 10x5 array but it's only giving me a 1x5, and I'm not sure why?
n = 10;
result = zeros(n,5);
for k=1:n;
A0=1;P0=29;g=rand;p=rand;B=rand;
result = [A0,P0,g,p,B];
end;
Alternatively, if I write the code this way I get a 10x1 cellular array, each entry of which represents a 1x5 numeric array. This gives me the number of results I want, but not in the format I'm looking for (which, again, is ultimately a 10x5 array). Thanks in advance!
n = 10;
result = cell(n,1);
for k=1:n;
A0=1;P0=29;g=rand;p=rand;B=rand;
result{k} = {A0,P0,g,p,B};
end;
0 Comments
Accepted Answer
  Alex Mcaulley
      
 on 4 Jun 2019
        You need to specify the index:
n = 10;
result = zeros(n,5);
for k=1:n;
A0=1;P0=29;g=rand;p=rand;B=rand;
result(k,:) = [A0,P0,g,p,B];
end;
4 Comments
  madhan ravi
      
      
 on 4 Jun 2019
				That would just copy the same g p B values through repmat() so creating n elements for g p B and then copying it into the matrix would be better.
  Alex Mcaulley
      
 on 4 Jun 2019
				Yes, as @madhan said, if you want random numbers for all rows:
n = 10;
A0=1;P0=29;
result = [repmat([A0,P0],n,1),rand(n,3)]
More Answers (1)
  Rob L
 on 4 Jun 2019
        Your first method overwites the result every loop with a [ 1 x 5 ] array.
You could (among many other solutions)  use:
n = 10;
result = zeros(n,5);
for k=1:n
    A0=1;P0=29;g=rand;p=rand;B=rand;
    result(k,1) = A0;
    result(k,2) = P0;
    result(k,3) = g;
    result(k,4) = p;
    result(k,5) = B;
end
0 Comments
See Also
Categories
				Find more on Matrices and Arrays in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


