我有以下问题.假设我有四个可能的值{1 2 3 4},我想要一个mod函数的特定行为
我寻求的行为就是这个
1 mod 4 = 1
2 mod 4 = 2
3 mod 4 = 3
4 mod 4 = 4
Run Code Online (Sandbox Code Playgroud)
但我用matlab得到以下结果.
1 mod 4 = 1
2 mod 4 = 2
3 mod 4 = 3
4 mod 4 = 0
Run Code Online (Sandbox Code Playgroud)
有没有关于如何在MATLAB中以最简单的方式实现所需行为的想法?
如果A保存这些值,则可以减1,执行mod并重新添加1.
样品运行 -
>> A = 1:8
A =
1 2 3 4 5 6 7 8
>> mod(A-1,4)+1
ans =
1 2 3 4 1 2 3 4
Run Code Online (Sandbox Code Playgroud)
怎么样:
function [result] = my_mod(x,y)
m = mod(x,y);
result = m+~m*y;
Run Code Online (Sandbox Code Playgroud)
该~否定从结果mod,即:
~0 == 1~1 == 0~2 == 0所以我们只添加y如果从结果mod是0.
演示
>> my_mod(1:8, 4)
ans =
1 2 3 4 1 2 3 4
Run Code Online (Sandbox Code Playgroud)