Как писал Мохит Jain, результаты вы получаете основаны на преобразовании в ASCII, который является наиболее распространенным методом для численного кодировать текстовую информацию. ASCII также включен как поднабор в текущем стандарте Unicode, а на поддерживающих платформах Matlab фактически использует 16-битную кодировку Unicode, которая позволяет ему не только отображать 95 печатных символов ASCII, которые поддерживают английский текст, но и большое количество международных сценариев, специальных символов для приложений в математике, типографии и many other fields. Явное преобразование между числовыми и символьными данными в Matlab осуществляется через char
и double
:
>> double('aAΔ')
ans =
97 65 916
Небольшой латинской буквы «а» имеет код ASCII 97, большой латинской буквы «А» код ASCII 65, а большая греческая буква Delta имеет номер Unicode 916. Так как латинские буквы кодируются последовательно с кодами от 97 до 122 для небольших букв и от 65 до 90 для столиц, вы можете создать английский алфавит, например как это:
>> char(65 : 90)
ans =
ABCDEFGHIJKLMNOPQRSTUVWXYZ
При применении арифметического оператора как -
на символьные строки, символы неявно преобразуются в число, как если бы вы использовали double
>> double('hello')
ans =
104 101 108 108 111
>> double('g')
ans =
103
и поэтому 'hello' - 'a'
такие же, как
>> [104 101 108 108 111] - 103
ans =
1 -2 5 5 8
Если у вас установлен [разный пакет] (http://octave.sourceforge.net/miscellaneous/index.html), он имеет fu nction 'asci', который отображает красиво отформатированную таблицу, показывающую, как каждый символ интерпретируется в десятичной и шестнадцатеричной. – carandraug