Поиск дубликатов в ячейках - PullRequest
3 голосов
/ 05 марта 2012

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

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

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

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

1 Ответ

1 голос
/ 05 марта 2012

Это можно сделать с помощью функции 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...