p align="center">Операторы отношения и массивы Операторы отношения в MATLAB-е сравнивают соответствующие элементы двух массивов с одинаковыми размерностями. Эти операторы всегда действуют поэлементно. В приведен-ном ниже примере, результирующая матрица показывает, где элемент матрицы A равен со-ответствующему элементу матрицы B. A = [2 7 6; 9 0 5; 3 0.5 6]; B = [8 7 0; 3 2 5; 4 -1 7]; A == B ans = 0 1 0 0 0 1 0 0 0 Для векторов и прямоугольных массивов, оба операнда должны иметь одинаковый размер или один из них должен быть скаляром. В случае когда один операнд является скаляром, а второй - нет , MATLAB проверяет данный скаляр с каждым элементом другого операнда. Те положение, где заданное отношение является истинным, принимают значение 1. Положение, где отношение является ложным, принимают значение 0. Операторы отношения и пустые массивы Операторы отношения работают и с массивами, у которых какая-либо размерность равна ну-лю (что приводит к пустому массиву), если оба массива имеют одинаковый размер или же один из них является скаляром. Однако, выражения вида A == [ ] приводят к ошибке, если только массив А не имеет размеры 0х0 или 1х1. Для проверки явля-ется ли данный массив пустым, следует использовать специальную функцию isempty(A). Логические операторы MATLAB обеспечивает следующие логические операторы |
Оператор | Описание | | & | AND (логическое И) | | | | OR (логическое ИЛИ) | | ~ | NOT (логическое НЕ) | | |
Внимание ! В дополнение к этим логическим операторам, в директории ops имеются нес-колько функций, предназначенных для побитовых (поразрядных) логических операций. Каждый логический оператор имеет специфичный набор правил, которые определяют резу-льтат логического выражения: q Выражения использующие оператор И (&), истинны, если истинны оба операнда. При численных элементах, выражение является истинным, если оба операнда ненулевые. Следующий пример показывает операцию логического И для двух векторов u = [1 0 2 3 0 5]; v = [5 6 1 0 0 7]; u & v ans = 0 0 1 0 0 1 q Выражения, использующие оператор ИЛИ ( | ), являются истинными если один из операндов является истинным. Выражения с ИЛИ являются ложными только если ло-жными являются оба операнда. При численных элементах, выражение является лож-ным, елси только оба операнда равны нулю. Для приведенных выше векторов u и v имеем u | v ans = 1 1 1 1 0 1 q Выражения, использующие оператор ~ выполняют логическое отрицание. Это дает ложный результат, если операнд является истинным и истинный, если операнд явля-ется ложным. При численных элементах, любой ненулевой операнд становится нулев-ым (логическим нулем), а любой нулевой элемент становится равным (логической) единице. Рассмотри операцию логического отрицания вектора u ~u ans = 0 1 0 0 1 0 Использованием логических операторов с массивами Логические операторы MATLAB-а сравнивают соответствующие элементы массивов одина-ковой размернсти. Для векторов или прямоугольных массивов, оба операнда должны иметь одинаковый размер, или один из них должен быть скаляром. Если один из элементов являе-тся скаляром, а второй - нет, то здесь также имеет место описанное выше свойство скалярно-го расширения. Логические функции В дополнение к логическим операторам, MATLAB имеет ряд логических функций. |
Функция | Описание | Примеры | | xor | Выполняет операцию исключающего ИЛИ над своими операндами. При числовых элементах, функция возвращает 1 если один из операндов ненулевой, а второй - нулевой | a = 1; b = 1; xor(a,b) ans = 0 | | all | Возвращает 1, если все элементы ее аргумента являются истинными или не равны нулю; в противном случае результат равен логическому нулю. Над матрицами функция all работает вдоль столбцов | A = [0 1 2; 3 5 0] A = 0 1 2 3 5 0 all(A) ans = 0 1 0 | | any | Возвращает единицу, если любой из аргументов является истинным или ненулевым; в против-ном случае вовращает 0. Как и all , any работает вдоль столбцов матриц. | v = [5 0 8]; any(v) ans = 1 | | |
Ряд других функций MATLAB-а выполняет логические операции. Например, функция isnan возвращает 1 для NaN; функция isinf возвращает 1 для Inf. Более подробный список можно найти в директории ops. Логические выражения использующие функцию find Функция find определяет индексы числового массива, удовлетворяющие заданному логичес-кому условию. Эта функция удобна для создания логических масок (шаблонов) и матриц ин-дексов. В наиболее общей форме, функция find возвращает единственный вектор индексов. Этот вектор может быть использован для индексации массивов любого размера или формы. Например, в приведенном ниже примере функция find позволяет легко заменить все элемен-ты матрицы А больше 8 на число 100: A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 i = find (A > 8); A(i) = 100 A = 100 2 3 100 5 100 100 8 100 7 6 100 4 100 100 1 Вы можете также использовать функцию find для получения обеих индексов строк и стол-бцов прямоугольных матриц, удовлетворяющих заданному логическому условию (более под-робно эта функция описана в справочниках). Приоритеты операторов Вы можете строить выражения, использующие любую комбинацию арифметических и логи-ческих операторов, а также операторов отношения. Уровни приоритетов этих операторов определяют порядок, в котором MATLAB обрабатывает выражение. В пределах каждого уровня приоритета, операторы имеют одинаковый приоритет и оцениваются (обрабатыва-ются) слева направо. Последовательность приоритетов для операторов MATLAB-а приве-дены ниже, упорядоченные в порядке убывания приоритетов, то есть от высшего приоритета к низшему. 1. Обычные скобки (). 2. Транспонирование (.'), степень (.^), комплексно-сопряженное транспонирование('), степень матрицы(^). 3. Унарный плюс (+), унарный минус (-), логическое отрицание (~). 4. Умножение (.*), правое деление (./), левое деление(.\), матричное умножение (*), матричное правое деление (/), матричное левое деление (\). 5. Сложение (+), вычитание (-). 6. Оператор двоеточия (:). 7. Меньше чем (<), меньше чем или равно (<=), больше чем (>), больше чем или равно (>=), равно (==), не равно (~=). 8. Логическое И (&). 9. Логическое ИЛИ (|). Изменение приоритетов операторов Имеющаяся последовательность приоритетов может быть изменена путем использования обычных скобок, как это показано в следующем примере. A = [3 9 5]; B = [2 1 5]; C = A ./ B.^2 C = 0.7500 9.0000 0.2000 C = (A. / B) .^2 C = 2.2500 81.0000 1.0000 Выражения могут также содержать переменные, заданные посредством индексов b = sqrt (A(2)) + 2*B(1) b = 7 Команды управления данными (Flow Control) В MATLAB-е имеются 8 базовых команд для управления потоками данных: * if, совместно с else и elseif, осуществляет обработку группы выражений, основываясь на некотором логическом условии. * switch, совместно с case и otherwise, обрабатывает различные группы выражений, основы- ваясь на значении некоторого логического условия. * while осуществляет обработки группы выражений неопределенное число раз, основываясь на некотором логическом условии. * for осуществляет обработку группы выражений определенное (заданное) число раз. * continue передает управление к следующей итерации в циклах for или while , пропуская
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
|