66
Вызовы функции:
estarg1([1 2])
testarg1([1 2],[3 4])
Результат выполнения:
ans = 1 4
ans = 4 6
Пример 5. Суммирование объектов double в массиве ячеек varargin
function s = add(s,varargin)
for n = 1:nargin-1
s = s + varargin{n};
end
Пример 6.
О массиве ячеек varargin входных параметров переменной длины
function b = blue(varargin)
if nargin < 1
varargin = {’rgb’};
end
switch(varargin{1})
case ’rgb’
b = [0 0 1];
case ’hsv’
b = [2/3 1 1];
otherwise
error('Цветовая модель не определена')
end
Аноним и
функция-строка
Помимо описанных конструкций в ML используются анонимы. Это не-
поименованные процедуры-функции одного или нескольких аргументов.
Синтаксис
анонимов сводится к выражению, левая часть которого является
67
именем процедуры, правая состоит из определяющего символа @, после ко-
торого в круглых скобках перечисляются один или несколько аргументов
функции, а затем приводится её аналитическое представление, зависящее от
этих
аргументов, например,
sincos = @(x) sin(x) + cos(x);
w = @(x,t,c) cos(x-c*t);
Заметим, что анонимы могут быть аргументами функций, например, fzero
fzero( @(x) sin(x)+cos(x), 0 ).
Анонимную функцию можно определять прямо в командной строке ML или в
пределах
функции или скрипта. То есть, можно создать простые функции без
необходимости создания файла специально для них.
Конструкция inline также обеспечивает быстрое создание функции одной
или нескольких переменных в соответствие с предлагаемым синтаксисом:
Namefunction=inline(expression_string)
Пример 5. Процедура inline
g=inline('2*cos(x)-sin(y)')
g(pi/8,pi/12)
symvar(g)
% массив ячеек,
содержит аргументы функции
g{1},g{2}
% аргументы
Подпроцедуры
Помимо
функций и процедур иногда целесообразно определить
функцию, которая нужна только для выполнения конкретной процедуры, то-
гда она должна быть записана в том же файле, что и головная процедура, и
является подпроцедурой (подфункцией). Подпроцедура «невидима» для
остальных программ или процедур.
Пример 6. Процедуры и подфункции
function [x1,x2] = quadform(a,b,c)
69
Литература
1. Говорухин, В. Компьютер в математическом исследовании: Учеб.курс -
СПб. [и др.]: Питер, 2001. - 624 с.
2. А. М. Половко, П. Н. Бутусов. MATLAB для студента
Санкт-Петербург
БХВ-Петербург 2005 320 с. (19 экз)
3. Таранчук В.Б. Основные функции систем компьютерной алгебры. ,
2013. — 59 p.
4. Дьяконов В.П. MatLab:Учебный курс. СПб..: 2001
5. Джон Г. Мэтьюз,КуртисД.Финк.Численные методы. Использование
MatLab.И. «Вильямс »Москва, Санкт-Петербург, Киев.2001, 713 с.
6. Дьяконов В. П. Энциклопедия компьютерной алгебры. ДМК-Пресс,
2009. — С. 1264. — ISBN 978-5-94074-490-0.