我有一个包含许多数字数组的单元格。
我需要找到重复项(如果有的话),并删除包含任何重复项的最短数组。
示例:在c = {[1 2 3] [4 5 6] [1 7 8 9]}
中,数字1是重复的,因此单元格应为c = {[4 5 6] [1 7 8 9]}
,因为[1 2 3]
是最短的数组。
单元格和数组的大小各不相同。
答案 0 :(得分:1)
这可以使用union
函数来完成,该函数在2个向量上进行集合联合:
c = {[1 2 3] [4 5 6] [1 7 8 9]}
remove=[];
for k=1:length(c)
for l=k+1:length(c)
if length(union(c{k},c{l}))<length(c{k})+length(c{l})
if length(c{k})<=length(c{l})
remove=[remove;k];
else
remove=[remove;l];
end
end
end
end
for k=1:length(remove)
c(remove)=[];
end