Функция ex2while имеет вид:
Результат:
В примере логическое выражение заголовка цикла записано в смешанной форме.
Условный оператор IF
Синтаксис:
1-я форма:
if <логическое выражение> <инструкции_if>
end
2-я форма:
if <логическое выражение> <инструкции_if>
else <инструкции_else> end
3-я форма:
if <логическое выражение> <инструкции_if> elseif<логическое выражение> <инструкции_elseif>
…
else <инструкции_else> end
Описание:
Оператор 1-й формы – безальтернативный выбор:
если логическое выражение истинно, то MATLAB выполняет <инструкции_if> и передает управление следующей за end инструкции;
если выражение ложно, то MATLAB пропускает <инструкции_if> и передает управление следующей за end инструкции.
Операторы 2-й и 3-й формы – двух и многоальтернативный выбор:
•оператор else не содержит логического выражения . <Инструкции_else> выполняются, если логические выражения предшествующего оператора if ,и, возможно, elseif, ложны;
•оператор elseif содержит логическое выражение, которое вычисляется, если если логические выражения предшествующего оператора if ,и, возможно, elseif, ложны. <Инструкции_elseif> выполняются, если логическое выражение elseif истинно.
•Оператор elseif может многократно использоваться внутри оператора условия if.
Пример 5:
if eq(rem(a, 2), 0)
b = а/2;
end
Пример 6:
Если логическое условие включает переменную, не являющуюся скаляром, то выражение будет истинным, если все элементы отличны от нуля.
Пусть задана матрица X; запишем следующий оператор условия:
if X инструкция
Этот оператор равносилен следующему:
if all(x(:))
<инструкции>
end
Условие ложно, так как a[2,1] = 0.
Пример 7:
Программа вычисления кусочно-линейной функции с защитой от некорректного применения. При программировании в MATLAB принято писать программы, которые обладают характеристиками надежности. Механизм контроля реализуется с помощью инструкций, проверяющих типы, размеры и размерности входных аргументов и выходных данных.
Функция ex3if имеет вид:
function y = ex3if(x)
%вычисляет кусочно-линейную функцию
%sin(x)-1, если x<-pi
% y(x)= x, если -pi<=x<0
%pi*cos(x), если x>=0
%использование y = ex3if(x), x – число или вектор;
%проверяем количество входных аргументов, если аргумент не один,
%то выходим из функции по ошибке
if nargin ~= 1
error('должен быть один входной аргумент') End
%проверяем, является ли входной аргумент вектором или числом
[Nx, Mx] = size(x);
%если оба размера входного аргумента не равны единице,
%то выходим по ошибке
if (Nx~=1) & (Mx~=1)
error('аргументом функции может быть вектор или число') End
Lx = length(x); % находим длину вектора
%инициализируем выходной аргумент - вектор y
%y должен быть того же размера, что x y=zeros(size(x));
%перебираем все элементы вектора x в цикле for i=1:Lx
%вычисляем функцию в зависимости от значения x(i) if x(i) < -pi
y(i) = sin(x(i))-1; elseif x(i) < pi
y(i) = x(i)/pi;
else % здесь x > pi y(i) = -cos(x(i));
End Еnd
ЗАМЕЧАНИЕ: Функции nargin, nargout, error,warning, ndims, size,length
изучить самостоятельно
Оператор переключатель SWITCH
Синтаксис:
switch <выражение>
% выражение - это обязательно скаляр или строка case <значение_1>
<инструкции1> % выполняются, если <выражение> = <значение_1>
case {<значение_2>, <значение_3>, .... <значение_к> }
<инструкции> % выполняются, если <выражение> = <значение_i (i = 2:k)>
…
otherwise <инструкции>
% выполняются, если <выражение> не совпало ни с одним из значений end
Пример 8:
Функция ex1switch:
function s = ex1switch(x)
%Демонстрация работы переключателя switch
%Контроль принадлежности аргумента [-1,4]
%Использование: y = ex1switch(x)
switch x case –1
disp('x=-1') case 0
disp('x=0') case {1,2,3,4}
disp('x = 1 или 2 или 3 или 4') Otherwise
disp('x не принадлежит [-1,4]') End