如何在Matlab中环绕字母的ascii值

时间:2019-05-26 15:33:36

标签: matlab mod

我是Matlab的新手,在使用mod函数时遇到了麻烦。

我得到了一个加扰的小写字母矢量,以及一个应该加到该矢量上的正负值的移位值
我应该使用mod函数将小写字母包裹在其中
例如,如果字母为'a',而移位量为4,则字母将变为'e'。
负数表示向'
字母上的a”。
字母周围的“ wrap”-移位7的“ x”应变成“ e”。

我尝试使用if和elseif语句编写条件语句,但应该使用mod函数代替条件语句。

1 个答案:

答案 0 :(得分:0)

mod(x,y)xy除法的其余部分,其符号与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