В среде программирования matlab

Создание программ в среде MATLAB позволяет значительно упростить и сократить процесс подготовки повторяемых вычислений, сделать процесс вычислений более наглядным и прозрачным, а благодаря этому – уменьшить вероятность появления принципиальных ошибок при разработке программ.

Разработка в среде MATLAB сложных программ с прерываниями, переходами по определенным условиям, с часто повторяемыми однотипными действиями, которые необходимо проводить неоднократно при измененных входных данных, требуют специального оформления программного кода в виде так называемых M-файлов. Все М-файлы имеют специальное расширение *.m. M-файл представляет собой созданный пользователем последовательный список исполняемых команд MATLAB, сохраненный на диске.Для создания нового М-файла необходимо с помощью меню редактора MATLABвыполнитьследующую последовательность действий:

File->New->M-file

В среде программирования MATLABсуществует возможность создавать программы 2 типов: скриптовые файл-программы(управляющие программы) и файл-функции (процедуры).При помощи скриптовых файлов оформляются основные программы, управляющие от начала до конца организацией вычислительного процесса. Скриптовые файл-программы не имеют входных и выходных аргументов, все переменные, объявленные в файле, становятся доступными в рабочей среде сразу после выполнения. В скриптовых файл-программах все используемые переменные образуют «рабочее пространство»; их значения сохраняются в течение всего сеанса работы с системой.

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

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

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

function f=funname(x)

где: x – входной параметр (аргумент функции), f –выходной параметр (значение функции, определяемое значением аргумента x), funname –имя функции, function –обязательное наименование в заголовке m-файла, показывающее, что данный m-файл содержит файл-функцию.

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

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

Для вызова созданной пользователем файл-функции достаточно набрать в командной строке название файл-функции с указанием значения входного аргумента:

>>funname(x)

Вызов файл-функций может также осуществляться из скриптовых файл-программ или из других файл-функций в среде MATLAB. Синтаксис обращения к созданной пользователем файл-функции аналогичен синтаксису использования стандартных функций среды программирования MATLAB.

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

function f=funname(x, y, z)

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

function [f, y, s]=funname(x, y, z)

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

function [f, y, s]=funname(varargin)

В системе MATLAB, начиная с версии MATLAB 7.0 разрешается использование вложенных файл-функций, структура основной файл-функции в этом случае имеет следующий вид:

 

function [f, y, s]=funname (x, y, z) % заголовок основной функции

function [f1, y1, s1]=funname (x1, y1, z1) % заголовок первой подфункции

<операторы 1> %операторы первой подфункции

end % конец первой подфункции

function [f2, y2, s2]=funname2 (x2, y2, z2) % заголовок второй подфункции

<операторы 2> % операторы второй подфункции

end % конец второй подфункции

……

<операторы> % операторы основной функции

end % конец основной функции

 

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

Globalx y z

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

feval(‘funname’, x, y, z)

где: ‘funname’ – строка с именем вызываемой функции, которая может быть как стандартной встроенной функцией, так и функцией, определенной пользователем, x, y, z – значения аргументов функции funname, разделенные запятой.

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

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: