2012-03-05 9 views
3

У меня есть ячейка, содержащая несколько массивов чисел.Поиск повторяющихся чисел в ячейках

Мне нужно найти дубликаты (если есть) и удалить самый короткий массив, содержащий любые дубликаты.

Пример: В c = {[1 2 3] [4 5 6] [1 7 8 9]} номер один дублируется, и, следовательно, ячейка должна быть c = {[4 5 6] [1 7 8 9]}, так как [1 2 3] - это самый короткий массив.

Размер ячейки и массивов варьируется.

ответ

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 
+0

ли трюк. Спасибо, не знаю о функции объединения. –

Смежные вопросы