Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Анализ данных.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Функции поразрядной обработки.

Ряд функций предназначен для поразрядной логической обработки данных:

- bitand (A,B) — возвращает поразрядное И двух неотрицательных целых аргу­ментов А и В. Пример:

» f=bitand(7.14)

f = 6

- bitcmp(A,n) — возвращает поразрядное дополнение аргумента А как n-битовое неотрицательное целое число. Пример:

» g=bitcmp(6,4)

g = 9

- bitor (A,B) — возвращает поразрядное ИЛИ двух неотрицательных целых ар­гументов А и В. Пример:

» v=bitor (12,21)

v = 29

- bitmax — возвращает максимальное целое число без знака, которое может быть представлено в формате чисел с плавающей запятой применительно к исполь­зуемому компьютеру. Это значение определяется для комбинации, когда все биты установлены. На машинах с IEEE-арифметикой это значение равно 253-1. Пример:

» bitmax

ans = 9.0072е+015

- bitset(A,bit,v) — устанавливает бит в позиции bit равным значению v, кото­рое должно быть 0 или 1. Пример:

» d=bitset(12,2,1)

d = 14

- bitshift(A,n) — возвращает значение аргумента А, сдвинутое на n бит. Если n>0, это аналогично умножению на 2n (левый сдвиг). Если п<0, это аналогично де­лению на 2 n (правый сдвиг). Пример:

» f=b1tsh1ft(4,3)

f = 32

- bitset(A,bit) — устанавливает бит в позиции bit аргумента А в единичное зна­чение. Аргумент А должен быть неотрицательным целым, bit — это номер в диапазоне между 1 и числом бит в целом числе, представленном в формате чисел с плавающей запятой.

- bitget(A,bit) — возвращает значение бита в позиции bit операнда А. Аргумент А должен быть неотрицательным целым числом, bit — это номер между 1 и числом бит в целом числе формата с плавающей запятой. Пример:

» disp(dec2bin(23))

10111

» С - bitget(23,5 : -l : l)

С = 1 0 1 1 1

- bitxor (A,B) — возвращает результат поразрядного исключающего ИЛИ для двух аргументов А и В. Оба аргумента должны быть целыми. Пример:

» x=bitxor (12,31)

х = 19

Чтобы операнды этих функций гарантированно были целыми числами, при их задании рекомендуется использовать функции ceil, fix, floor и round.

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

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

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

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

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

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

» [c,la,ib] = intersect(A,В)

с = 1 2 6 7

ia = 1 3 4 2

ib = 6 2 5 1

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

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

Пример:

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

» а = [1 2 3 4 5 6 7 8];

» 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(…) — возвращает также вектор индексов i, такой что с = a(i) или с = a(i,:).

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

Пример:

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

» b = [1 4 5 6 8 9 4]

» с = setdiff(a,b)

с = 2 3 7 10 13 20

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

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

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

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

Пример:

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

» b = [-2 pi 0 Inf];

» с = setxor(a,b)

с = -Inf -2.0000 -1.0000 1.0000 3.1416 NaN

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

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

- [c,ia,ib] = union(...)— дополнительно возвращает iа и ib — векторы индексов, та­кие что с = a(ia) и c=b(ib), или, для объединенных строк, с = a(ia,:) и с = 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) и а = b(j) (или b = a(i,:) и а = 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

I = 6 1 5 8 2 4 3 9

J = 2 5 7 6 3 1 4 4 8 » а=[-2,3,5;4,1,-6;2,2,7;-2,3,5]

а = -2 3 5

4 1 -6

2 2 7

-2 3 5

» c = unique(a,'rows')

с = -2 3 5

2 2 7

4 1 -6