Удаление строк с идентичным значением первого столбца в matlab

#matlab

#matlab

Вопрос:

У меня есть матрица ячеек размером 10000 X 3 в Matlab, и я хотел бы удалить строки с одинаковым значением в первом столбце.

То есть, если строка i и строка j имеют одинаковое значение в первом столбце, я бы хотел удалить обе строки.

Я должен также сказать, что в первом столбце может быть более двух строк с одинаковым значением, и в этом случае я хотел бы удалить все эти строки.

Как мне это сделать?

Спасибо!

Ответ №1:

Вы можете использовать функции histc , unique и логическое индексирование для достижения того, чего вы хотите. Вот небольшой пример.

 a=randi(10,5,3)         %#generate a sample random matrix

a =

     5     3     5
     5     7    10
     7     7     4
     8     2     6
     8     2     3

[uniqVals,uniqIndx]=unique(a(:,1));  %# get unique values and corresponding indices of the first column of a
count=histc(a(:,1),uniqVals); %# get the bin counts of the elements (i.e., find which are repeated)

b=a(uniqIndx(count==1),:)

b =

     7     7     4
  

Выбирается только строка с неповторяющимся элементом. Поскольку вы сказали, что у вас есть матрица ячеек, просто скройте ее в матрицу с помощью cell2mat , прежде чем делать это.

Комментарии:

1. это все строки или они смешаны?