如何使用MATLAB的num2str格式化输出

3

我正在尝试在MATLAB中将数字数组输出为字符串。我知道可以使用num2str轻松完成此操作,但我希望用逗号和空格分隔数字,而不是制表符。数组元素最多只有十分位数的分辨率,但大多数元素都是整数。是否有一种格式化输出的方法,可以省略不必要的尾随零?这是我设法编写的代码:

data=[2,3,5.5,4];
datastring=num2str(data,'%.1f, ');
datastring=['[',datastring(1:end-1),']']

这将输出:

[2.0, 3.0, 5.5, 4.0]

而不是:

[2, 3, 5.5, 4]

有什么建议吗?

编辑:我刚刚意识到我可以使用strrep通过调用来解决这个问题。

datastring=strrep(datastring,'.0','')

但那似乎比我一直在做的更加笨拙。

2个回答

9

改为:

datastring=num2str(data,'%.1f, ');

试一试:

datastring=num2str(data,'%g, ');

输出结果:[2, 3, 5.5, 4]

或者:

datastring=sprintf('%g,',data);

Output:[2,3,5.5,4]


3

使用 MAT2STR 的另一个选项:

» datastring = strrep(mat2str(data,2),' ',',')
datastring =
[2,3,5.5,4]

其中2是精度的位数。


请注意,精度的位数也会截断小数。例如,mat2str(123,2) 返回 1.2e+002 - JaBe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接