1

我正在尝试将由新行分隔的字符串单元格数组合并为 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

它返回:' 111\n 111\n 111\n333666444555\n333666444555\n333666444555\n 222\n 222\n 222\n'

当我str = sprintf(str);在方法结束之前添加时,它返回 Invalid format 错误。但是,当我写入 Matlab 命令窗口sprintf(' 111\n 111\n 111\n333666444555\n333666444555\n333666444555\n 222\n 222\n 222\n');时,它会返回格式化字符串而没有任何错误。

任何人都知道可能是什么问题?为什么它在命令窗口中有效,但在 .m 文件中无效?

4

1 回答 1

2

sprintf 将遍历元素或单元格数组:

sprintf('%s\n', strings{:})

你的循环的问题是 '\n' 是一个 2 元素 char 数组,但你想要的是 sprintf('\n')

于 2011-10-30T14:28:58.933 回答