Иллюстрированный самоучитель по MatLab

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

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

  • 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.:)).

Пример:

>> A = [1 7 2 6]; B = [7 2 3 4 6 1];
>> [c,ia,ib] = intersect(A,B)
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];
>> a=[12345678];
>> k = ismember(a.set)
k =
1 0 1 0 1 0 1 0
  • setdiff(a.b) – возвращает разность множеств, т. е., те элементы вектора а, которые не содержатся в векторе b. Результирующий вектор сортируется по возрастанию;
  • setdiff(a,b, 'rows') – возвращает те строки из матрицы а, которые не содержатся в матрице b. Матрицы а и b должны иметь одинаковое число столбцов;
  • [c,i] = setdiff(…) – возвращает также вектор индексов 1, такой что с = а(i) или с = а (i,;).

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

Пример:

>> a=[2 3 5 7 8 9 10 13 20];
>> b=[1456894]
>> c = setdiff(a.b)
c=
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.;).

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

Пример:

>> a = [-1 0 1 Inf - Inf NaN];
>> b = [-2 pi 0 Inf];
>> c = setxor(a.b)
c =
-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,:). Невекторный массив а расценивается как вектор-столбец а(:). Пример:
>> a=[2.4,-4.9.0]:b=[2.5.4]:
>> [c,ia,ib]=union(a,b)
c =
-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)
c = -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. 1.-6:2.2.7;-2.3.5]
a =
 -2 3 5
 4 1 -6
 2 2 7
 -2 3 5
>> c=unique('arows')
c =
 -2 3 5
 2 2 7
 4 1 -6
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.