То, что у вас есть массив символов , а не строки ;Строки - это довольно новый класс в MATLAB, определенный с помощью двойных кавычек.Но символьные массивы в основном представляют собой числовой массив кодовых точек ASCII (или, точнее, UTF-16) под капотом.
strcat
по определению объединяет символьные массивы (или строки).Это эквивалентно синтаксису объединения обычных массивов:
>> strcat('17', '9')
ans =
'179'
>> ['17', '9']
ans =
'179'
Однако любая арифметическая операция приведет к тому, что массивы символов станут базовым целочисленным массивом:
>> +'179'
ans =
49 55 57
Эти числа являются кодовыми точками ASCII.для 1
, 7
и 9
соответственно.ASCII является подмножеством UTF-16, поэтому для чисел, английских букв и знаков препинания достаточно думать в терминах кодовых точек ASCII.
Теперь вы поймете, почему добавление двухсимвольных массивов будет выполнять соответствующую операцию, котораядобавляет числовые массивы:
>> '17' + '9'
ans =
106 112
>> [49 55] + [57]
ans =
106 112
Выше также означает, что вам не повезло.Если бы два символьных массива имели несовместимый размер (т. Е. Если бы их размер был неравным и ни один из них не имел длины 1), вы бы получили сообщение об ошибке:
>> '12' + '345'
Matrix dimensions must agree.
Поскольку вы не можете добавить 2-длинуи вектор 3 длины.