【问题标题】:Matlab: convert array of number to array of stringsMatlab:将数字数组转换为字符串数组
【发布时间】:2012-08-28 17:50:20
【问题描述】:

如何将[12 25 34 466 55] 转换为字符串数组['12' '25' '34' '466' '55']?我知道的转换函数将该数组转换为一个代表整个数组的字符串。

【问题讨论】:

    标签: string matlab numbers type-conversion


    【解决方案1】:

    字符串数组必须是元胞数组。也就是说:

    s = [12 25 34 466 55]
    strtrim(cellstr(num2str(s'))')
    

    【讨论】:

    • 比我上面写的更好的方法。
    • 这比 arrayfun 和 cellfun 快两倍多。 +1
    【解决方案2】:

    现在在 MATLAB 2016b 之后,您可以简单地使用

    s = [12 25 34 466 55]; 
    string(s)
    

    【讨论】:

      【解决方案3】:

      arrayfunnum2str 一起使用可以:

      >> A = [12 25 34 466 55]
      A =
         12    25    34   466    55
      
      >> arrayfun(@num2str, A, 'UniformOutput', false)
      ans = 
          '12'    '25'    '34'    '466'    '55'
      

      【讨论】:

      • 为什么不arrayfun(@num2str, A, 'UniformOutput', false)?相同的概念,相同的输出,但您避免了“from-cell”和“to-cell”转换。
      【解决方案4】:

      在 MATLAB 中,['12' '25' '34' '466' '55'] 与包含这些数字的单个字符串相同。也就是说:

      ['12' '25' '34' '466' '55']
      
      ans =
      
      12253446655
      

      我需要更多上下文来了解您要完成的工作,但假设您仍然希望能够以字符串的形式访问每个单独的数字,那么元胞数组可能是您可以采用的最佳方法:

      A = [1 2 3]
      num2cell(num2str(A))
      

      (当然,您仍然需要从 ans 中删除杂散空格)

      【讨论】:

      • 即使您删除了杂散的空格,您最终也会得到一个单独包含每个数字的字符串元胞数组。交换num2cellnum2str 的顺序。 cellfun(@num2str,num2cell(s),'UniformOutput',false) 很好地完成了工作。
      【解决方案5】:

      从 R2016b 开始还有 compose 功能:

      >> A = [12 25 34 466 55]
      
      A =
      
          12    25    34   466    55
      
      >> compose("%d", A)
      
      ans = 
      
        1×5 string array
      
          "12"    "25"    "34"    "466"    "55"'''
      

      【讨论】:

        猜你喜欢
        • 2013-05-31
        • 1970-01-01
        • 1970-01-01
        • 2013-04-25
        • 2012-11-04
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        相关资源
        最近更新 更多