Вы объединяете не строки, а массивы символов. Думая об этом так, он уже отвечает на ваш вопрос: если у вас есть число с двумя ди git, массив символов на один элемент длиннее, чем массив с одним числом git ... и вы не может объединить два массива разного размера по вертикали.
Решение довольно простое: использовать реальные строки (введенные где-то около R2016a). Строки обозначаются ""
вместо ''
, которые являются символами. Так что замените ваш char
на string
, и он работает нормально. (Еще лучше: укажите formatSpec
как ""
-струну, и она sprintf()
сразу же вернет строку)
Примечание:
BTW, Вы должны всегда выделять память, если вы зацикливаетесь. Вот почему Str
имеет оранжевое волнистое подчеркивание. Это связано с тем, что MATLAB хранит массивы в ОЗУ непрерывно и вынужден копировать их в больший раздел, если он превосходит текущий. Поэтому вместо Str=[]
напишите Str = strings(length(A2),1)
и индекс Str(i) = ...
в l oop.
Лично мне нравится num2str
больше, чем sprintf
, но я не могу дать вескую причину для этого, за исключением того, что он также работает без предоставления формата.