Раздел: Документация
0 ... 77 78 79 80 81 82 83 ... 365 тую в список выходных аргументов, а сам список заключается в квадратные скобки. Листинг 5.6 содержит пример такой файл-функции hms для перевода времени, заданного в секундах, в часы, минуты и секунды. .........................................................................................................................................v.....................ъШШШ j Листинг 5.6. Функция перевода секунд в часы, минуты и секунды function [hour, minute, second] = hms(sec) hour = floor(sec/3600); minute = floor((sec - hour*3600)/60); second = sec - hour*3600 - minute*60; При вызове файл-функций с несколькими выходными аргументами результат следует записывать в вектор соответствующей длины: » [h, М, S] = hms (10000) н = 2 м = 46 S = 40 Если список выходных аргументов пуст, т. е. заголовок выглядит так: function myfun (а, Ь) ИЛИ function [ ] = myfun (а, Ь),ТО файл-функция не будет возвращать никаких значений. Такие функции тоже иногда оказываются полезными. Предусмотрена возможность создавать файл-функции, которые сами приспосабливаются к числу входных н выходных аргументов. Большинство функций MATLAB работают именно таким образом. Подробнее о создании файл-функций и файл-программ написано в части II, посвященной программированию собственных приложений. Функции MATLAB обладают еще одним полезным качеством — возможностью получения информации о них при помощи команды help, например, help fpiot. Собственные файл-функции гак же можно наделить этим свойством, используя строки комментариев. Все строки комментариев после заголовка и до тела функции или пустой строки выводятся в командное окно командой help. Изучите содержимое файла fplot.m с файл-функцией fplot, который расположен в подкаталоге \toolbox\matlab\specgraph\ основного каталога MATLAB. Разместите в файл-функции hms комментарии о ее назначении (листинг 5.7) и проверьте: help hms. Листинг 5.7. Помещение комментарие function [hour, minute, second] = hms(sec) %hms - перевод секунд в часы, минуты и секунды % Функция hms предназначена для перевода секунд % в часы минуты и секунды. % [hour, minute, second] = hms(sec) isec - число секунд %hour - число полных часов minute - число полных минут %second - остаток секунд hour = floor(sec/3600); minute = floor)(sec - hour*3600)/60); second = sec - hour*3600 - minute*60; Мы намеренно записали в первой строке комментариев краткую информацию о файл-функции. Первая строка комментариев после заголовка функции называется Ш-Нпе и используется при поиске командой lookfor. Эта команда ищет указанное слово в строках HI-line всех файл-функций в каталогах, указанных в путях поиска, в том числе и в текущем каталоге. Проверьте: lookfor hms. Нашлась как ваша функция, так и ряд встроенных функций для преобразования формата времени. Все встроенные функции MATLAB оформлены именно в таком стиле, поэтому при создании набора функций, предназначенных для широкого круга пользователей, есть смысл придерживаться данных соглашений. 1 Примечание J Блок комментариев нельзя использовать для получения подсказки по команде help. Разновидности функций Оформление алгоритма в одной файл-функции не всегда удобно. Некоторые стандартные часто повторяющиеся действия следует оформить в виде отдельных функций, связанных с основным алгоритмом. MATLAB предоставляет различные способы организации связей между функциями-— приватные функции, подфункции, вложенные функции. Подфункции Использование подфункций и вложенных функций основано на выделении части алгоритма в самостоятельную функцию, текст которой содержится в том же файле, что и основная функция. Рассмотрим модельный пример. Предположим, что в файл-функции simple, хранящейся в файле simple.m, часто приходится вычислять некоторое выражение. Конечно, можно простым копированием строк добавить соответствующие операторы (листинг 5.8). Листинг 5.8. Файл-функция simple в файле simple.m function simple; х = 1.1; У = 2.1; fl = хл3 - 2*ул3 + 3*(хл2 + У"2) х = 3.1; У = 4.2; £"2 = х"3 - 2*ул3 + 3*(хл2 + ул2) х = -2.8; У = 0.7; £3 = хл3 - 2*ул3 + 3*(хл2 + у~2) Проще и нагляднее определить вычисляемое выражение в подфункции f с двумя входными и одним выходным аргументом и разместить ее в том же М-файле simple.m. Листинг 5.9. Файл-функция simple с подфункцией f в файле simple.m function simple; % Основная функция fl = f(l.l, 2.1) f2 = f(3.1, 4.2) f3 = f(-2.8, 0.7) function z = f(x, y) % Подфункция z = x"3 - 2*y"3 + 3*(хл2 + ул2) - x*y + 9; Первая функция simple является основной функцией в simple.m, именно ее операторы выполняются, если пользователь вызывает simple, например, из х*у + 9 х*у + 9 - х*у + 9 0 ... 77 78 79 80 81 82 83 ... 365
|