Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_manual.rtf
Скачиваний:
383
Добавлен:
21.03.2016
Размер:
10 Мб
Скачать
☆

Изменение приоритетов операторов

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

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 , пропуская

все оставшиеся выражения в теле цикла.

• break прекращает обработку выражений и выходит из циклов, созданных командами for

или while.

• try...catch изменяет последовательность выполнения команд, если во время выполнения

программы получено сообщение об ошибке.

• return приводит к прекращению выполнения данной программы и к возврату в вызываю-

щую функцию.

Все конструкции программ, основанные на логических условиях, используют команду end для указания конца соответствующего блока.

Внимание! Во многих случаях вы можете ускорить выполнение программ MATLAB-а, путем замены циклов с командами for и while векторными выражениями (см. ниже).

Команды if, else, and elseif

Команда if оценивает логическое выражение и обрабатывает группу операторов, основыва-ясь на значении указанного выражения. В свое простейшей форме синтаксис команды имеет вид

If (логическое выражение)logical_expression

операторы

end

Если логическое выражение истинно, то есть равно 1, MATLAB выполняет все операторы между строками, содержащими команды if и end . После этого он продолжает выполнять ко-манды. находящиеся за строкой с end. Если логическое выражение ложно, то есть дает логи-ческий 0, MATLAB перескакивает через все выражения между строками с if и end , и про-должает свою работу со строки, следующей за командой end. Например,

if rem (a,2) == 0

disp('a is even')

b = a/2;

end

Данный блок проверяет, является ли входной аргумент четным числом и, если да, то выводит в комндную строку соответствующее сообщение и делить число а пополам. В противном случае, данный блок не выполняется. Между строками с if и end вы можете включить произ-вольное число операторов, содержащих, в свою очередь, любые команды и циклы. Если ло-гическое выражение приводит к нескалярной величине, то для выполнения блока все элемен-ты аргумента должны буть ненулевыми. Например, допустим X является матрицей. Тогда выражение

if X

операторы

end

эквивалентно следующему

if all(X(:))

операторы

end

При использовании с if , команды else и elseif дают следующие дополнительные возможно-сти создания программ:

• Команда else не имеет логического условия. Операторы, связанные с данной командой вы-

полняются, если предшествующее условие команды if (и, возможно, elseif) является лож-

ным.

• Команда elseif имеет логическое условие, которое оценивается, если предшествующее ус-

ловие команды if (и, возможно, elseif), является ложным. Если логическое условие данной

команды elseif является истинным, то выполняются соответствующие операторы, следую-

щие за данной командой. Вы можете иметь произвольное число команд elseif в пределах

одного блока с if.

if n < 0 % Если n отрицательно, дать сообщение об ошибке

disp('Input must be positive');

elseif rem (n, 2) == 0 % Если n положительно и четно, разделить на 2.

A = n/2;

else

A = (n+1) /2; % Если n положительно и нечетно, прибавить 1 и

% разделить на два.

end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]