如何在 Matlab 中循环字母表的 ascii 值



我是 Matlab 的新手,在使用mod函数时遇到问题。

我得到了一个小写字符的加扰向量和一个移位值,该值可以是正数或负数,我应该将其添加到
我应该使用 mod 函数包裹字母表中的小写字母的向量中。
例如,如果字母是"a",如果轮班量是4,则字母将变为"e"。
负数意味着在字母表中向"a"移动。
移位应该围绕字母表"wrap"x移位7应该变成"e"。

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

>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

最新更新