Я новичок в Matlab, и у меня проблемы с использованием функции mod
.
Мне дан зашифрованный вектор строчных символов и значение сдвига, которое может быть положительным или отрицательным, которое я должен добавить к вектору
Я должен использовать функцию mod для переноса строчных букв в алфавите.
Например , если буква «a
», а величина сдвига равна 4, то буква станет «e
».
Отрицательное значение означает сдвиг в сторону «a
» в алфавите. сдвинутый на 7 должен стать «wrap
».
Я пробовал писать условные операторы, используя операторы if и x
, но я должен использовать функцию e
вместо условных выражений.
mod(x,y)
— это остаток от деления x
и y
, имеющий тот же знак, что и y
. Таким образом, при отрицательном значении x
знак остается положительным. Это отличается от того, как mod
определяется в других языках.
Очевидно, что y
должно быть числом символов в диапазоне от a до z. x
— индекс сдвинутого символа, начинающийся с 0, который должен быть равен 0 для «a» и y-1
для «z». Вы можете получить это, просто вычитая значение ASCII из «a»:
letter - 'a'
Обратите внимание, что 'a'
— это символ, который неявно преобразуется в значение ASCII буквы в арифметических операциях.
Результат операции mod
затем снова возвращает один такой индекс, который вы можете превратить в символ, добавив значение ASCII «a»:
char(index + 'a')
Собираем все вместе:
char(mod(letter-'a', 'z'-'a'+1) + 'a')
Вместо letter
вы можете использовать в этом выражении вектор букв (массив символов).