Файл-функции с одним входным аргументом
Предположим, что в вычислениях необходимо часто использовать функцию 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 предназначена для возврата к сохраненным.