Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -
Справка Scilab >> Основные функции > Операции с множествами > unique

unique

удалить все повторяющиеся компоненты из вектора или матрицы

Синтаксис

N = unique(M)
N = unique(M, orient)
[N, k] = unique(..)

Аргументы

M

вектор или матрица чисел или строк

orient

флаг с возможными значениями: 1 или "r", 2 или "c". Не может использоваться, если M является гиперматрицей.

N

  • Если orient не используется: вектор извлечённых M компонентов, сортированных в полядке возрастания.
  • Если orient используется: матрица извлечённых M строк или столбцов, сортированных в лексикографическом порядке возрастания.

k

Вектор индексов первых встреченных значений, таких что N(i) = M(k(i)) или N(i,:) = M(k(i),:) или N(:,i) = M(:,k(i)).

Описание

unique(M) возвращает вектор, который содержит уникальные элементы M в порядке возрастания.

unique(M,"r") или unique(M,1) возвращает уникальные строки M в лексикографическом порядке возрастания.

unique(M,"c") или unique(M,2) возвращает уникальные столбцы M в лексикографическом порядке возрастания.

Извлечённые компоненты, строки или столбцы могут быть пересортированны в их исходном порядке через сортировку с помощью k. См. первый пример.

Примеры

With some numbers:

M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
          0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
          ])
[u, k] = unique(M)
[uc, kc] = unique(M, "c")

// Получим недублированные столбцы в исходном порядке:
M(:, gsort(kc,"g","i"))
--> M 
 M = 
  2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
  0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0

--> [u, k] = unique(M)
 u  =
  0
  1
  2

 k  =
   2.
   4.
   1.

--> [uc, kc] = unique(M, "c")
 uc  =
  0  0  0  1  1  1  2  2
  0  1  2  0  1  2  0  2

 kc  =
   14.   2.   11.   12.   5.   6.   1.   3.

--> // Получим недублированные столбцы в исходном порядке:
--> M(:, gsort(kc,"g","i"))
 ans  =
  2  0  2  1  1  0  1  0
  0  1  2  1  2  2  0  0

С комплексными числами:

i = %i;
c = [1+i, 1-i, -i, i, -i, 1+i]
[u, k] = unique(c)
[uc, kc] = unique(c, "c")
--> c = [1+i, 1-i, -i, i, -i, 1+i]
 c  =
   1. + i     1. - i  -i    i   -i    1. + i

--> [u, k] = unique(c)
 u  =
  -i    i    1. - i   1. + i

 k  =
   3.   4.   2.   1.

С текстом:

t = ["AB" "BA" "BA" "BA" "AB" "BA" "AB" "AB" "BB" "AA" "AB" "BA" "BA" "BA" "AA"
     "AA" "AA" "AB" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
    ]
[u, k] = unique(t)
[uc, kc] = unique(t, "c")
 t  =
!AB  BA  BA  BA  AB  BA  AB  AB  BB  AA  AB  BA  BA  BA  AA  !
!AA  AA  AB  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !

--> [u, k] = unique(t);
 u  =
!AA  !
!AB  !
!BA  !
!BB  !

 k  =
   2.
   1.
   3.
   10.

--> [uc, kc] = unique(t, "c")
 uc  =
!AA  AA  AB  AB  AB  BA  BA  BA  BB  !
!AA  AB  AA  BA  BB  AA  AB  BB  AB  !

 kc  =
   15.   10.   1.   8.   5.   2.   3.   6.   9.

Смотрите также

  • members — count (and locate) in an array each element or row or column of another array
  • gsort — сортировка по алгоритму быстрой сортировки
  • vectorfind — ищет в строках или столбцах матриц совпадения с вектором
  • grep — поиск соответствий строки в векторе строк
  • union — выделяет объединение компонентов векторов
  • intersect — returns the unduplicated elements or rows or columns met in both input arrays

История

ВерсияОписание
6.0.2 unique() теперь может использоваться для удаления дубликатов комплексных чисел.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Feb 14 15:04:55 CET 2019