Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Некоторые специфика выполнения арифметических и логических операций.

При составлении арифметических выражений система MATLAB допускает использование традиционных знаков арифметических операций и символов специальных операций, представленных в таблице 3.1.

Таблица 3.1. Знаки арифметических операций и символы специальных операций в системе MATLAB.

Символ Выполняемое действие
Операции над числовыми величинами
+ Покомпонентное (поэлементное) сложение числовых массивов одинаковой размерности; добавление скалярной величины к каждому элементу массива.
Покомпонентное вычитание числовых массивов одинаковой размерности; вычитание скалярной величины к каждому элементу массива.
* Умножение матриц в соответствии с правилами линейной алгебры; умножение всех элементов массива на скаляр.
.* Покомпонентное умножение элементов массивов одинаковой размерности.
/ Деление скаляра на скаляр; покомпонентное деление всех элементов массива на скаляр; A/B=A*B-1 (A, B – квадратные матрицы одного порядка).
./ Покомпонентное деление элементов массивов одинаковой размерности.
\ A\B=A-1*B (левое матричное деление, A – квадратная матрица).
.\ A.\B – покомпонентное деление элементов B на A (левое поэлементное деление).
^ Возведение скаляра в любую степень; вычисление целой степени квадратной матрицы.
.^ Покомпонентное возведение в степень элементов массива.
' Вычисление сопряженной матрицы.
.' Транспонирование матрицы.
Логические операции
& Логическое умножение скаляров; логическое покомпонентное умножение массивов одинаковой размерности; логическое умножение массива на скаляр.
| Логическое сложение скаляров; логическое покомпонентное сложение массивов одинаковой размерности; логическое сложение массива со скаляром.
~ Логическое отрицание скаляра или всех элементов массива.
Операции отношения (операции сравнения)
== Проверка на равенство.
~= Проверка на неравенство.
> Проверка на «больше».
>= Проверка на «больше или равно».
< Проверка на «меньше».
<= Проверка на «меньше или равно».

 

Вместе с тем, арифметические операции реализованы в MATLAB с некоторыми характерными особенностями. Наиболее привычным с этих позиций является сложение скалярных величин (т.е. массивов размерности 1х1), аналогичное соответствующему действию в большинстве языков программирования. Если обоими операндами являются массивы одинаковой размерности, то осуществляется покомпонентное сложение элементов с одинаковыми индексами. Если же к массиву любой размерности добавляется скалярная величина, то она добавляется к каждому элементу массива (т.е. добавляемая скалярная величина, по сути, преобразуется в массив той же размерности, что и первое слагаемое (это своего рода аналог приведения типов в выражениях с «разнокалиберными» операндами) и каждый элемент такого сформированного массива равен исходной скалярной величине). Тем не менее, всякая попытка сложить массивы разной размерности (за исключением случая, когда один из операндов – массив размерности 1х1) приводит к соответствующему сообщению об ошибке. Аналогичное приведение типов выполняется для большинства операций, когда одним из операндов является массив, а вторым – скаляр.

 

Применение операций отношения и логических операций к массивам.

Подчеркнем, что рассмотренные ранее для скаляров операции отношения и логические операции применительно к массивам выполняются поэлементно, в связи с чем размеры обоих операндов должны быть одинаковы. Так, например, будем иметь (в режиме командной строки):

Одномерные массивы

>> t=~[-2]

t =

>> if (-2), u=cos(pi/4), end

u =

0.7071

>> if (0), u=cos(pi/4), end

>> a=[0 5 9 -1]

a =

0 5 9 -1

>> b=[4 -2 5 10]

b =

4 -2 5 10

>> t=~a

t =

1 0 0 0

>> t=~b

t =

0 0 0 0

>> t=a>=b

t =

0 1 1 0

>> t=any(a)

t =

>> t=all(a)

t =

>> t=any(b)

t =

>> t=all(b)

t =

>>

 

Двумерные массивы

>> A=[1 1 1; 2 2 2; 4 4 4] A = 1 1 1 2 2 2 4 4 4 >> B=[0 0 0; 9 9 9; 2 3 4] B = 0 0 0 9 9 9 2 3 4 >> A<=B ans = 0 0 0 1 1 1 0 0 1

Анализ результата операции показывает, что каждый нуль означает «ложь» для данной позиции внутри матриц, а единица – «истину». Эта матрица показывает (своими единичными элементами), на каких позициях элементы матрицы A не превосходят соответствующие элементы матрицы B.

Следует отметить еще пару логических функций – all и any. Функция all в случае векторов возвращает единицу («истину»), если все элементы вектора не равны нулю («истинны») и возвращает нуль, если хотя бы один элемент вектора нулевой. Функция any действует противоположным образом. В случае же матриц обе эти функции работают с их столбцами, возвращая для каждого столбца результат по описанной схеме, например:

>> A=[1 1 1; 2 2 2; 4 4 4] A = 1 1 1 2 2 2 4 4 4 >> B=[0 0 0; 9 9 9; 2 3 4] B = 0 0 0 9 9 9 2 3 4   >> all(A) ans = 1 1 1 >> all(B) ans = 0 0 0 >> any(A) ans = 1 1 1 >> any(B) ans = 1 1 1

 

В том особом случае, когда один из операндов скаляр, производится его предварительно расширение до массива того же размера, смысл которого уже пояснялся в таблице 3.1 (иными словами, скаляр сравнивается с каждым из элементов массива-операнда, а результатом является массив из нулей и единиц того же размера, что и массив-операнд; принцип заполнения массива-результата следующий: если результат сравнения скалярного операнда и элемента массива-операнда истинен, в соответствующем месте массива-результата стоит единица, а в противном случае – нуль). Так, например, будем иметь (в режиме командной строки):

>> A=[1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> x=5 x = >> A<=x ans = 1 1 1 1 1 0 0 0 0

 

Работа логической функции «Исключающее «или» в случае, если операндами являются вещественные скаляры. Функция xor работает также и с массивами одинаковых размеров, поэлементно реализуя операцию «Исключающее ИЛИ». Напомним, что каждый элемент трактуется как истинный, если он не равен нулю и как ложный в случае его равенства нулю. Продемонстрируем результат работы функции xor над некоторыми заданными матрицами A и B, рассмотренными в предпоследнем примере:

>> A=[1 1 1; 2 2 2; 4 4 4] A = 1 1 1 2 2 2 4 4 4 >> B=[0 0 0; 9 9 9; 2 3 4] B = 0 0 0 9 9 9 2 3 4   >> xor(A,B) ans = 1 1 1 0 0 0 0 0 0

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...