Операторы MATLAB: Арифметические, логические, битовые и операции над множествами
Оператор — символ, указывающий компилятору выполнить математическую или логическую операцию. MATLAB работает с матрицами и массивами, поэтому операторы работают как со скалярами, так и с нескалярными данными.
Арифметические операторы
Два типа:
- Матричные — как в линейной алгебре.
- Поэлементные (array) — операция применяется к каждому элементу. Отличаются точкой
.(кроме + и -).
| № | Оператор и описание |
|---|---|
| 1 | + Сложение или унарный плюс. A+B складывает A и B. Размеры должны совпадать или один — скаляр. |
| 2 | - Вычитание или унарный минус. A-B вычитает B из A. Размеры должны совпадать или один — скаляр. |
| 3 | * Матричное умножение. C = A*B — линейно-алгебраическое произведение. Число столбцов A = число строк B. Скаляр умножает матрицу любого размера. |
| 4 | .* Поэлементное умножение. A.*B — произведение соответствующих элементов. Размеры должны совпадать или один — скаляр. |
| 5 | / Матричное правое деление. B/A ≈ B*inv(A). Точнее: B/A = (A'\B')'. |
| 6 | ./ Поэлементное правое деление. A./B — элементы A(i,j)/B(i,j). Размеры совпадают или один — скаляр. |
| 7 | \ Матричное левое деление. A\B ≈ inv(A)*B (но вычисляется иначе). Если A квадратная и B вектор-столбец, X = A\B решает AX = B. Предупреждение, если A плохо обусловлена. |
| 8 | .\ Поэлементное левое деление. A.\B — элементы B(i,j)/A(i,j). Размеры совпадают или один — скаляр. |
| 9 | ^ Матричная степень. X^p — X в степени p (скаляр). Для целых — повторное возведение в квадрат. Для отрицательных — инверсия. Для остальных — через собственные значения/векторы. |
| 10 | .^ Поэлементная степень. A.^B — элементы A(i,j)^B(i,j). Размеры совпадают или один — скаляр. |
| 11 | ' Матричное транспонирование (с комплексно-сопряжением для комплексных). |
| 12 | .' Поэлементное транспонирование (без комплексно-сопряжения). |
Операторы отношения
Работают со скалярами и массивами. Для массивов — поэлементное сравнение, возвращают логический массив того же размера.
| № | Оператор и описание |
|---|---|
| 1 | < Меньше |
| 2 | <= Меньше или равно |
| 3 | > Больше |
| 4 | >= Больше или равно |
| 5 | == Равно |
| 6 | ~= Не равно |
Логические операторы
Два типа:
- Поэлементные (element-wise) — работают с соответствующими элементами логических массивов. Символы:
&(AND),|(OR),~(NOT). - Сокращенные (short-circuit) — работают со скалярами и логическими выражениями. Символы:
&&(AND),||(OR).
Битовые операции
Работают с битами целых чисел.
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Пример: A = 60 (0011 1100), B = 13 (0000 1101)
A & B = 0000 1100 (12) A | B = 0011 1101 (61) A ^ B = 0011 0001 (49) ~A = 1100 0011 (-61 в доп. коде)
Функции битовых операций
| Функция | Назначение |
|---|---|
| bitand(a, b) | Побитовое AND целых a и b |
| bitcmp(a) | Побитовое дополнение a |
| bitget(a, pos) | Получить бит в позиции pos числа a |
| bitor(a, b) | Побитовое OR целых a и b |
| bitset(a, pos) | Установить бит в позиции pos числа a |
| bitshift(a, k) | Сдвиг a на k бит влево (×2^k). Отрицательное k — сдвиг вправо (÷2^|k|) с округлением к -∞. Переполнение обрезается. |
| bitxor(a, b) | Побитовое XOR целых a и b |
| swapbytes | Перестановка байтов |
Операции над множествами
| № | Функция и описание |
|---|---|
| 1 | intersect(A,B) Пересечение массивов; общие значения в отсортированном порядке. |
| 2 | intersect(A,B,'rows') Строки, общие для A и B (как единицы). Результат отсортирован. |
| 3 | ismember(A,B) Массив того же размера, что A: 1 где элементы A есть в B, иначе 0. |
| 4 | ismember(A,B,'rows') Вектор: 1 где строки A есть в B, иначе 0. |
| 5 | issorted(A) True если элементы A отсортированы (A == sort(A)). |
| 6 | issorted(A, 'rows') True если строки матрицы A отсортированы (A == sortrows(A)). |
| 7 | setdiff(A,B) Разность: значения в A, которых нет в B. Отсортировано. |
| 8 | setdiff(A,B,'rows') Строки из A, которых нет в B. Не поддерживает cell-массивы. |
| 9 | setxor Симметрическая разность (XOR) двух массивов. |
| 10 | union Объединение двух массивов. |
| 11 | unique Уникальные значения массива. |
MATLAB
- Операторы C# — исчерпывающее руководство по операторам в C#
- Освоение операторов C++: полное руководство с практическими примерами
- Операторы в C: исчерпывающее руководство
- Мастерство операторов Python: Полное руководство
- Освоение операторов Java: типы, синтаксис и практические примеры
- Операторы в C: полное руководство по арифметическим, битовым, логическим и другим операторам
- MATLAB: Комплексный обзор ведущей среды численных вычислений
- Переменные в MATLAB: Основы, примеры и работа с векторами/матрицами
- Основные команды MATLAB для эффективных вычислений
- Типы данных в MATLAB: Полное руководство с примерами