【问题标题】:MATLAB partition cell arrayMATLAB 分区元胞数组
【发布时间】:2017-12-03 05:33:21
【问题描述】:

我有一个单元格数组,它有 128 个字符长,即

c = {'1......128'}

我想做的是将它分成 8 个块,从左侧开始,然后将每个 8 个块放入一个新的单元格数组中。最简单的方法是什么?

【问题讨论】:

    标签: arrays string matlab cell


    【解决方案1】:

    一行就可以搞定

    mycell = repelem('a', 128); % creating the cell
    
    newcells = cellstr(reshape(mycell{:},8,[])'); % cells with 8 characters each
    

    如果您的单元格只是 1x1 有 128 个字符。

    【讨论】:

      【解决方案2】:
      valS = 1;
      valE = 8;
      
      for ii=1:(128/8)
         newC{ii,:} = c{valS:valE};
         valS = valE + 1; % after first loop valS = 9 ...
         valE = valE + 8; % after first loop valE = 16 ...
      end
      

      如果你想将 newC 完全分成不同的变量,你也可以使用 eval

      【讨论】:

      • 这行不通,因为c 的尺寸是1x1。您还应该避免动态调整 newC 的大小。
      【解决方案3】:

      接下来呢?

      res = cell(1,16);
      for ii=0:15
          res{ii} = c{1}((1:8)+ii*8);
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-22
        • 2013-08-09
        相关资源
        最近更新 更多