String 矩阵到字符串,行的新行
标题基本上说明了一切。 这是我当前的代码,但不太正确。它放置\n而不是新行 我想遍历矩阵的一行,在行中的每个元素之间留出一个空格,然后为下一行添加一行String 矩阵到字符串,行的新行,string,matlab,string-concatenation,String,Matlab,String Concatenation,标题基本上说明了一切。 这是我当前的代码,但不太正确。它放置\n而不是新行 我想遍历矩阵的一行,在行中的每个元素之间留出一个空格,然后为下一行添加一行 mat = [1,2,3,4;5,6,7,8]; %must work for arbitrary size matrix.. just an example s = ''; for i = 1:size(mat,1) s = strcat(s,sprintf('%d ',mat(i,:))); s = [s,'\n']; %and ma
mat = [1,2,3,4;5,6,7,8]; %must work for arbitrary size matrix.. just an example
s = '';
for i = 1:size(mat,1)
s = strcat(s,sprintf('%d ',mat(i,:)));
s = [s,'\n']; %and many variations of trying to add this
end
这目前产生:
1234\n5678\n
我想要的是(作为字符串):
我不知道我以前怎么没有发现有人问过这个问题,但我一直在搜索,结果一无所获 换行符是字符代码10(
char(10)
)。因此,您可以保留当前的sprintf
并使用char(10)
:
下面是一个简单的例子:
>> ['one' char(10) 'two']
ans =
one
two
结果是strcat
去掉了换行符,因此将循环的内容替换为:
s = [s sprintf('%d ',mat(i,:)) char(10)];
从:
对于字符数组输入,strcat将删除尾随的ASCII空白
字符:空格、制表符、垂直制表符、换行符、回车符和
表单提要。连接字符时保留尾随空格的步骤
数组,使用水平数组连接,[s1,s2,…,sN]
另外,num2str
也可以执行您想要的操作,但如果每个数字中的数字超过1位,则输出结果会略有不同:
>> num2str(mat)
ans =
1 2 3 4
5 6 7 8
9 10 11 12
另一个没有循环的时髦解决方案:
>> s = sprintf([repmat('%d ',1,size(mat,2)) '\n'],mat')
s =
1 2 3 4
5 6 7 8
对不起,这不是我的问题。问题是在最后一列之后添加新行。这将在每列后面添加一行。@user2243357:我刚刚更新了答案。位
s=[s,char(10)]代码>可能是您需要的。我实际上需要它来处理任意大小的矩阵。而且,s=[s,char(10)]不起作用。由于某种原因,它仅在最后一行之后生成新行。。并给出了'12345678',它将给出一个新的行,但当它重新启动strcat时,它似乎忽略了它,下一次迭代(因此数字被压缩在一起,即:45)我在Windows7上。它也为我提供了一个新行,但仅在最后一行之后(当循环处于终止迭代时)。调试测试时,它首先生成一个新行,但当它返回到循环中时,新行消失了(我猜strcat忽略了它)。
>> num2str(mat)
ans =
1 2 3 4
5 6 7 8
9 10 11 12
>> s = sprintf([repmat('%d ',1,size(mat,2)) '\n'],mat')
s =
1 2 3 4
5 6 7 8