Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Разновидности m-функций




 

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

 

5.1. Подфункции

Основная файл-функция может содержать одну или несколько подфункций, каждая со своими входными и выходными параметрами. Текст подфункций располагается в m-файле после текста основной функции. Подфункции m-файла не могут быть вызваны извне. Это своего рода функции внутреннего использования. Вызов подфункции инициирует основная функция m-файла.

Синтаксически подфункции оформляются также как и обычные функции Matlab. Заголовок очередной подфункции одновременно является признаком конца предыдущей. Основная функция обменивается информацией со своими подфункциями при помощи системы параметров и/или глобальной пересылки данных.

Рассмотрим пример функции с подфункциями. Предположим, что в некоторой функции basik_func приходится многократно вычислять значение некоторого выражения для различных значений операндов. В простейшем случае текст функции basik_func будет содержать однотипные предложения

function basik_func(x,step)

f1=sin(x)+cos(x);

x1=x-step;

f2=sin(x-step)+cos(x-step);

x2=x+step;

f3=sin(x+step)+cos(x+step);

Проще и нагляднее определить вычисляемое выражение в подфункции sub_func и поместить ее в том же m-файле

function basik_func(x,step)

%основная функция

f1=sub_func(x);

f2=sub_func(x-step);

f3=sub_func(x+step);

function f=sub_func(arg)

%подфункция

f=sin(arg)+cos(arg);

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

 

5.2. Вложенные функции

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

function y1=f1(arg1,arg2)

% операторы функции f1

function y2=f2(x)

% операторы функции f2

function y3=f3(a,b)

% операторы функции f3

end %конец вложенной функции f3

% операторы функции f2

end %конец вложенной функции f2

% операторы функции f1

end %конец главной функции f1

Уровень вложенности функций не ограничен. Функция может обратиться к своей вложенной функции, но не может использовать вложенную функцию более низкого уровня. В приведенном примере функция f1 может обратиться к вложенной в нее функции f2, но не может напрямую вызвать f3. Вложенная функция может обратиться к функции того же уровня. Функция нижнего уровня может вызвать функцию верхнего уровня, в которую она вложена, и все функции, доступные из нее.

В одном m-файле допускается одновременное использование подфункций и вложенных функций. В этом случае текст подфункции должен заканчиваться оператором end.

 




Поделиться с друзьями:


Дата добавления: 2014-11-08; Просмотров: 1173; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.038 сек.