how to create a for loop for 3 variables

1 visualizzazione (ultimi 30 giorni)
%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);

Risposta accettata

the cyclist
the cyclist il 4 Gen 2022
Modificato: the cyclist il 4 Gen 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 Commenti
the cyclist
the cyclist il 5 Gen 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 il 5 Gen 2022
the cyclist - that worked....thanks!!

Accedi per commentare.

Più risposte (1)

DGM
DGM il 4 Gen 2022
Modificato: DGM il 5 Gen 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.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by