ЛР 2
M-файлы, cкрипты и функции в системе Matlab.
В MatLab подпрограммы имеют разрешение.m. Подпрограммы могут быть как скриптами(не имеют параметров; имеют общее пространство рабочих переменных с вызывающим кодом.), так и функциями(это подпрограммы MATLAB; имеют собственное, независимое от вызывающего кода, пространство рабочих переменных; имеют параметры.). Все подпрограммы имеют собственные локальные перменные.
Передача данных между подпрограммой и основным кодом возможна либо ч ерез параметры функции, либо через глобальные переменные.
Формальные параметры действуют только внутри функции (являются локальными). При обращении к функции формальные параметры заменяются на данные вызывающего кода (фактические параметры).
Фактические параметры функции - это параметры вызывающего кода (базовой рабочей области), которые подставляются вместо формальных параметров при вызове функции. При вызове осуществляется копирование данных из базовой рабочей области в рабочую область функции.
|
|
При обращении к функции формальные параметры заменяются на данные вызывающего кода (фактические параметры).
Записываем функцию, как function [Список выхода] = ИмяФункции(Список входа)
Способы передачи данных между вызывающим кодом и функцией в среде Matlab. Понятие формальных и фактических параметров. Соответствие между формальными и фактическими параметрами.
MATLAB:способы передачи данных между функцией и вызывающим кодом:
· через параметры функции
формальные параметры
• Формальные параметры действуют только внутри функции (являются локальными).
• При обращении к функции формальные параметры заменяются на данные вызывающего кода (фактические параметры).
• Формальные параметры переменные, значения которых передаются из вызывающего кода в функцию (входные) или из функции в вызывающий код (выходные).
• Формальные параметры - это «вход» и «выход» подпрограммы (функции MATLAB).
Фактические переменные
• Фактические параметры функции - это параметры вызывающего кода (базовой рабочей области), которые подставляются вместо формальных параметров при вызове функции. При вызове осуществляется копирование данных из базовой рабочей области в рабочую область функции.
• Фактические параметры должны соответствовать формальным по числу, порядку перечисления, типу и структуре.
· через глобальные переменные
Функция может использовать не только локальные данные (своей рабочей области), но и глобальные данные (базовой рабочей области).
Пример.
function h=falling(t)
global GRAVITY
h=1/2*GRAVITY*t.^2;
Функция может быть вызвана так:
global GRAVITY
|
|
GRAVITY=9.8;
y=falling(0.1:0.1:1);
Нельзя делать глобальными промежуточные переменные!
28. Описание и вызов функций в среде Matlab.
function [s,k]=sumk(a) end
% Что делает функция? if s(p)>0
[n,m]=size(a); k=k+1;
k=0; end
for p=1:n end
s(p)=0;
for q=1:m
s(p)=s(p)+a(p,q)
вызов
[ СписокВыхода ]= ИмяФункции (СписокВхода)
A = 1 2 3 4 5
6 7 8 -90 0
>> [sA,kA]=sumk(A)
sA = 15 -69
29. Глобальные переменные в среде Matlab. Их применение.
Функция может использовать не только локальные данные (своей рабочей области), но и глобальные данные (базовой рабочей области).
Пример.
function h=falling(t)
global GRAVITY
h=1/2*GRAVITY*t.^2;
Функция может быть вызвана так:
global GRAVITY
GRAVITY=9.8;
y=falling(0.1:0.1:1);
Нельзя делать глобальными промежуточные переменные!
Понятие о подпрограммах – параметрах других подпрограмм. Задачи, в которых они используются. Манипуляторы функций в среде Matlab. Функции – параметры других функций в среде Matlab. Разработка функции с функцией - формальным параметром (примеры). Пример корректного использования глобальных переменных. Класс Function Functions.
В каких задачах используются процедуры-параметры?
• Использование параметра-подпрограммы необходимо, когда некоторый алгоритм, описанный как подпрограмма, применим к множеству алгоритмов, каждый из которых также задается подпрограммой.
• Классические примеры таких ситуаций дают численные методы. В подпрограммах численных методов (вычисления определенного интеграла, нахождения экстремумов и нулей функций, вывода графиков, линий уровня, таблиц функций) обрабатываемые функции задаются как параметры.
• Средства для использования параметров-подпрограмм имеются во всех алгоритмических языках, предназначенных для решения вычислительных задач (СИ, Фортран, MatLab, …).
Манипулятор функции – это ссылка на функцию (можно считать адресом входа в функцию). Обозначается символом @.
В простейшем случае это возможность переобозначения функции, например:
>> h=@sin
h =@sin
>> y=sin(pi/6)
y = 0.5000
>> y=h(pi/6)
y = 0.5000
Функция feval позволяет вычислить значение функции по ее манипуляру и аргументу: feval(манипулятор, аргумент). Например:
>> y=feval(h,pi/6) % эквивалентно y=h(pi/6) или >> y=feval(@sin,pi/6)
y = 0.5000
Манипулятор функции может использоваться как формальный входной параметр другой функции
Пример: функция plot_fhandle строит график для заданной функции одной переменной и диапазона аргумента:
function x = plot_fhandle(fh, data)
plot(data, feval(fh, data))
Пусть надо решить уравнение, заданное с точностью до параметра p, например, p задается вводом:
x – p cosx=0.
В программе надо обратиться к root, подставив вместо формального параметра F фактический
g(x,p)= x – p cosx.
Но g имеет два аргумента, а F один. Выход из этой ситуации состоит в том, чтобы параметр р считать глобальным (если функцию root изменять нельзя).