Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12 / 2 семестр / Лекция 5(1).doc
Скачиваний:
29
Добавлен:
10.06.2015
Размер:
200.19 Кб
Скачать

Файлы – сценарии и файлы – функции

Полезно отметить, что М-файлы, используемые в MATLAB, делятся на два класса:

  • файлы – сценарии, не имеющих входных параметров;

  • Файлы – функции, имеющие входные параметры.

То что представлено на рисунке файл является файлом – сценарием (Script– файлом). Данный файл не имеет списка входных параметров и является примером простой процедуры без параметров. Он использует глобальные переменные, то есть такие переменные, значения которых могут быть изменены в любой момент сеанса работы и в любом месте программы. Структура этого файла следующая:

%Основной комментарий

%Дополнительный комментарий

Тело файла с любым выражением.

Основным комментарием является первая строка текстовых комментариев, а дополнительным – последующие строки. Основной комментарий выводится при выполнении команд lookforиhelpимя каталога. Полный комментарий выводится при выполнении командыhelpИмя_файла.

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

М-файл функции является типичным объектом – модулем языка программирования системы MATLAB. Структура такого модуля с одним выходным параметром выглядит следующим образом:

function var=f_name(Список_параметров)

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями

var=выражение

М-файл – функция имеет следующие свойства:

  • он начинается с объявления function, после которого указывается имя переменнойvar– выходного параметра, имя самой функции и список ее входных параметров;

  • функция возвращает свое значение и может использоваться в виде name(Список_параметров)в математических выражениях;

  • все переменные, имеющиеся в теле файла-функции, являются локальными, то есть действуют только в пределах тела функции;

  • файл – функция является самостоятельным программным модулем, который общается с другими модулями через свои входные и выходные параметры;

  • правила вывода комментариев те же, что у файлов – сценариев;

  • файл – функция служит средством расширения системы MATLAB;

  • При обнаружения файла – функции он компилируется и затем исполняется, а созданные машинные коды хранятся в рабочей области системы MATLAB.

Последняя конструкция var=выражениевводится, если требуется, чтобы функция возвращала результат вычислений. Если выходных параметров больше, то они указываются в квадратных скобках после словаfunction. При этом структура модуля имеет следующий вид

function [var1,var2,…]=f_name(Список_Параметров)

%Основной комментарий

Тело файла с любыми выражениями

var1=выражение

var2=выражение

Переменные в файлах-функциях – по умолчанию локальные. Это значит, что они, меняя свое значение внутри модуля файла – функции, не сохраняют его при выходе из файла – функции. Нередко применение глобальных переменных в программных модулях может приводить к побочным эффектам. Применение локальных переменных устраняет эту возможность и отвечает требованиям структурного программирования.

Однако передача данных из модуля в модуль в этом случае происходит только через входные и выходные параметры, что требует тщательного планирования такой передачи. Команда globalvar1var2 … позволяет объявить переменные модуля – функции глобальными. Таким образом, внутри функции могут использоваться и глобальные переменные, если это нужно по условиям решения вашей задачи.

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

function z=fun(x,y)

z=x^2+y^2;

return

Имя этой функции zод таким именем ее надо записать в виде М-файла. (х,у) – список параметров (х и у). Оператор return задает возврат функцией значения в ответ на обращение к ней по имени с указанием фактических параметров. Например задавz(2,3), получим 13.

В MATLABможно включать подфункции. Они объявляются и записываются в теле основных функций и имеют идентичную им конструкцию, например:

function [mean,stdev]=statv(x)

%STAV Interesting statistics.

%Пример функции с встроенной подфункций

n=length(x);

mean=avg(x,n);

stdev=sqrt(sum((x-avg(x,n)).^2)/n);

%__________________________

function m=avg(x,n)

%Mean subfunction

m=sum(x)/n

В этом примере среднее значение элементов вектора х вычисляется с помощью подфункции avg(x,n), тело которой записано в теле основной функцииstatv.

Пример использования функции statv:

>>V=[1 2 3 4 5 6]

V=

1 2 3 4 5

>>[a,m]=statv(V)

a=

3

m=

1.4142

>>statv(V)

ans=

3

Подфункции определены и действуют локально, то есть только в пределах M-файла, определяющего основную функцию. Командаhelpnameвыводит комментарий, относящийся только к основной функции, тогда как командаtypenameвыводит весь листинг М-файла.

Соседние файлы в папке 2 семестр