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

MATLAB: Delete elements in cell array with certain length

如何删除元胞数组中少于 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)我知道如何获取每个元素的长度,但是如何删除特定长度的元素?

只要按逻辑索引选择元素多于4的:

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

此代码将满足您的需要。不过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