Функции
обработки множеств
Множество
—
первичное понятие математики, не имеющее четкого определения. Под множеством
подразумевается совокупность некоторых объектов, например книг в библиотеке,
людей в зале или элементов вектора. В этом разделе приводятся некоторые функции
для обработки множеств, представленных векторами. Они широко используются при
анализе и обработке данных.
-
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
|
|
|
|
|
Содержание раздела