У меня есть массив ячеек ‹465x1>. Для проверки каждого элемента я хочу проверить, является ли он уникальным или повторяющимся элементом.
Как проверить, является ли элемент в массиве ячеек уникальным или повторяющимся
Ответы (1)
Используйте для этой цели unique
, он также может работать с массивами ячеек:
[U, ic, iu] = unique(C);
Где C
— ваш массив ячеек. U
— это новый массив ячеек с теми же значениями, что и C
, но без повторений. Затем вы можете подсчитать количество вхождений каждого значения, используя histc
:
[U, ic, iu] = unique(C);
count = histc(iu, 1:numel(ic))
Пример
Для примера давайте сначала сгенерируем случайный массив ячеек строк:
strings = {'foo'; 'bar'; 'baz'; 'bang'};
C = strings(ceil(numel(strings) * rand(6, 1)))
Это должно сгенерировать что-то вроде этого:
C =
'bang'
'baz'
'foo'
'bang'
'bar'
'foo'
Теперь мы подсчитываем вхождения каждого значения в C
:
C = strings(ceil(numel(strings) * rand(6, 1)));
[U, ic, iu] = unique(C);
count = histc(iu, 1:numel(ic))
Это должно привести к:
U =
'foo'
'bar'
'baz'
'bang'
count =
2
1
1
2
это означает, что 'foo'
и 'bang'
повторяются дважды, а остальные только один раз, что правильно.
Если вас интересуют только действительно уникальные значения, вы можете сделать:
U(count == 1)
Что должно вернуться в нашем примере:
'bar'
'baz'
Обратите внимание, что каждый элемент в count
представляет соответствующее значение в U
(не strings
, они могут иметь другой порядок).
find
, используя U(count==1)
- person Dennis Jaheruddin; 27.12.2012