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

Результат:

Описание:

Оператор переключатель выполняет ветвления в зависимости от значений переменной или выражения.

Оператор содержит:

заголовок switch, за которым следует выражение (скаляр или строка);

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

группу otherwise. Заголовок включает только слово otherwise; начиная со следующей строки размещаются инструкции, которые выполняются, если значение выражения оказалось не обработанным ни одной из групп case. Выполнение завершается оператором end. Оператор end является последним в блоке переключателя.

Оператор switch работает, сравнивая значение вычисленного выражения со значениями групп case. Для числовых выражений оператор case выполняется, если <значение>==<выражение>. Для строковых выражений оператор case истинен, если strcmp(значение, выражение) истинно. (Строковые функции С в MATLAB работают)

Если возможные значения для группы case записаны в виде массива ячеек, то инструкции этой группы выполняются, если хотя бы один элемент массива ячеек совпадает с выражением заголовка switch. Если совпадения нет, то выполняется группа otherwise, если она существует.

Оператор switch может использовать множественное условие в единственной группе case посредством включения выражения case, если выражение для этого условия записано в виде массива ячеек – в фигурных скобках.

Пример 9:

Функция ex2switch

function ex2switch(xmin, xmax, ymin, ymax, vis)

%строит график поверхности функции

%z=exp(-|x*y| * sin(pi*x) * cos(pi*x^2 ))

% на области xmin <= x <= xmax ymin <= y <= ymax

%использование: ex2swich(xmin, xmax, ymin, ymax, vis)

%vis = 1 - каркасная поверхность

%vis = 2 - залитая поверхность

%vis = 3 - линии уровня

%vis = 4 - освещенная поверхность

%проверяем числа входных аргументов,

%если число входных аргументов не равно пяти, то выходим по ошибке

if nargin ~= 5

error('Задайте xmin, xmax, ymin, ymax, vis') End

%проверяем число выходных аргументов, если файл-функция вызвана

%с выходными аргументами, то выходим по ошибке

if nargout > 0

error('Функция myplot3D не имеет выходных аргументов') End

%находим максимальный из размеров входных аргументов

M = max([size(xmin) size(xmax) size(ymin) size(ymax) size(vis)]);

%если хотя бы один из размеров входных аргументов не равен единице,

%то выходим по ошибке

if M~=1

error('входные аргументы должны быть числами') End

%проверяем границы построения, если нижняя граница больше или равна

%верхней, то выходим по ошибке

if (xmin >= xmax) | (ymin >= ymax)

error('нижняя граница должна быть меньше верхней') End

%вычисление шагов по x и y для построения графика поверхности dx = (xmax-xmin) /40;

dy = (ymax-ymin) /40;

%генерация сетки

[X,Y] = meshgrid([xmin:dx:xmax], [ymin:dy:ymax]); % вычисление функции

Z = exp(-abs(X.*Y).*sin(pi*X).*cos(pi*X.^2));

% определение способа построения в зависимости от vis switch vis

case 1 % каркасная поверхность

Figure mesh(X, Y, Z)

case 2 % залитая поверхность

Figure

surf(X, Y, Z)

case 3 % линии уровня функции

Figure contour(X, Y, Z)

case 4 % освещенная поверхность

Figure surfl(X, Y, Z)

colormap(copper) shading interp

otherwise % непредусмотренная ситуация disp('vis может быть 1, 2, 3 или 4')

End

Результат: