Matlab模数特定行为

Dim*_*i C 4 matlab

我有以下问题.假设我有四个可能的值{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中以最简单的方式实现所需行为的想法?

Div*_*kar 7

如果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)


m.s*_*.s. 6

怎么样:

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如果从结果mod0.

演示

>> my_mod(1:8, 4)

ans =

 1     2     3     4     1     2     3     4
Run Code Online (Sandbox Code Playgroud)