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

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

они не проверяют значение второго операнда (операция ьб была использована нами в главе б при управлении процессом решения дифференциального уравнения для простой реализации алгоритма файл-функции solproc (см. листинг 6.19)).

Проверка на наличие нулевых элементов в векторе осуществляется функцией all. которая возвращает единицу, если среди элементов вектора нет нулей, и ноль в противном случае:

» v = [12 0] ,-» q = all(v)

q =

о

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

» М = [9 3 -1; 0 2 2]; » р = all(M) Р =

О11

Исследование на наличие ненулевых элементов производится функцией any, которая возвращает единицу, если во входном векторе есть хотя бы один ненулевой элемент. Функция any, так же как и all, работает с матрицами по столбцам.

Некоторые индексные логические матрицы вычисляются по исходной матрице при помощи специальных функций MATLAB, перечисленных ниже. Каждая функция для входной матрицы находит индексную логическую матрицу из нулей и единиц, соответствующую проверяемому условию.

П isfinite — единицы соответствуют числам, нули — Inf, NaN.

О isinf — единицы соответствуют +inf, -inf, нули —• числам.

П isnan — единицы соответствуют NaN, нули — числам.

□isprime — единицы соответствуют простым числам, нули — остальным.

□isreal— единицы соответствуют вещественным числам, нули-— комплексным.

При обработке матричных данных так же оказывается полезной достаточно универсальная функция find и логическое индексирование (применение find и логического индексирования рассмотрено в разд. "Логическое индексирование" главы 2).


В приведенных выше примерах программ условия операторов if-eiseif-eise и while содержали логические выражения со скалярными значениями — либо "истина", либо "ложь". Однако в эти конструкции языка программирования MATLAB могут входить выражения с массивами, причем как с числовыми, так и логическими. Формальное правило таково: условие считается выполненным, если результатом выражения является массив, состоящий только из логических единиц или ненулевых элементов. Пустой массив и "ложь" эквивалентны.

Приоритет логических

и арифметических операций

Поскольку логические и арифметические операции могут входить в одно выражение, то возникает вопрос о том, в какой последовательности они выполняются. Например, в выражении а + в."2 > с сначала выполняется поэлементное возведение в степень, затем сложение и, наконец, сравнение значения суммы а + в. Л2 и с.

Приоритет операций отражен в следующем списке (в порядке выполнения).

1.Логические операторы: and, or, not, хог (поскольку они являются функциями).

2.Отрицание ~.

3.Транспонирование, возведение в степень (в том числе поэлементное), знак плюс или минус перед числом.

4.Умножение и деление (в том числе поэлементное).

5.Сложение и вычитание.

6.Операции отношения: >, >=, <, <=, ==.

7.Логическое "и" s.

8.Логическое "или" .

9.Логическое "и" &s.

10.Логическое "или" i .

Примечание

Сначала выполняются операции над аргументами функций and, or, not и хог, например, два выражения: and(A,B)+c и А&в+с не эквивалентны! В более ранних версиях MATLAB операции & и имели одинаковый приоритет, что следует учитывать при переносе приложений, разработанных в старых версиях MATLAB, в новую версию пакета.


Для изменения порядка операций следует применять круглые скобки. Они также полезны для придания достаточно длинному выражению легкочитаемого вида.

Задания

для самостоятельной работы

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

1.Вычислить произведение элементов вектора, не превосходящих среднее арифметическое значение его элементов.

2.Подсчитать число нулей и единиц в заданной матрице.

3.Определить количество положительных элементов вектора, расположенных между его максимальным и минимальным элементами.

4.Просуммировать отрицательные элементы матрицы, лежащие ниже хлавной диагонали.

5.Заменить положительные элементы вектора суммой всех его отрицательных элементов.

6.Заполнить квадратную матрицу А , каждый элемент которой определяется следующим образом:

а9 =

i-j, i>j\ i + j, i = j;

i2+j2, <./•

7. Вычислить сумму:

Кд)=ЕЕ-

8. Для матрицы А-(яу)размера л на ш найти значение выражения:

n m

1=1 j=\



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