numerate two numerators in conjunction with each other

2 次查看(过去 30 天)
Hello
I have two numerator, A and B.
in steps 1 to 6 when A numerates 1 to 6, B is 1.
in steps 7 to 12 when A numerates 1 to 6, B is 2.
in steps 13 to 18, A numerates 1 to 6, B is 3.
in steps 19 to 24, A numerates 1 to 6, B is 4.
In steps 25 to 30, A numerates 1 to 6, B is 5
and in steps 31 to 36, A numerates 1 to 6, B is 6.
from step 37 condition is conversed. it means that from step 37 to 42, A is 1 and B changes between 1 to 6. then from step 43 to 48, A is 2 and B changes between 1 to 6. this process will continue until step 73. from this step, condition is similar to steps 1 to 36.
Is it possible to help me please.

回答(1 个)

Walter Roberson
Walter Roberson 2015-11-8
B = mod( ceil(step/6) - 1, 6) + 1;
The ceil(step/6) is pretty straight forward. 1 to 6 become 1, 2 to 12 become 2, ... 31 to 36 become 6, 37 to 42 become 7, 43 to 48 become 8, and so on.
mod(Value - 1, Range) + 1
is a little calculation trick. If you were to values 1 to 8 and take them mod 6, you would get 1 2 3 4 5 0 1 2 -- with a 0 in the places you want a 6. You could post-process with logical indexing or a loop to change the 0 to 6, but that is inconvenient. But look what happens if you subtract 1 before taking the mod 6: you get 0 1 2 3 4 5 0 1 . Add 1 to that and you get 1 2 3 4 5 6 1 2, exactly what you need. There are Good Reasons why this works, but it is easier to just remember the trick "subtract 1 first, add 1 after" than to work out the mathematics of it each time ;-)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by