将mod函数的0替换为除数

时间:2018-09-19 20:12:08

标签: arrays matlab for-loop mod

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
.

2 个答案:

答案 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;