【问题标题】:regexp format and using 2 cell arrays正则表达式格式并使用 2 个元胞数组
【发布时间】:2015-05-26 18:33:58
【问题描述】:

我有一个由 20 个单元格组成的矩阵,名为 T。 此矩阵中的每个单元格都包含下一个内容:

1,26:00:01.490, 2.40,101.2,  7.8,-24.0,20.40,-0.76,-0.26

我想将其分隔并分成列,所以我使用了:

Data=regexp(T,',','split');

结果是我得到了 Data = 20x1 个单元格,每个单元格内都有另一个单元格,其中包含我想要的分割向量。

到目前为止一切都很好,但接下来我要做的是获取所有时间变量(例如26:00:01.490),但它们在 2 个单元格内。 我想做的是Data{:,1}{1,2},但它说坏的单元格引用操作是一个错误。

有人知道如何在另一个单元格内的单元格数组中获取整列吗?

【问题讨论】:

    标签: regex matlab multiple-columns cell-array


    【解决方案1】:

    如果所有二级单元格的大小相同(即所有字符串的逗号个数相同),则可以将所有二级单元格垂直连接起来形成一个二维单元格数组,然后就很容易了访问列。

    例如:

    >> T(1,:) = {'1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// example...
    >> T(2,:) = {'2,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// ...with 2 rows
    >> Data = regexp(T,',','split'); %// as per your code
    >> Data = vertcat(Data{:}); %// concatenate vertically to obtain 2D cell array
    >> Data(:,1:2) %// now you can access columns
    ans = 
        '1'    '26:00:01.490'
        '2'    '26:00:01.490'
    

    【讨论】:

    • 嗨,谢谢你们两位的cmets,我只是不明白为什么我需要做repmat,它不只是乘以我的整个矩阵吗?
    • @ben repmat 只是我用来定义两行示例T 的简单方法。我已经编辑了答案以使其更清晰
    • 谢谢,我明白了。
    【解决方案2】:

    您可以通过使用vertcat{:} 的组合来连接1x9 单元格之间的数据。

    %//First form T
    str='1,26:00:01.490, 2.40,101.2,  7.8,-24.0,20.40,-0.76,-0.26';
    str=repmat({str},20,1);
    Data=regexp(str,',','split');
    Data1=vertcat(Data{:});
    
    %//Get your time data in form of cells
    timeData_cells=Data1(:,2);
    
    %//Get your time data in form of a matrix
    timeData_matrix=vertcat(Data1{:,2}) %//This will work only if all time strings 
                                        %//have the same length. 
    
    %Answer
    timeData_cells=
        '26:00:01.490'
        '26:00:01.490'
              .
              .
              .
        '26:00:01.490'
        '26:00:01.490'
    
    timeData_matrix=
        26:00:01.490
        26:00:01.490
             .
             .
             .
        26:00:01.490
        26:00:01.490
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-18
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      相关资源
      最近更新 更多