Irregular intervals inside a for loop
조회 수: 2 (최근 30일)
이전 댓글 표시
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
답변 (3개)
Voss
2022년 3월 23일
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
David Hill
2022년 3월 23일
for p=1:100
for a=1:n
%Action A
end
for b=1:m
%Action B
end
end
댓글 수: 3
Image Analyst
2022년 3월 23일
@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
2022년 3월 23일
편집: John D'Errico
2022년 3월 23일
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
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!