MATLAB:格式化字符串数组

问题描述 投票:0回答:2

我想知道如何将特定格式应用于新推出的string array

mat = [0, 0.4, 0.2 ; 0, 0.6, 0.8]
str = string(mat)

我希望得到的string array总是显示两位小数,然后是百分号(例如sprintf('%.2f%%', str))。

我该怎么做?如果字符串数组不可能,char的单元格数组也同样好。

arrays string matlab
2个回答
4
投票

如果你有≥R2016b,你可以使用compose

str = compose('%0.2f%%', mat);

str =

  2×3 cell array

    '0.00%'    '0.40%'    '0.20%'
    '0.00%'    '0.60%'    '0.80%'

对于旧版本,在我看来,使用循环(或arrayfun)是一种直截了当的优雅方法。

res = arrayfun(@(x) sprintf('%.2f%%',x), mat,'un',0);

0
投票

在这样的情况下,循环通常很好,但你可以这样做:

strread ( sprintf ( '%.2f%%\n', mat ), '%s', 'delimiter', '\n' )

但是循环更容易阅读

正如@SardarUsama所建议的那样,你也可以使它与原始变量的大小相同

reshape ( strread( sprintf ( '%.2f%%\n', mat ), '%s', 'delimiter', '\n' ), size(mat) )

P.S确实strread不推荐在文档中 - 但我个人认为它是一个非常有用的功能! :)

© www.soinside.com 2019 - 2024. All rights reserved.