#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. это все строки или они смешаны?