Combining For Loop outputs into a Matrix
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
nico nico
el 27 de Nov. de 2017
Comentada: nico nico
el 28 de Nov. de 2017
Hi, I'm relatively new to Matlab. This is my code:
b = 0:3;
for q = 0:10:20
XY = (40 + 2*q) + cosd(b)
end
And the output on the command window would be:
XY =
41.0000 40.9998 40.9994 40.9986
XY =
61.0000 60.9998 60.9994 60.9986
XY =
81.0000 80.9998 80.9994 80.9986
I'm struggling to combine the outputs into one matrix like this:
XY =
41.0000 40.9998 40.9994 40.9986
61.0000 60.9998 60.9994 60.9986
81.0000 80.9998 80.9994 80.9986
Suggestions/hints would be much appreciated, thanks!
0 comentarios
Respuesta aceptada
dpb
el 27 de Nov. de 2017
With a loop, you just index...
b = 0:3;
XY=zeros(3,length(b)); % preallocate the output array
irow=0; % row counter
for q = 0:10:20
irow=irow+1; % increment counter
XY(irow,:) = (40 + 2*q) + cosd(b);
end
BUT, you "don't need no steenkin' loops!" with Matlab; that's the power of the language with the vectorized functions--
> [Q,B]=meshgrid(q,b); % generate the grid of points in bot variables
>> XY = [(40 + 2*Q) + cosd(B)].'
XY =
41.0000 40.9998 40.9994 40.9986
61.0000 60.9998 60.9994 60.9986
81.0000 80.9998 80.9994 80.9986
>>
Más respuestas (1)
Stephen23
el 27 de Nov. de 2017
Editada: Stephen23
el 27 de Nov. de 2017
>> b = 0:3;
>> q = 0:10:20;
>> XY = bsxfun(@plus,40+2*q(:),cosd(b))
XY =
41 40.9998476951564 40.9993908270191 40.9986295347546
61 60.9998476951564 60.9993908270191 60.9986295347546
81 80.9998476951564 80.9993908270191 80.9986295347546
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!