Файл-функции с одним входным аргументом

Предположим, что в вычислениях необходимо часто использовать функцию x2+1

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

function f=myfun(x)

f=exp(-x).*sqrt((x.^2+1)./(x.^4+0.1));

Слово function в первой строке определяет что данный файл содержит файл-функцию. Первая строка является заголовком функции, в которой размещается имя функции и списки входных и выходных аргументов. В примере, приведенном в листенге 5.2, имя функции myfun, один входной аргумент х и один выходной – f. После заголовка следует тело функции (оно в данном примере состоит из одной троки), где и вычисляется ее значение. Важно, что вычисленное значение записывается не в f. Не забудьте поставить точку с запятой для предотвращения вывода лишней информации на экран.

Теперь сохраните файл в рабочем каталоге. Обратите внимание, что выбор пункта Save или Save as меню File приводит к появлению диалогового окна сохранения файла, в поле File name которого уже содержит название myfun. Не изменяйте его, сохраните файл-функцию в файле с предложенным именем!

Теперь созданную функцию можно использовать так же, как и встроенные sin, cos и другие, например из командной строки:

>> y=myfun(1.3)

y=

0.2600

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

Предупреждение

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

Аргументом функции myfun может быть как число, так и вектор или матрица значений, например:

>> x=[1.3 7.2]

>> y=myfun(x)

y=

0.2600 0.0001

Переменная y, в которую записывается результат вызова функции myfun автоматически становится вектором нужного размера.

Постройте график функции myfun на отрезке [0,4] из строки или при помощи файл-программы

x=[0:0.5:4];

y=myfun(x);

plot(x,y)

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

fplot(‘myfun’,[0,4])

Файл-функции с несколькими входными аргументами

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

Function r=radius3(x,y,z)

r=sqrt(x.^2+y.^2+z.^2);

Для вычисления длины радиус-вектора теперь можно использовать функциию radius3, например:

>>R=radius3(1,1,1)

R=

1.732

Кроме функций с несколькими аргументами, MatLab позволяет создавать функции, возвращающие несколько значений, т. е. имеющие несколько выходных аргументов.

Файл-функции с несколькими выходными аргументами

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

Файл-функция перевода секунд в часы, минуты и секунды:

function [hour,minute,second]=hms(sec)

hour=floor(sec/360);

minute=floor((sec-hour*3600)/60);

second=sec-hour*3600-minute*60;

При вызове файл-функции с несколькими выходными аргументами результат следует записывать в вектор соответствующей длины:

>>[H,M,S]=hms(10000)

H=

M=

S=

Если список выходных аргументов пуст, т. е. заголовок выглядит так function myfun(a,b) или function []=myfun(a,b), то файл-функция не будет возвращать никаких значений. Такие функции тоже иногда оказываются полезными.

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

Замечание

Хранить собственные М-файлы вне основного каталога MatLab следует по двум причинам. Во-первых, при переустановке MatLab файлы, которые содержатся в подкаталогах основного каталога MatLab, могут быть уничтожены. Во-вторых, при запуске MatLab все файлы подкаталога toolbox размещаются в памяти компьютера некоторым оптимальным образом так, чтобы увеличить производительность работы. Если вы записали М-файл в этот каталог, то воспользоваться им можно будет только после перезапуска MatLab.

Установка путей

Текущий каталог определяется в диалоговом окне Curent Directory рабочей среды. Окно присутствует в рабочей среде, если выбран пункт Curent Directory меню View рабочеё среды.

Текущий каталог выбирается из списка. Если его нет в списке, то его можно добавить из диалогового окна Browse for Folder, вызываемого нажатием на кнопку, расположенную справа от списка. Содержимое каталога отображается в таблице файлов.

Определение путей поиска производится в диалоговом окне Set Path навигатора путей, доступ к которому осуществляется из пункта Set Path меню File рабочей среды.

Для добавления каталога нажмите кнопку Add Folder и в появившемся диалоговом окне Browse for Path выберите требуемый каталог. Добавление каталога со всеми его подкаталогами осуществляется при нажатии на кнопку Add with Subfolders. Путь к добавленному каталогу появляется в поле MATLAB search path. Порядок поиска соответствует расположению путей в этом поле, первым просматривается каталог, путь к которому размещен вверху списка. Порядок поиска можно изменить или вообще удалить путь к какому-либо каталогу, для чего выделите каталог в поле MATLAB search path и определите его положение при помощи следующих кнопок:

Move to Top – поместить вверх списка;

Move Up – переместить вниз на одну позицию;

Remove – удалить из списка;

Move Down – переместить вниз на одну позицию;

Move to Bottom – поместить вниз списка.

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

нажав кнопку Save. При помощи кнопки Default можно восстановить стандартные установки, а Revert предназначена для возврата к сохраненным.

Наши рекомендации