MATLAB:格式化字符串数组

时间:2018-03-02 10:21:09

标签: arrays string matlab

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

import org.apache.spark.streaming._
val stateSpec =
  StateSpec
    .function(updateUserEvents _)
    .timeout(Minutes(5))

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

对于旧版本,在我看来,使用循环(或str = 2×3 cell array '0.00%' '0.40%' '0.20%' '0.00%' '0.60%' '0.80%' )是一种直截了当的优雅方法。

arrayfun

答案 1 :(得分:0)

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

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

但循环更易于阅读

根据@SardarUsama的建议,您也可以使其与原始变量

的大小相同
reshape ( strread( sprintf ( '%.2f%%\n', mat ), '%s', 'delimiter', '\n' ), size(mat) )

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