if mod(m,18) == 0
mm = 18;
else
mm = mod(m,18);
end
如何仅通过使用mod
函数和一些算术运算就可以做到这一点?上面的代码在for
循环内运行,并且m
是迭代器。
结果应为:
1 -> 1
2 -> 2
.
.
.
17 -> 17
18 -> 18
19 -> 1
20 -> 2
.
.
36 -> 18
37 -> 1
.
答案 0 :(得分:2)
mod
具有数组支持,因此您不需要循环:
https://login.microsoftonline.com/xxxxx.onmicrosoft.com/oauth2/v2.0/authorize
解决方案rahnema1 provided in the comments确实工作得更好,我只是想说明一下,如果您希望18的倍数显示为它们的原始值,而不是此代码也很容易做到的18:
https://login.microsoftonline.com/xxxxx.onmicrosoft.com/oauth2/v2.0/token
创建相同数组的另一种方法是使用data = 1:n;
tmp = mod(data,18);
tmp(tmp==0) = 18; % Set all numbers divisible by 18 to 18
% tmp(tmp==0) = 18*(1:floor(n/18)); % Set all numbers divisible by 18 to their original
而不是mm=mod(m-1,18)+1
mm(mm==18) = 18*(1:floor(n/18));
:
repmat
答案 1 :(得分:-1)
尝试一下:
mm = mod(m,18);
mm(mm==0)=18;