Общие требования к построению

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

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,

и в командном окне появится

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