在MATLAB中从单元数组元素中删除向量

时间:2014-04-09 15:46:33

标签: matlab

我有一个包含双数组的单元格数组,如:

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)) = []

虽然看起来很复杂,但有任何简化建议吗?提前谢谢!

2 个答案:

答案 0 :(得分:2)

不使用cellfun,可以使用ismember检测匹配的行并将其删除 -

x(ismember(vertcat(x{:}),[1 1],'rows'))=[]

答案 1 :(得分:0)

基本上与您使用的代码相同,但删除所有不必要的代码。您不需要两次应用cellfun来应用两个嵌套函数。改为传递嵌套函数。

x(cellfun(@(x)all(x==[1,1]),x)=[]

除此之外,请看一下“逻辑索引”,在这种情况下你不需要find