3
我有一个约6000行的单元阵列。接下来,我有一个具有一组行索引的向量,我们称它为removalIdx
。我想创建一个新的单元格数组,其中包含原始单元格数组的所有行,其中包含removalIdx
指定的行。任何想法如何做到这一点,而不会回到for循环?如何从单元格数组中删除特定的一组行?
我有一个约6000行的单元阵列。接下来,我有一个具有一组行索引的向量,我们称它为removalIdx
。我想创建一个新的单元格数组,其中包含原始单元格数组的所有行,其中包含removalIdx
指定的行。任何想法如何做到这一点,而不会回到for循环?如何从单元格数组中删除特定的一组行?
下面的示例代码应该回答你的问题:
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
@robguinness这一切都归结为'()'与'{}'。使用圆括号“()”对单元格数组进行索引的方法与数字矩阵几乎相同。但用'{}'索引会得到你评论中的行为,即用空矩阵替换单元格的内容。 ps很高兴我能帮忙。 –