8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 128 129 130 131 132 133 134 ... 365

Логические выражения с массивами и числами

MATLAB является средой, ориентированной на вычисления с матричными данными. В предыдущих разделах использовались логические выражения вида а > о, (а == 1) & (Ь > 2), где а, ь— числа. Поскольку MATLAB представляет числа массивами размера один на один, то естественно ожидать, что и массивы могут входить в логические выражения. Универсальным средством обработки матричных данных служат логические операции. Они позволяют просто и наглядно записывать алгоритмы, реализация которых в других языках достаточно громоздка. В данном разделе описано расширение логических операций и операций отношения на случай массивов. Разумеется, все, что касается логических операций и операций отношения для массивов, справедливо и для чисел. Объяснено применение логического индексирования при работе с массивами, которое существенно облегчает обработку данных.

Операции отношения

Результатом операций отношения, как любого логического выражения, может быть или "истина", или "ложь". При х равном двум, условие х >= 2 оказывается истинным. "Истине" в MATLAB соответствует логическая единица, "ложь" обозначается логическим нулем. Арифметические переменные могут использоваться в одном выражении с логическими, в отличие от многих языков программирования. Например, выражение а + (Ь > с) не является ошибочным, в чем легко убедиться при помощи команд:

» а = 1; » Ь = 5; » с = 3;

» а = а + (Ь > с)

а =

2

Условие ь > с выполняется, т. е. является "истиной". Результат операции отношения "больше" равен единице, которая прибавляется к а. Использование операции "меньше" привело бы к логическому нулю, сложение которого с переменной а не изменило бы ее значения.

Результат выполнения логического выражения может быть присвоен переменной:

» f = а <= ь f =


Логические операции с числами и массивами

Конструирование условий операторов if и while осуществляется с помощью логических операторов and, or и not или в эквивалентном виде с использованием логических операций &, и ~. Вычисление логических выражений, содержащих and (&), or () и not (~), с массивами приводит к поэлементному их выполнению над элементами массивов, результатом является массив того же размера, что и исходные, причем:

П and (s) дает единицу, если оба соответствующих элемента массивов не равны нулю, если хотя бы один из них ноль, то результатом будет также ноль;

П or (i) дает единицу, если хотя бы один элемент не равен нулю;

Посмотрите тип f в окне Workspace браузера рабочей среды — переменная f является логической, точнее логическим массивом размера 1 на 1.

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

» А = [1 2 3 4; 5 6 7 8; 9 10 11 12]; » В = [3 2 3 3; 5 6 2 2; 4 10 11 11];

» С = А == В С =

0110

1100

0110

» D = А > В D =

0 0 0 1 0011

1001

При сравнении двумерных массивов больших размеров удобно использовать команду spy для визуализации результата, которая приводит к появлению графического окна с шаблоном матрицы. Элементы результирующей матрицы отображаются точками, что наглядно показывает, для каких элементов выполняется проверяемое условие (построение шаблона матрицы командой spy описано в разд. "Визуализация матриц" главы 2).


п not (~) применяется к одному массиву, если элемент массива не ноль, то соответствующий элемент результирующего массива равен нулю, если элемент исходного массива ноль, то — единице.

Примечание

Операндами логических выражений могут быть как логические массивы, так и числовые. Одним из операндов логических выражений может быть число или логический ноль или единица. В этом случае происходит поэлементное выполнение логической операции для каждого элемента массива и числа. Выполнение операторов and и or над массивами различных размеров недопустимо.

Следующие примеры демонстрируют использование логических операций:

» А = [13; -1 0]; » В = [0 4; S 8] ; » С = А&В С =

01

10 » D = АВ

D =

11

11

» Е = -А Е =

00

01

Кроме операторов and и or в MATLAB определена функция хог, выполняющая операцию "исключающее или". Функция хог имеет два входных аргумента — массивы одинакового размера. Если один из элементов входного массива не равен нулю, а второй равен, то хог записывает единицу на соответствующее место выходного массива. Во всех остальных случаях (ноль и ноль, не ноль и не ноль) хог записывает ноль. Аргументами хог могут быть массив и число и, конечно, два числа.

Логические операции s и учитывают оба операнда для вычисления результата. В то же время значение логического выражения в ряде случаев определяется значением только первого операнда. Если первый операнд логического "или" является "истиной", то результат всегда будет "истина". Если первый операнд логического "и" — "ложь", то результат— "ложь". Операции &б и отличаются от & и ( тем, что в перечисленных двух ситуациях



0 ... 128 129 130 131 132 133 134 ... 365