Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab BSU.doc
Скачиваний:
12
Добавлен:
08.09.2019
Размер:
1.04 Mб
Скачать

If expression1

statements

elseif expression2

statements

else

statements

end

Оператор if вычисляет логическое выражение expression1 и выполняет группу операторов statements, если выражение истинно. Необязательные ключевые слова elseif и else служат для выполнения альтернативных групп операторов. Ключевое слово end, которое согласуется с if, завершает последнюю группу операторов. Рассмотрим в качестве примера построение квадратной трехдиагональной матрицы, которая возникает при аппроксимации производной второго порядка на равномерной сетке узлов:

for i=1:5

for j=1:5

if i == j

a(i, j) = 2;

elseif abs(i–j) == 1

a(i, j) = 1;

else

a(i, j) = 0;

end

end

end

a

a =

2 -1 0 0 0

-1 2 -1 0 0

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

Оператор switch имеет следующую структуру:

switch switch_expr

case case_expr

statement,...,statement

case {case_expr1, case_expr2, case_expr3,...}

statement,...,statement

...

otherwise

statement,...,statement

end

Оператор switch выполняет группу операторов, базируясь на значении переменной или выражении switch_expr. Ключевые слова case и otherwise разделяют эти группы. Выполняется только первый соответствующий случай. Необходимо использовать end для согласования с switch. Предыдущий пример можно переписать, используя оператор switch следующим образом:

for i=1:5

for j=1:5

switch i–j

case 0

a(i, j) = 2;

case {1, –1}

a(i, j) = –1;

otherwise

a(i, j) = 0;

end

end

end

В отличие от языка Си, оператор switch в MATLAB “не проваливается”. Если первый случай является истинным, другие случаи не рассматриваются. Таким образом, нет необходимости использовать оператор break.

Оператор цикла for повторяет группу операторов фиксированное число раз. Ключевое слово end ограничивает тело цикла. Циклы могут быть вложенными, как показано в предыдущем примере.

Оператор цикла while повторяет группу операторов определенное число раз, пока выполняется логическое условие. Ключевое слово end ограничивает тело цикла. Рассмотрим программу, иллюстрирующую работу операторов while и if для нахождения одного из корней многочлена x3-2x-5. В программе реализован метод дихотомии.

a = 0; fa = –Inf;

b = 3; fb = Inf;

while b–a > eps*b

x = (a+b)/2;

fx = x^3-2*x-5;

if sign(fx) == sign(fa)

a = x; fa = fx;

else

b = x; fb = fx;

end

end

x

x =

2.0946

Оператор break позволяет досрочно выходить из циклов for или while. Во вложенных циклах break осуществляет выход только из самого внутреннего цикла. В качестве примера рассмотрим цикл while, который используется для чтения m-файла fft.m в символьный массив. Оператор break используется для выхода из цикла, как только будет встречена первая нулевая строка. В результате символьный массив будет содержать описание fft программы.

fid = fopen('fft.m', 'r');

s = '';

while ~feof(fid)

line = fgetl(fid);

if isempty(line), break, end

s = strvcat(s, line);

end

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