Вы здесь

8. Функции обработки множеств

 

Функции обработки множеств

Множество — первичное понятие математики, не имеющее четкого определения. Под множеством подразумевается совокупность некоторых объектов, например книг в библиотеке, людей в зале или элементов вектора. В этом разделе приводятся некоторые функции для обработки множеств, представленных векторами. Они широко используются при анализе и обработке данных.

  •  intersect(a.b) — возвращает пересечение множеств для двух векторов а и b, т. е., общие элементы векторов а и b. Результирующий вектор отсортирован по возрастанию. Если входные массивы не являются векторами, то они рассматриваются как совокупность векторов-столбцов а=а(:) или b=b(:);

  • intersect(a,b, 'rows') — возвращает строки, общие для а и b, когда а и b  представляют собой матрицы с одинаковым числом столбцов;

  •  [c.ia.ib] = intersect(a.b) — также возвращает вектор-столбец индексов ia и ib. но так, что с = a(ia) и с = b(ib) (или с = a(ia.:) ис = b(ib.:)).

Пример:

» А = [1 7 2 6]; В = [7 2 3 4 6 1]; 

» [c,ia,ib] = intersect(А,В)

1    2    6    7

ia =

1    3    4    2 

ib = 

6    2    5    1

  •  ismember(a.S) — возвращает вектор той же длины, что и исходный а, содержащий логические единицы на месте тех элементов вектора а, которые принадлежат множеству S, и логические нули на месте тех элементов вектора а, которые не принадлежат множеству S;

  • ismember (А. S.' rows') — возвращает вектор, содержащий логические единицы там, где строки матрицы А являются также строками матрицы S, и логические нули в остальных позициях. А и S должны быть матрицами с одним числом столбцов.

Пример:

» set = [0 1 3 5 7 9 11 15 17 19]; 

» а=[1 2345678]; 

» k = ismember(a.set) 

k =

1    0    1    0    1    0    1    0

  • setdiff(a.b) — возвращает разность множеств, т. е., те элементы вектора а, которые не содержатся в векторе b. Результирующий вектор сортируется по возрастанию;

  • setdiff(a,b, 'rows') — возвращает те строки из матрицы а, которые не содержатся в матрице Ь. Матрицы а и b должны иметь одинаковое число столбцов; 

  •  [c,i] = setdiff(...) — возвращает также вектор индексов 1, такой что с = а(i) или с = а (i,;).

Если входной массив а является матрицей, то он расценивается как вектор-столбец а(:).

Пример:

» а=[2 3 5 7 8 9 10 13 20]; 

» b=[1456894] 

» с = setdiff(a.b) 

с=

2 3 7 10 13 20

  •  setxor(a.b) — исключающее ИЛИ для векторов а и b. Результирующий вектор отсортирован;

  • setxor(a,b, 'rows') — возвращает строки, которые не являются пересечениями матриц а и b. Матрицы а и b должны иметь одинаковое число столбцов;

  • [c.ia.ib] = setxor(...) — возвращает также векторы индексов ia и ib так, что с является отсортированной комбинацией элементов с = а(iа)ис = b(ib) или для комбинаций строк с = а(iа,:)ис = b(ib.;).

Если массив а является матрицей, то он расценивается как вектор-столбец а(:).

Пример:

» а = [-1 0 1 Inf -Inf NaN]; 

» b = [-2 pi 0 Inf]; 

» с = setxor(a.b)

с =

 -Inf -2.0000-1.00001.0000 3.1416 NaN

  • union(a ,b) — возвращает вектор объединенных значений из а и b без повторяющихся элементов. Результирующий вектор сортируется в порядке возрастания;

  • union(a,b, 'rows') — возвращает объединенные строки из а и b, не содержащие повторений (а и b — это матрицы с одинаковым числом столбцов);

  • [c.ia.ib] = unionL.) — дополнительно возвращает i а и i b — векторы индексов, такие что с = a(ia) и c=b(1b), или, для объединенных строк, с = а(1а.:)ис = b(ib,:). Невекторный массив а расценивается как вектор-столбец а(:). Пример:

» а=[2,4,-4,9,0]:b=[2,5,4]: 

» [c,ia,ib]=union(a,b) 

с =

-4    0    2    4    5    9 

ia =

3    5    4 

ib =

1     3     2

  • unique(a) — возвращает значения элементов из а, не содержащие повторений. Результирующий вектор сортируется в порядке возрастания. Невекторный массив расценивается как вектор-столбец а=а(: );

  • unique(a, 'rows') — возвращает уникальные строки а;

  • [b.i ,j] = unique(...) — дополнительно возвращает i и j — векторы индексов, такие что b = a(i)na = b(j) (или b = а(1,:) иа = b(j.:)).

Примеры:

» b=[-2,3,5,4,1,-6,2,2,7]

 b=

-2    3    5    4    1    -6    2    2    7 

» [c,i,j]=unique(b)

с =


-6

-2

1      2   3    4

5     7


6

1

5      8   2    4

3     9

j

=





2

5

7      6   3   1

4     4

»

a-[-2,

3.5:4.

l.-6:2,2.7;-2.3,5J


a

=





-2

3

5



4

1

-6



2

2

7



-2

3

5


»

c=uniqueCa. '

rows ' )


с

=





-2

3

5



2

2

7



4

1

-6


 


Top.Mail.Ru