Команды управления данными (Flow Control)
2.2500 81.0000 1.0000
0.7500 9.0000 0.2000
Изменение приоритетов операторов
4 100 100 1
100 7 6 100
5 100 100 8
100 2 3 100
4 14 15 1
9 7 6 12
5 11 10 8
16 2 3 13
Логические выражения использующие функцию find
Функция find определяет индексы числового массива, удовлетворяющие заданному логичес-кому условию. Эта функция удобна для создания логических масок (шаблонов) и матриц ин-дексов. В наиболее общей форме, функция find возвращает единственный вектор индексов. Этот вектор может быть использован для индексации массивов любого размера или формы. Например, в приведенном ниже примере функция findпозволяет легко заменить все элемен-ты матрицы Абольше 8 на число 100:
A = magic(4)
A =
i = find (A > 8);
A(i) = 100
A =
Вы можете также использовать функцию find для получения обеих индексов строк и стол-бцов прямоугольных матриц, удовлетворяющих заданному логическому условию (более под-робно эта функция описана в справочниках).
Приоритеты операторов
Вы можете строить выражения, использующие любую комбинацию арифметических и логи-ческих операторов, а также операторов отношения. Уровни приоритетов этих операторов определяют порядок, в котором MATLAB обрабатывает выражение. В пределах каждого уровня приоритета, операторы имеют одинаковый приоритет и оцениваются (обрабатыва-ются) слева направо. Последовательность приоритетов для операторов MATLAB-а приве-дены ниже, упорядоченные в порядке убывания приоритетов, то есть от высшего приоритета к низшему.
- Обычные скобки ().
- Транспонирование (.'), степень (.^), комплексно-сопряженное транспонирование('), степень матрицы(^).
- Унарный плюс (+), унарный минус (-), логическое отрицание (~).
- Умножение (.*), правое деление (./), левое деление(.\), матричное умножение (*), матричное правое деление (/), матричное левое деление (\).
- Сложение (+), вычитание (-).
- Оператор двоеточия (:).
- Меньше чем (<), меньше чем или равно (<=), больше чем (>), больше чем или равно (>=), равно (==), не равно (~=).
- Логическое И (&).
- Логическое ИЛИ (|).
Имеющаяся последовательность приоритетов может быть изменена путем использования обычных скобок, как это показано в следующем примере.
A = [3 9 5];
B = [2 1 5];
C = A ./ B.^2
C =
C = (A. / B) .^2
C =
Выражения могут также содержать переменные, заданные посредством индексов
b = sqrt (A(2)) + 2*B(1)
b =
В MATLAB-е имеются 8 базовых команд для управления потоками данных:
• if,совместно с elseи elseif, осуществляет обработку группы выражений, основываясь на
некотором логическом условии.
• switch,совместно сcaseиotherwise, обрабатывает различные группы выражений, основы-
ваясь на значении некоторого логического условия.
• while осуществляет обработки группы выражений неопределенное число раз, основываясь
на некотором логическом условии.
• for осуществляет обработку группы выражений определенное (заданное) число раз.
• continue передает управление к следующей итерации в циклах for илиwhile, пропуская
все оставшиеся выражения в теле цикла.
• breakпрекращает обработку выражений и выходит из циклов, созданных командами for
или while.
• try...catch изменяет последовательность выполнения команд, если во время выполнения
программы получено сообщение об ошибке.
• return приводит к прекращению выполнения данной программы и к возврату в вызываю-
щую функцию.
Все конструкции программ, основанные на логических условиях, используют команду end для указания конца соответствующего блока.
Внимание!Во многих случаях вы можете ускорить выполнение программ MATLAB-а, путем замены циклов с командами forиwhileвекторными выражениями (см. ниже).