Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-Технологический_Практикум_УТС.Б_5.pdf
Скачиваний:
146
Добавлен:
09.02.2015
Размер:
584.23 Кб
Скачать

Функция 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