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

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

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

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