Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab BSU.doc
Скачиваний:
11
Добавлен:
08.09.2019
Размер:
1.04 Mб
Скачать

Операторная функция.

Операторная функция определяет функцию с помощью одного оператора. Результатом выполнения операторной функции является вычисленное значение выражения. Определения операторных функций должны предшествовать их вызову. К операторной функции можно обращаться только в том программном модуле, в котором она определена. Определение операторной функции имеет вид:

  • g = inline(expr)

  • g = inline(expr, arg1, arg2, ...)

  • g = inline(expr, n)

здесь expr – строковая константа, определяющая математическое выражение, arg1, arg2,... – список входных параметров, n – скаляр означает, что список формальных входных параметров состоит из x, P1, P2,…Pn. Рассмотрим пример:

g = inline('sin(alpha*x)', 'x', 'alpha')

g =

Inline function:

g(x, alpha) = sin(alpha*x)

g(3.149, 0.5)

ans =

1.0000

Передача данных через глобальные переменные.

Поскольку переменные в файлах-функциях являются локальными, то передача данных из модуля в модуль происходит только через входные и выходные параметры. Команда

global X Y Z

объявляет переменные X, Y, Z модуля-функции глобальными. Чтобы несколько программных модулей могли совместно использовать глобальную переменную, ее идентификатор должен быть объявлен как global во всех этих модулях.

Параметры функционального типа.

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

Описание переменной функционального типа имеет вид:

fhandle = @fname;

Здесь имя fname – функции, @fname – дескриптор (указатель) функции, fhandle – переменная функционального типа. Для определения значение функции с помощью ее функционального указателя можно использовать функцию feval, имеющую структуру:

feval(fhandle, arg1, arg2, ..., argn)

Рассмотрим пример:

s=@sin;

sin(1)

ans =

0.8415

feval(s, 1)

ans =

0.8415

Напишем функцию для вычисления суммы , когда вид функции F(x) заранее неизвестен.

function f=sm(fh)

f=0;

for i=1:10

f=f+feval(fh, i);

end;

Тогда для вычисления суммы, например функции sin(x), достаточно выполнить оператор:

sm(@sin)

ans =

1.4112

Функции с переменным числом аргументов.

При создании функций с переменным числом аргументов полезно использовать две функции:

  • nargin – возвращает число входных параметров данной функции

  • nargout – возвращает число выходных параметров данной функции

В качестве примера рассмотрим часть кода функции myplot с переменным числом аргументов:

function [x0, y0] = myplot(fname, lims, npts, angl, subdiv)

% MYPLOT График функции.

% MYPLOT(fname, lims, npts, angl, subdiv)

% Первые два аргумента обязательны,

% три других имеют значение по умолчанию.

...

if nargin < 5, subdiv = 20; end

if nargin < 4, angl = 10; end

if nargin < 3, npts = 25; end

...

if nargout == 0

plot(x, y)

else

x0 = x;

y0 = y;

end

Управление потоками.

MATLAB имеет пять видов структур управления потоками:

  • оператор if

  • оператор switch

  • циклы for

  • циклы while

  • оператор break

Оператор if имеет следующую структуру:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]