Общие требования к построению
Как было отмечено ранее, файл-функция (процедура) должна начинаться со строки заголовка
function [<ПКВ>] = <имя процедуры>(<ПВВ>).
Если перечень конечных (выходных) величин (ПКВ) содержит только один объект (в общем случае - матрицу), то файл-функция представляет собой обычную функцию (одной или нескольких переменных). Фактически даже в этом простейшем случае файл-функция является уже процедурой в обычном смысле других языков программирования, если выходная величина является вектором или матрицей. Первая строка в этом случае имеет вид:
function <имя переменной> = <имя процедуры>(<ПВВ>).
Если же в результате выполнения файл-функции должны быть определены (вычислены) несколько объектов (матриц), такая файл-функция представляет собой уже более сложный объект, который в программировании обычно называется процедурой, или подпрограммой. Общий вид первой строки в этом случае становится таким:
function [y1, y2, ... , y] = <имя процедуры>(<ПВВ>), т. е. перечень выходных величин y1, y2, ... , y должен быть представлен как вектор-строка с элементами y1, y2, ... , y (все они могут быть матрицами).
В простейшем случае функции одной переменной заголовок приобретет вид:
function y = func(x),
где func - имя функции (М-файла).
В качестве примера рассмотрим составление М-файла для функции
Для этого следует активизировать меню File командного окна MatLAB и выбрать в нем сначала команду New, а затем команду M-file. На экране появится окно текстового редактора. В нем нужно набрать такой текст:
function y = F1(x,d)
% Процедура, которая вычисляет значение функции
% y = (d3)*ctg(x)*sqrt(sin(x)4-cos(x)4).
% Обращение y = F1(x,d).
y = (d^3)*cot(x). *sqrt(sin(x). ^4-cos(x). ^4);
После этого необходимо сохранить этот текст в файле под именем F1.m.
Необходимый М-файл создан. Теперь можно пользоваться этой функцией при расчетах. Так, если ввести команду
» y = F1(1, 0.1)
то получим результат
y = 4. 1421e-004.
Следует заметить, что аналогично можно получить сразу вектор всех значений указанной функции при разных значениях аргумента, если последние собрать в некоторый вектор. Так, если сформировать вектор
» zet= 0:0. 3:1. 8;
и обратиться в ту же процедуру
» my = F1(zet,1),
то получим:
Warning: Divide by zero
my =
Columns 1 through 4
Na + Infi 0 + 2. 9369i 0 + 0. 8799i 0. 3783
Columns 5 through 7
0. 3339 0. 0706 -0. 2209
Примечания.
1. Возможность использования сформированной процедуры как для отдельных чисел, так и для векторов и матриц обусловлена применением в записи соответствующего М-файла вместо обычных знаков арифметических действий их аналогов с предшествующей точкой.
2. Во избежание вывода на экран нежелательных промежуточных результатов, необходимо в тексте процедуры все вычислительные операторы завершать символом " ; ".
3. Как показывают приведенные примеры, имена переменных, указанные в заголовке файл-функции могут быть любыми (совпадать или нет с именами, используемыми при обращении к этой файл-функции), т. е. носят формальный характер. Важно, чтобы структура обращения полностью соответствовала структуре заголовка в записи текста М-файла и чтобы переменные в этом обращении имели тот же тип и размер, как и в заголовке М-файла.
Чтобы получить информацию о созданной процедуре, достаточно набрать в командном окне команду:
» help f1,
и в командном окне появится