Result producing 1x5 array instead of 10x5?
6 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Alex Mcaulley
2019-6-4
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 个评论
madhan ravi
2019-6-4
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
2019-6-4
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)]
更多回答(1 个)
Rob L
2019-6-4
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!