#string #matlab #newline #string-formatting #cell-array
#строка #matlab #новая строка #форматирование строки #ячейка-массив
Вопрос:
Я пытаюсь объединить массив строк, разделяющих каждую новой строкой, в одну строку в Matlab. Следующий метод объединяет строки, но конечная строка содержит n вместо новых строк:
function str = toString(self)
% some not important logic that creates cell array called strings
% ...
str = '';
for i = 1 : 9
str = strcat(str, strings(i), 'n');
end
end
Он возвращает: ' 111n 111n 111n333666444555n333666444555n333666444555n 222n 222n 222n'
Когда я добавляю str = sprintf(str);
до конца метода, он возвращает ошибку недопустимого формата. Однако, когда я пишу в командное окно Matlab sprintf(' 111n 111n 111n333666444555n333666444555n333666444555n 222n 222n 222n');
, оно возвращает форматированную строку без каких-либо ошибок.
Кто-нибудь знает, в чем может быть проблема? Почему это работает в окне командной строки, но не в файле .m?
Ответ №1:
sprintf будет перебирать элементы или ваш массив ячеек:
sprintf('%sn', strings{:})
Проблема с вашим циклом в том, что ‘n’ — это массив символов из 2 элементов, но вам нужен sprintf(‘n’)