how to create a for loop for 3 variables
9 views (last 30 days)
the cyclist on 4 Jan 2022
Edited: the cyclist on 4 Jan 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);
Each variable you have called Number1, etc, is a row of Number. It is better to not use dynamically named variables.
More Answers (1)
DGM on 4 Jan 2022
Edited: DGM on 5 Jan 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.