Irregular intervals inside a for loop
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello, I'm trying to work out how to do two actions (lets call them A and B), where action A is repeated n amount of times after which action B is repeated m amount of times, with n and m being integers.
this all takes place in a for loop with say, index p.
Essentially what I want as my output when n = 2 and m = 3 is:
Action A
Action A
Action B
Action B
Action B
Action A
Action A
...etc.
I tried doing the following:
n=5
for p = 1:100
q = floor(p/n);
if rem(q,2) == 0
disp('Action A')
else
disp('Action B')
end
end
But ofcourse, this only works for regular intervals (I'm quite a nooby in MATLAB so excuse me if this is a weird way to approach this)
0 comentarios
Respuestas (3)
Voss
el 23 de Mzo. de 2022
n = 2;
m = 3;
z = n+m;
for p = 1:20
if ismember(mod(p,z),1:n)
disp('Action A');
else
disp('Action B');
end
end
4 comentarios
David Hill
el 23 de Mzo. de 2022
for p=1:100
for a=1:n
%Action A
end
for b=1:m
%Action B
end
end
3 comentarios
Image Analyst
el 23 de Mzo. de 2022
@Kerr Beeldens it does work nicely. And it does what you said in a simpler and more straightforward method than messing with floor() and rem() like you tried to do.
John D'Errico
el 23 de Mzo. de 2022
Editada: John D'Errico
el 23 de Mzo. de 2022
There are multiple ways to do this. For example:
P = primes(20); % Note that P is a ROW vector
P
SumP = 0;
for P_i = P
SumP = SumP + P_i;
end
SumP
Do you see there is effectively no index at all? The loop variable is the corresponding element of P.
Or, I might have done this:
Q = (1:5).^2
ProdQ = 1;
for ind = 1:numel(Q)
Q_ind = Q(ind);
ProdQ = ProdQ*Q_ind;
end
ProdQ
In the latter case, I used a uniform index in the form of ind, but then immediately index into the non-uniform vector Q.
Next, we can have a loop on characters.
S = 'The Quick Brown Fox jumped over the lazy dog';
words = split(S).'
Again, note that words is again a ROW vector. Now the for loop can access the elements of this row vector.
for W = words
disp(W{:})
end
Be careful, as that trick fails when the vector is a column vector.
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements 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!