在单元格中找到重复的数字

时间:2012-03-05 12:59:36

标签: matlab

我有一个包含许多数字数组的单元格。

我需要找到重复项(如果有的话),并删除包含任何重复项的最短数组。

示例:在c = {[1 2 3] [4 5 6] [1 7 8 9]}中,数字1是重复的,因此单元格应为c = {[4 5 6] [1 7 8 9]},因为[1 2 3]是最短的数组。

单元格和数组的大小各不相同。

1 个答案:

答案 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