8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

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