Замена n в строке на новые строки в Matlab

#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’)