MATLAB:删除单元格数组中具有一定长度的元素

时间:2015-04-24 06:36:21

标签: arrays matlab cell-array

如何删除内部少于5个元素的单元格数组的所有元素。

result{1}= 1
result{2}= [2 3 4 5 6 7 8]
result{3}= [9 10 11 12 13 14 16 17 18]
result{4}= [19 20 21]

在此示例中,我想删除result{1}result{4},因为它们内部的元素少于5个。

有了这个主题(matlab length of each element in cell array),我知道如何获取每个元素的长度,但是如何删除特定长度的元素?

2 个答案:

答案 0 :(得分:7)

只需通过逻辑索引选择具有4个以上元素的元素:

result = result(cellfun('length', result) >= 5);

答案 1 :(得分:0)

此代码将满足您的需求。但是Mohsen的上述答案非常紧凑而且很好。

result{1}= 1;
result{2}= {2 3 4 5 6 7 8};
result{3}= {9 10 11 12 13 14 16 17 18};
result{4}= {19 20 21};

i = 1;
while i<=size(result,2)
    if size(result{i},2)<5
        result(i)=[];
    end
    i = i+1;
end