Использование
подфункций
Начиная с
версии 5.0 в функции системы MATLAB можно включать
подфункции.
Они объявляются
и записываются в теле основных функций и имеют идентичную им конструкцию. Не
следует путать эти функции с внутренними функциями, встроенными в ядро системы
MATLAB. Ниже представлен пример функции с подфункцией:
function
[mean.stdev] = statv(x)
USTATV
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=[l 2345]
V=
12345
» [a,m]=statv(V)
а
=
3
m =
1.4142
» statv(V)
ans =
3
»
help statv
STATV
Interesting statistics.
Пример функции
с встроенной подфункций
Подфункции
определены и действуют локально, т. е. только в пределах т-файла, определяющего
основную функцию. Команда help пате выводит комментарий, относящийся только
к основной функции, тогда как команда type name выводит весь листинг m-файла.
Так что заданные в некотором m-файле подфункции нельзя использовать ни в командном
режиме работы, ни в других т-файлах. При обращении к функции интерпретатор системы
MATLAB прежде всего просматривает m-файл на предмет выявления подфункций. Если
они обнаружены, то задаются как локальные функции. Благодаря локальному действию
подфункций их имена могут совпадать с именами основных функций системы. Если
в функции и подфункциях должны использоваться общие переменные, их надо объявить
глобальными как в функции, так и в ее подфункциях.
Содержание раздела