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
如何删除元胞数组中少于 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