【问题标题】:How to remove a particular set of rows from a cell array?如何从元胞数组中删除一组特定的行?
【发布时间】:2012-11-29 12:08:58
【问题描述】:

我有一个大约 6000 行的元胞数组。接下来,我有一个带有一组行索引的向量,我们称之为removalIdx。我想创建一个新的元胞数组,其中包含原始元胞数组中的所有行,removalIdx 指定的行除外。关于如何在不恢复到 for 循环的情况下执行此操作的任何想法?

【问题讨论】:

    标签: matlab octave


    【解决方案1】:

    以下示例代码应该可以回答您的问题:

    B = {'hello';'world';'are';'you';'there'}; %# Example cell array
    ToRemove = [2; 4]; %# Example indices to remove
    Soln = B; %# Create the new cell array
    Soln(ToRemove) = []; %# Remove the offending rows
    

    注意:

    >> Soln
    
    Soln = 
    
        'hello'
        'are'
        'there'
    

    【讨论】:

    • 哇!谢谢!我很惊讶这很容易!我会假设将行设置为 [] 会将它们作为空单元格保留在数组中,但我确认它实际上完全删除了行。再次感谢!
    • @robguinness 这一切都归结为(){}。用括号 () 索引元胞数组的工作方式与数值矩阵几乎相同。但是使用{} 进行索引会在您的评论中得到行为,即用空矩阵替换单元格的内容。 ps很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2015-10-27
    • 2015-03-01
    • 1970-01-01
    • 2016-10-26
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多