how to create a for loop for 3 variables

1 visualización (últimos 30 días)
Michael Angeles
Michael Angeles el 4 de En. de 2022
Comentada: Michael Angeles el 5 de En. de 2022
%how can I reiteratively create a foor loop for the following:
Number1 = Point(1:15*7);
Number2 = Point(1+15*7 : 2*15*7);
Number3 = Point(1+2*(15*7) : 3*(15*7);

Respuesta aceptada

the cyclist
the cyclist el 4 de En. de 2022
Editada: the cyclist el 4 de En. de 2022
% Make up a random input. (You don't need this step)
Point = rand(1,3*15*7);
% Define these parameters for convenience
NR = 3;
NC = 15*7;
% Initialize the output array
Number = zeros(NR,NC);
% Fill the array
for n = 1:NR
Number(n,:) = Point((n-1)*NC+1:n*NC);
end
Each variable you have called Number1, etc, is a row of Number. It is better to not use dynamically named variables.
  8 comentarios
the cyclist
the cyclist el 5 de En. de 2022
100% agree with @Stephen, even though I finally caved in a told you how to do what you asked for.
I strongly suggest you read the info I provided on why it's a bad idea to name variables Number1, Number2, etc.
Michael Angeles
Michael Angeles el 5 de En. de 2022
the cyclist - that worked....thanks!!

Iniciar sesión para comentar.

Más respuestas (1)

DGM
DGM el 4 de En. de 2022
Editada: DGM el 5 de En. de 2022
This probably isn't exactly what you want, but I'm not sure what you're working with, and the approach can probably be improved. Consider this a suggestion more than a complete answer.
A few points:
  • I don't know what Point is. I'm going to assume it's a vector and that it's integer-divisible by 105
  • Embedding indexing information in variable names is counterproductive. Avoid that in favor of using array indexing or something
  • Use meaningful variable names. Calling a numeric variable "Number" conveys no information.
% i assume that numel(Point) is integer-divisible by 105
Point = 1:315;
% now each row of Point is what you would have called NumberX
Point = reshape(Point,105,[]).';
% say those are x,y,z components of a point list
plot3(Point(1,:),Point(2,:),Point(3,:)); grid on
If Point is not necessarily integer-divisible by the assumed row length and any excess is to be ignored, you can simply truncate the length of the vector before reshaping it.
rl = 105; % row length
Point = 1:320; % not integer-divisible by row length
Point = Point(1:rl*floor(numel(Point)/rl)); % truncate
Again, it's hard to know what you're after. I'm assuming you're intending to generalize for more than 3 rows.

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!

Translated by