- •Раздел 1 Основные понятия среды matlab
- •1. Начало работы в среде matlab
- •1.1. Характеристика среды matlab
- •1.2. Общие положения и правила работы в среде matlab
- •1.3. Работа в командном окне
- •1.4. Правила и особенности ввода математических выражений
- •1.5. Сохранение содержимого рабочего окна
- •2.2. Типы данных. Описание основных типов
- •2 Системные переменные и типы данных
- •2.1 Системные переменные
- •2.3. Комплексные числа
- •2.4. Символьные переменные
- •2.5. Массивы
- •2.5.1 Задание массивов
- •2.5.2 Доступ к элементам массивов
- •2.5.3 Функции обработки массивов
- •2.6 Тип данных структура (struct)
- •2.6.1 Задание структур
- •2.6.2 Функции обработки структур
- •2.7 Тип данных ячейка (сell)
- •2.8 Функции определения типов
- •2.9 Функции для работы со значениями даты и времени
- •2.10 Функции преобразования типов
- •3. Основные операции и математические функции matlab
- •3.1 Основные арифметические операции
- •3.2 Основные элементарные функции
- •Help имя_функции,
- •3.3 Операции отношения и логические операции
- •4 Операторы среды matlab
- •4.1 Условный оператор if
- •4.2 Условный оператор switch
- •4.3 Реализация циклических процессов
- •4.3.1 Оператор цикла while
- •4.3.2 Оператор цикла for
- •Pause – останавливает выполнение программы до момента нажатия любой клавиши на клавиатуре; pause(n) – останавливает выполнение программы на n секунд;
- •Примеры.
- •Как и в случае сценариев, к подпрограмме функции можно обратиться по имени, более того функции могут быть компонентами математических выражений и операндов, а также параметрами других функций.
- •5.4 Создание подпрограмм с переменным списком входных и выходных параметров
- •5.5 Локальные и глобальные переменные
- •5.6 Созданий функций пользователя и указателей на функции. Функции как аргументы функций.
- •5.8 Сообщения об ошибках
- •6 Ввод данных и работа с файлами
- •6.1 Использование рабочей области Workspace
- •6.2 Чтение и запись неформатированных файлов
- •6. 3 Работа с текстовыми и бинарными файлами
- •6.3.1 Команды открытия и закрытия файлов
- •6.3.2 Команды чтения и записи fread и fwrite
- •6.4 Операции над форматированными файлами
Как и в случае сценариев, к подпрограмме функции можно обратиться по имени, более того функции могут быть компонентами математических выражений и операндов, а также параметрами других функций.
Примеры.
Вычисление радиуса сферы
.
Создадим и сохраним на диске М-файл
вычисления радиуса
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
Вычисление синуса разложением в ряд
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
Листинг функции перевода секунд в часы, минуты и секунды
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.
