Файл-функции с несколькими выходными аргументами

Файл-функции с несколькими выходными аргументами удобны при вычислении функций, возвращающих несколько значений. Выходные аргументы добавляются через запятую в список выходных аргументов, а сам список заключается в квадратные скобки. Листинг 4 содержит пример такой файл-функции hms для перевода времени, заданного в секундах, в часы, минуты и секнды.

Листинг 4. Функция перевода секунд в часы, минуты и секунды.

function [hour, minute, second] = hms(sec)

hour = floor(sec/3600);

minute = floor((sec - hour*3600)/60);

second = sec - hour*3600 - minute*60;

При вызове файл-функций с несколькими выходными аргументами результат следует записывать в вектор соответствующей длины:

>> [H, M, S]=hms(10000)

H =

M =

S =

Если список выходных аргументов пуст, т. е. заголовок выглядит так function myfun(a,b) или function [ ] = myfun(a,b), то файл-функция не будет возвращать никаких значений. Такие функции тоже иногда оказываются полезными.

 

Задания для самостоятельной работы

1. Напишите и выполните файл-программу построения графиков следующих функций. Для вычислений значений функций создайте файл-функцию.

;

;

.

2. Напишите файл-функцию для решения следующих задач:

по заданному вектору определить номер его элемента с наибольшим отклонением от среднего арифметического всех элементов вектора;

вычислить сумму всех элементов вектора с нечетными индексами;

переставить первый столбец квадратной матрицы с ее диагональю;

найти максимальное значение среди диагональных элементов заданной матрицы;

просуммировать все недиагональные элементы заданной матрицы.

 

Управляющие конструкции языка программирования

Для решения более серьезных задач, чем те, которые были рассмотрены выше, требуются программы, в которых действия повторяются циклически, а в зависимости от некоторых условий выполняются различные части программы.

 

Операторы цикла

Схожие и повторяющиеся действия выполняются при помощи операторов цикла for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий, а while – для действий, число которых заранее не известно, но известно условие продолжения цикла.

 

Цикл for

Использование for осуществляется следующим образом:

for count = start : step : final

команды MATLAB

end

Здесь count – переменная цикла, start – ее начальное значение, final – конечное значение, step – шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается, как только значение count становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака.

 

Цикл while

Цикл while служит для организации повторений однотипных действий в случае, когда число повторений заранее неизвестно и определяется выполнением некоторого условия.

Цикл while работает, пока выполняется условие цикла:

while условие повторения цикла

команды MATLAB

end

Условие цикла while может содержать логическое выражение, составленное из операций отношения и логических операций или операторов. Для задания условия повторения цикла допустимы операции отношения, приведенные в таблице 1.

Таблица 1. Операции отношения

Обозначение Операция отношения
== Равенство
< Меньше
<= Меньше или рано
>= Больше или рано
~= Не равно

 

Операторы ветвления

Условный оператор if и оператор переключения switch позволяют создать гибкий разветвляющийся алгоритм, в котором при выполнении определенных условий выполняется соответствующий юлок операторов или команд MATLAB.

 

Условный оператор if

Оператор if может применяться в простом виде, для выполнения блока команд при удовлетворении некоторого условия, или в конструкции if-elseif-else для написания разветвляющихся алгоритмов.

if условие

команды MATLAB

end

Если условие верно, то выполняются команды MATLAB, размещенные между if и end, а если условие неверно, то происходит переход к командам, расположенным после end. Условие является логическим выражением и записывается по правилам, описанным выше.

 

Оператор switch

switch переменная оператора

case значение 1

команды MATLAB

case значение 2

команды MATLAB

case значение N

команды MATLAB

otherwise

команды MATLAB

end

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

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