【问题标题】:Convert cell to array in matlab在matlab中将单元格转换为数组
【发布时间】:2012-06-14 19:07:52
【问题描述】:

我有一个大小为 400x1 的单元格。它基本上由字符串形式的数字组成。我的意思是当我这样做时

mycell{1}

它给出结果'1'

所以你可以看到数字 1 是字符串的形式。如何将其转换为数值数组?

【问题讨论】:

    标签: matlab number-formatting


    【解决方案1】:

    你也可以试试cellfun(@str2num,mycell) 如果你有一个双精度元胞数组:

    mycell = {'1.56548524'; '1.5265'; '-4.2616' ;'-0.2154' ;'2.15'};

    你可以试试

    mat = cellfun(@str2num,mycell)

    【讨论】:

      【解决方案2】:
      str2double(mycell)
      

      假设你有一系列看起来像双精度的东西:

      >> c = {'1' '2' ; '3' '4'}
      
      c = 
      
          '1'    '2'
          '3'    '4'
      
      >> str2double(c)
      
      ans =
      
           1     2
           3     4
      
      >> whos ans
        Name      Size            Bytes  Class     Attributes
      
        ans       2x2                32  double              
      

      如果你有一些看起来不像双精度的东西,你会在结果的那个单元格中得到一个NaN

      >> c{2,2} = 'aei'
      
      c = 
      
          '1'    '2'  
          '3'    'aei'
      
      >> str2double(c)
      
      ans =
      
           1     2
           3   NaN
      

      【讨论】:

      • +1 -> 这比我回答的原始部分更笼统:)
      【解决方案3】:

      如果 size(mycell) 是 400x1 ,就像这样。 . . . .

      str2num(cell2mat(mycell))
      

      ...如果尺寸为 1x400 则像这样

      str2num(cell2mat(mycell'))
      

      但是,如果您的任何字符串包含不同数量的字符,这将导致问题,即

      mycell{1} = '2'
      mycell{2} = '33'
      

      如果你有这样的情况,

      str2double(mycell)
      

      ...似乎可以处理这个问题,正如其他答案中提到的那样!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-22
        • 2017-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多