我有一个包含双数组的单元格数组,如:
x = {[4,1] [4,3] [1,1] [2,3] [2,1]};
我想检查单元格数组中是否包含[1,1],如果是,则删除它。我这样做了:
x(find(cellfun(@all,cellfun(@(x)x==[1,1],x(:),'UniformOutput', false))==1)) = []
虽然看起来很复杂,但有任何简化建议吗?提前谢谢!
答案 0 :(得分:2)
不使用cellfun
,可以使用ismember
检测匹配的行并将其删除 -
x(ismember(vertcat(x{:}),[1 1],'rows'))=[]
答案 1 :(得分:0)
基本上与您使用的代码相同,但删除所有不必要的代码。您不需要两次应用cellfun来应用两个嵌套函数。改为传递嵌套函数。
x(cellfun(@(x)all(x==[1,1]),x)=[]
除此之外,请看一下“逻辑索引”,在这种情况下你不需要find
。