Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методички / TROPA V MATLAB_new.doc
Скачиваний:
68
Добавлен:
17.09.2018
Размер:
2.26 Mб
Скачать

3.2 Файл-функции

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

Ниже представлен M-файл-функция с именем rad.m, созданный для нахождения длины d = радиус - вектора точки (x;y;z) трехмерного пространства:

function d=rad(x,y,z)

%Вычисление длины d=sqrt(x^2+y^2+z^2) радиус-вектора точки (x;y;z)

d=sqrt(x^2+y^2+z^2);

Структура M-файлов-функций следующая.

Первая строка в M-файле-функции называется строкой определения функции и начинается со слова function. В окне редактора M-файлов это зарезервированное слово выделяется синим цветом. Первая строка M-файла задает имя функции, а также количество аргументов (или параметров) ввода и вывода. В этом примере функция называется rad. Имя файла (за исключением расширения .m) и имя функции должны совпадать. Когда вы создаете этот новый M-файл-функцию в безымянном окне редактора и выбираете команду Save (Сохранить), модуль Editor (Редактор) сам присваивает файлу имя rad.m. Функция в нашем примере имеет для ввода три элемента, которые внутри M-файла обозначены как x, y, z. В качестве результата возращаетсяодин элемент – значение d, появляющееся в конце выполнения функции.

За строкой определения функции может следовать несколько строк - комментариев, начинающихся со знака процента %. Эти строки называются текстом справки об используемой функции и отображаются при вводе команды help. В M-файле rad.m присутствует только одна строка текста справки; она отображается при введении команды help rad.

Остальные строки содержат выражения системы MATLAB, которые производят вычисление значений функции. Строки комментариев (строки, начинающиеся со знака процента %) могут быть в любой области M-файла. Они не являются исполняемыми инструкциями. Цель их размещения в тексте программы – пояснить смысл той или иной части программного кода. Все выражения в M-файле-функции, которые обычно производят вывод результатов, должны оканчиваться точкой с запятой с целью пресечения вывода результатов промежуточных вычислений.

Покажем, как используется файл-функция rad.m для вычисления длины радиус - вектора точки (2;3;4):

>> rad(2,3,4)

ans =

5.3852

Ответ 5,3852будет возвращен и сохранен под именемansнезависимо от того, заданы или нетx, y, zи dв вашей рабочей области. Переменные, которые используются в файл-функции, такие какx, y, zи dв файлеrad.m, являютсялокальнымипеременными. Запуск M-файла-функции не задает эти переменные в рабочей области и не изменяет их параметры, если переменные с такими же именами в рабочей области были заданы ранее. Система MATLAB не запоминает значения этих переменных после того, как M-файл-функция будет выполнен, а область оперативной памяти, в которой они хранились, освобождается. Убедимся в этом, выполнив командуwho:

>> who

Your variables are:

ans

M-файлы-функции могут иметь множество аргументов ввода и вывода. Ниже представлен пример файла с именем rad2.mс тремя входными и двумя выходными параметрами, вычисляющего длинуdи квадрат длиныd2радиус - вектора точки трехмерного пространства(x; y; z):

function [d,d2]=rad2(x,y,z)

d2=x^2+y^2+z^2;

d=sqrt(d2);

Если вы введете rad2(2,3,4), то только первый аргумент вывода будет возвращен и сохранен под именемans:

>> rad2(2,3,4)

ans =

5.3852

Чтобы увидеть оба результата вывода, надо присвоить эти результаты переменным, заключенным квадратные скобки:

>> [d,d2]=rad2(2,3,4)

d =

5.3852

d2 =

29

Введя d=rad2(2,3,4), вы можете присвоить первый аргумент вывода переменнойd:

>> d=rad2(2,3,4)

d =

5.3852

При вводе d2=rad2(2,3,4)нельзя получить второй аргумент вывода, т. к. переменнойd2будет также присвоен первый результат:

>> d2=rad2(2,3,4)

d2 =

5.3852

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

function noout(a,b), function [v,u]=noin, function noarg().

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

Приведем пример файл-функции rad3 без входных параметров:

function [d,d2]=rad3

global x y z

d2=x^2+y^2+z^2;

d=sqrt(d2);

Вызов ее осуществляется следующим образом:

>> global x y z

>> x=2;y=3;z=4;

>> [m,n]=rad3

m =

5.3852

n =

29

Параметрами файл-функций могут быть не только числа или скалярные переменные, но и массивы требуемых размеров. Поэтому желательно создавать векторизованные версии М-файлов вместо операторов <^>, <*>, </> следует применять операторы <.^>, <.*>, <./>. Векторизация осуществляется командой vectorize (см. разд. 1.7).

Созданный M-файл можно сохранить не только в текущем, но и в любом другом каталоге. В этом случае перед запуском M-файла на выполнение нужно установить пути поиска, ведущие к нему. По умолчанию текущим является подкаталог work основного каталога MATLAB. Для того, чтобы увидеть его содержимое, в главном меню MATLAB выберите команду View => Current Directory (Вид => Текущий каталог). В результате раскроется окно, в котором отобразится список файлов и вложенных папок активного в данный момент каталога.

Чтобы изменить текущий каталог, введите путь к новому каталогу в поле Current Directory либо выберите его в раскрывающемся списке этого поля. Или же щелкните на кнопке справа от от поля Current Directory, и отыщите нужную папку в раскрывшемся диалоговом окне Обзор папок.

Справочную информация по M-функциям можно получить, введя команду doc function.

Соседние файлы в папке Методички