Система математических расчетов MATLAB

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

е. Вы можете убедиться в этом, вводя команду whos в командной строке.

 

Функции

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

Простой пример функции

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

 

function y = average(x)

% AVERAGE Mean of vector elements.

% AVERAGE(X), where X is a vector, is the mean of vector elements.

% Non-vector input results in an error.

 

[m,n] = size(x);

if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))

error(Input must be a vector)

end

y = sum(x) / length(x) ; % Фактические вычисления

 

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

 

z = 1:99;

average(z)

 

что даст следующий результат

ans =

50

 

Основные части синтаксиса М-функций

Функции в общем случае состоят из следующий частей:

  • Строка определения функции (The Function Definition Line)
  • Строка помощи H1 (The H1 Line)
  • Текст помощи (Help Text)
  • Тело функции (The Function Body)
  • Комментарии (Comments)

 

Строка определения функции

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

 

где input argument входной аргумент;

function name имя функции;

output argument выходной аргумент;

keyword зарезервированное слово;

 

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

 

function [x,y,z] = sphere(theta, phi, rho)

 

Если функция не имеет выходных переменных, оставьте выход пустым, например,

 

function printresults(x)

 

или используйте пустые квадратные скобки

 

function [ ] = printresults(x)

 

Переменные, которые вы передаете функции не обязательно должны иметь то же имя, что и в линии определения функции.

 

Строка помощи H1

Строка H1, названная так потому что она является первой строкой текста помощи (Help text), является линией комментария, которая следует непосредственно за строкой определения фу-нкции. Поскольку она состоит из текста комментария, строка H1начинается с символа про-цента (%). Для функции average эта строка имеет вид

 

% AVERAGE Mean of vector elements.

(СРЕДНЕЕ ЗНАЧЕНИЕ Вычисление среднего значения векторов)

 

Эта строка является первой строкой текста, который появляется при вводе пользователем в командной строке команды

 

help function_name

(help имя_функции)

 

Далее, функция lookfor производит поиск и выводит в командное окно тольку строку H1. Так как данная строка обеспечивает важную обобщающую информацию о М-файле, очень важно сделать ее по возможности более описательной.

 

 

 

Текст помощи

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

 

% AVERAGE(X), where X is a vector, is the mean of vector elements.

% Nonvector input results in an error.

(% СРЕДНЕЕ(Х), где Х является вектором, вычисляет среднее значение

%элементов вектора. Не векторный вход приводит к ошибке).

 

Когда вы вводите help function_name, MATLAB выводит линии комментариев, которые на-ходятся между строкой определения функции и первой строкой не комментариев (выполня-емой или пустой строкой). MATLAB игнорирует любые линии комментариев, которые появ-ляются за данным блоком текста помощи. Например, напечатав help sin получим

 

SIN Sine.

SIN(X) is the sine of the elements of X.

(SIN(X) является синусом элементов массива Х)

 

 

Тело функции

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

ции average содержит нескольких простых программных выражений:

 

[m,n] = size(x);

if (~((m == 1) | (n == 1)) | (m == 1 & n == 1)) % Flow control

error(Input must be a vector) % Error message display