Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные понятия среды MATLAB.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

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

Примеры.

  1. Вычисление радиуса сферы . Создадим и сохраним на диске М-файл вычисления радиуса

function r = radius3(x, у, z)

% вычисление радиуса сферы

r = sqrt(х.^2 + у.^2 + z.^2);

Зададим значения параметров и вычислим радиус и диаметр

>> x=2; y=3; z=4; % фактические значения параметров

>> R=radius3(x, y, z) % вычисление радиуса с помощью М-файла

R = 5.3852

>> D=2*radius3(x, y, z) % вычисление диаметра

D = 10.7703

  1. Вычисление синуса разложением в ряд

function Sr = mysin(x)

% Вычисление синуса разложением в ряд

Sr = 0; k = 0;

while abs(x.^(2*k+1)/factorial(2*k+1))>1.0e-10

Sr = Sr + (-1)^k*x.^(2*k+1)/factorial(2*k+1);

k = k + 1; end

  1. Листинг функции перевода секунд в часы, минуты и секунды

function [hour, minute, second] = hms(sec)

hour = floor(sec/3600);

minute = floor((sec-hour*3600)/60);

second = sec-hour*3600-minute*60;

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

Пример.

function y=My_fun2(x)

% Вычисление 2-х функций

% у1=2*x

% y2=y^2

y(:,1)=2.*x;

y(:,2)=x.^2;

Задав в командном окне значение аргументов и обратившись к функции, получим результат:

>> x=0:0.5:5; % задание значения аргумента х в виде диапазона

>> res=My_fun2(x); % обращение к М-файлу и вычисление значений функции

>> y1=res(:,1):y2=res(:,2); % разделение массива значений функции на два

>> disp([y1'; y2']) % вывод значений функции в виде строк за счет транспонирования

0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000

0 0.2500 1.0000 2.2500 4.0000 6.2500 9.0000 12.2500 16.0000 20.2500 25.0000

Для подпрограммы-функции выделяется собственное, изолированное от рабочего пространства системы MATLAB, пространство переменных. Переменные, определенные внутри функции являются локальными (т.е., если в теле функции и в «главной» программе переменные имеют одинаковое имя, они воспринимаются как различные переменные и располагаются в разных областях памяти).

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

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

Пример. Пусть М-файл имеет вид:

 function ret1 = FirstFunc( x1, x2 )

ret1 = x1 + SecondFunc( x2 )

 function ret2 = SecondFunc( y )

ret2 = y .* y + 2 * y + 3;

Извне можно вызывать только функцию FirstFunc.