Раздел: Документация
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
|