Некоторые специфика выполнения арифметических и логических операций.
При составлении арифметических выражений система MATLAB допускает использование традиционных знаков арифметических операций и символов специальных операций, представленных в таблице 2.6.1.
Вместе с тем, арифметические операции реализованы в MATLAB с некоторыми характерными особенностями. Наиболее привычным с этих позиций является сложение скалярных величин (т.е. массивов размерности 1х1), аналогичное соответствующему действию в большинстве языков программирования. Однако, если обоими операндами являются массивы одинаковой размерности, то осуществляется покомпонентное сложение элементов с одинаковыми индексами. Если же к массиву любой размерности добавляется скалярная величина, то она добавляется к каждому элементу
Таблица 2.6.1. Знаки арифметических операций и символы специальных операций в системе MATLAB.
Символ | Выполняемое действие |
Операции над числовыми величинами | |
+ | Покомпонентное (поэлементное) сложение числовых массивов одинаковой размерности; добавление скалярной величины к каждому элементу массива. |
– | Покомпонентное вычитание числовых массивов одинаковой размерности; вычитание скалярной величины к каждому элементу массива. |
* | Умножение матриц в соответствии с правилами линейной алгебры; умножение всех элементов массива на скаляр. |
.* | Покомпонентное умножение элементов массивов одинаковой размерности. |
/ | Деление скаляра на скаляр; покомпонентное деление всех элементов массива на скаляр; A/B=A*B-1 (A, B – квадратные матрицы одного порядка). |
./ | Покомпонентное деление элементов массивов одинаковой размерности. |
\ | A\B=A-1*B (левое матричное деление, A – квадратная матрица). |
.\ | A.\B – покомпонентное деление элементов B на A (левое поэлементное деление). |
^ | Возведение скаляра в любую степень; вычисление целой степени квадратной матрицы. |
.^ | Покомпонентное возведение в степень элементов массива. |
' | Вычисление сопряженной матрицы. |
.' | Транспонирование матрицы. |
Логические операции | |
& | Логическое умножение скаляров; логическое покомпонентное умножение массивов одинаковой размерности; логическое умножение массива на скаляр. |
| | Логическое сложение скаляров; логическое покомпонентное сложение массивов одинаковой размерности; логическое сложение массива со скаляром. |
~ | Логическое отрицание скаляра или всех элементов массива. |
Операции отношения (операции сравнения) | |
= = | Проверка на равенство. |
~= | Проверка на неравенство. |
> | Проверка на «больше». |
>= | Проверка на «больше или равно». |
< | Проверка на «меньше». |
<= | Проверка на «меньше или равно». |
массива (т.е. добавляемая скалярная величина, по сути, преобразуется в массив той же размерности, что и первое слагаемое (это своего рода аналог приведения типов в выражениях с «разнокалиберными» операндами) и каждый элемент такого сформированного массива равен исходной скалярной величине). Тем не менее, всякая попытка сложить массивы разной размерности (за исключением случая, когда один из операндов – массив размерности 1х1) приводит к соответствующему сообщению об ошибке. Аналогичное приведение типов выполняется для большинства операций, когда одним из операндов является массив, а вторым – скаляр.
Заметим, что исторически впервые знак операции возведения в степень в виде x**y появился в языке программирования FORTRAN в 1954 году. Вертикальная стрелка в качестве обозначения операции возведения в степень была предложена несколько лет спусти при разработке языка Algol 58. Символ ^ для обозначения операции возведения в степень использовался в языке программирования Basic, а позднее он же стал использоваться в MATLAB. С сожалением приходится констатировать, что такие популярные языки программирования как C и Pascal даже не включили операцию возведения в степень в набор элементарных действий (для соответствующих целей приходится использовать специальные библиотечные функции).