Удаление строк с одинаковым значением первого столбца в Matlab - PullRequest
0 голосов
/ 25 мая 2011

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

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

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

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

Спасибо!

1 Ответ

2 голосов
/ 25 мая 2011

Вы можете использовать функции 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, прежде чем делать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...