我是Matlab的新手,在使用mod
函数时遇到了麻烦。
我得到了一个加扰的小写字母矢量,以及一个应该加到该矢量上的正负值的移位值
我应该使用mod函数将小写字母包裹在其中
例如,如果字母为'a
',而移位量为4,则字母将变为'e
'。
负数表示向'
字母上的a
”。
字母周围的“ wrap
”-移位7的“ x
”应变成“ e
”。
我尝试使用if和elseif
语句编写条件语句,但应该使用mod
函数代替条件语句。
答案 0 :(得分:0)
mod(x,y)
是x
和y
除法的其余部分,其符号与y
相同。因此,给定负x
,该符号仍为正。这与其他语言中的mod
定义不同。
我显然y
必须是a-z范围内的字符数。 x
是移位字符的从0开始的索引,“ a”应为0,“ z”应为y-1
。您可以通过简单地减去ASCII值“ a”来获得它:
letter - 'a'
请注意,'a'
是一个字符,在算术运算中会隐式转换为字母的ASCII值。
然后,mod
操作的结果将返回一个这样的索引,您可以通过添加ASCII值“ a”将其转换为字符:
char(index + 'a')
将它们放在一起:
char(mod(letter-'a', 'z'-'a'+1) + 'a')
您可以在该表达式中使用字母向量(char数组)代替letter
。