SlideShare a Scribd company logo
Основы MATLAB
Лекция 2
Юдинцев В. В.
Кафедра теоретической механики
Самарский университет
http://yudintsev.info
17 сентября 2016 г.
Содержание
1 Файловая система
2 Файл-скрипты
3 Файл-функции
4 Циклы
5 Операторы ветвления
6 Обработка исключительных ситуаций
7 Задачи
Юдинцев В. В. Основы MATLAB 2
Файловая система
Файловая система
Типы файлов
*.m (текстовые) содержат тексты программ, определения
функций.
*.mat (бинарные) содержат значения переменных.
*.mex (бинарные). MEX-файлы – динамически подключаемые
библиотеки
Юдинцев В. В. Основы MATLAB 4
Файловая система
Скрипты
Любую последовательность команд в MATLAB можно оформить в
виде m файла.
По умолчанию все переменные, объявленные внутри
файл-скрипта, являются глобальными.
Юдинцев В. В. Основы MATLAB 5
Файловая система
Функции
Файл-функция содержит определение одной или нескольких
функций.
По-умолчанию все переменные, объявленные внутри
файл-функции, являются локальными.
Файл-функция является самостоятельным программным модулем,
который связан с другими модулями и головной программой
через входные и выходные параметры.
Юдинцев В. В. Основы MATLAB 6
Файловая система
Создание m-файлов
При создании файл-функций и файл-скриптов следует избегать
перекрытия имён других функций.
Для проверки имени можно использовать функцию exist:
1 >> e x i s t atan
2 ans =
3 5
Если имя не занято, то функция exist возвращает 0 (5 – если
имя занято встроенной функцией).
Юдинцев В. В. Основы MATLAB 7
Файл-скрипты
Файл-скрипты
Файл-скрипт
Файл-скрипт не имеет входных и выходных аргументов.
Работает с данными из рабочей области.
Все переменные, объявленные в файл-скрипте, являются
глобальными.
В процессе выполнения не компилируются.
Представляют собой зафиксированную в виде файла
последовательность операций.
Юдинцев В. В. Основы MATLAB 9
Файл-скрипты
Структура файл-скрипта
Файл fscript.m
1 % Описание кода ,
2 % которое можно увидеть
3 % напечатав help f s c r i p t в окне команд
4 x = 1 : 0 . 1 : 1 0 ;
5 y= sin ( x ) ;
Юдинцев В. В. Основы MATLAB 10
Файл-скрипты
Выполнение файл-скрипта
Вызов из командной строки (command window)
Запуск из редактора при помощи сочетания Ctrl Enter
Файл-скрипт можно для удобства разделить на ячейки (секции)
при помощи удвоенного знака %%
%% секция 1
код ...
%% секция 2
код ...
Код в каждой секции может быть выполнен при помощи
Ctrl Enter
Юдинцев В. В. Основы MATLAB 11
Файл-функции
Файл-функции
Объявление функции
File New Function
1 % комментарии к функции ,
2 % которые будут выводится
3 % по команде
4 % help func_name
5 function [ out1 , out2 ] = func_name ( in1 , in2 )
6 %
7 % тело функции
8 %
9 out1 = . . .
10 out2 = . . .
11
Юдинцев В. В. Основы MATLAB 13
Файл-функции
Глобальные переменные в функциях
По умолчанию все переменные внутри функции являются
локальными.
Для того, чтобы несколько функций использовали одну
переменную, её необходимо объявить глобальной.
1 function res = func_name ( in1 , in2 )
2 global G ;
3 res =G* in1 + in2 ;
Юдинцев В. В. Основы MATLAB 14
Файл-функции
Выполнение функций и файл-скриптов
Имя файла и имя объявленной в нем функции предпочтительно делать
одинаковыми. Каталог, в котором содержатся вызываемые функции,
должен быть текущим или добавлен в пути поиска.
Юдинцев В. В. Основы MATLAB 15
Файл-функции
Выполнение функций и файл-скриптов
File Set Path
Юдинцев В. В. Основы MATLAB 16
Файл-функции
Оператор return
Функция прекращает работу после выполнения последнего
оператора.
Принудительно завершить функцию можно оператором return.
Юдинцев В. В. Основы MATLAB 17
Файл-функции
Векторы, как аргументы функции
Большинство встроенных функций MATLAB корректно обрабатывают
аргументы – векторы (матрицы).
1 >> sin ( 1 : 5 )
2 ans =
3 0.8415 0.9093 0.1411 −0.7568 −0.9589
Юдинцев В. В. Основы MATLAB 18
Файл-функции
Векторы, как аргументы функции
Вариант 1: функция работает только со скалярным аргументом
1 function f = myfun ( x )
2 f =exp(−x ) * s q r t ( ( x^2+1) / ( x ^4+0.1) )
Вариант 2: функция адаптирована для векторного аргумента
1 function f = myfun ( x )
2 f =exp(−x ) . * s q r t ( ( x .^2+1) . / ( x . ^ 4 + 0 . 1 ) )
Вызов функции: myfun([0.1 0.2 0.3])
Юдинцев В. В. Основы MATLAB 19
Файл-функции
Быстрое построение графика функции
Функция fplot
1 f p l o t ( ’ myfun ’ ,[0 4 ] )
2 f p l o t (@myfun, [ 0 4 ] )
первый аргумент: имя или
ссылка на функцию, второй
аргумент: диапазон
изменения аргумента
функции для построения
графика
Юдинцев В. В. Основы MATLAB 20
Файл-функции
Внутренние функции
Файл-функция вместе с определением основной функции может
содержать определения вспомогательных функций, доступных к
вызову только из основной функции.
1 function f = myfun ( x )
2 f1 = infun ( x ) ;
3 f = f1 +cos ( x ) ;
4 % Внутренняя функция
5 function f = infun ( x )
6 a =3;
7 f = sin ( x * 3 ) ;
Переменные, используемые в подфункциях локальные.
Юдинцев В. В. Основы MATLAB 21
Файл-функции
Вложенные функции
Вложенная функции определяется в теле основной функции.
Файл myfun.m:
1 function f = myfun ( x )
2 f1 = infun ( x ) ;
3 f = f1 +cos ( x ) ;
4 function f = infun ( x )
5 f = sin ( x ) ;
6 end
7 end
Из вложенной функции infun доступны локальные переменные
всех функций верхнего уровня и наоборот.
Юдинцев В. В. Основы MATLAB 22
Файл-функции
Функции c переменным количеством аргументов
varargin – список ячеек с параметрами функции;
length(varargin) – количество переданных аргумента;
varargin{1} – первый аргумент;
varargin{2} – второй аргумент.
1 function res = fun ( varargin )
2 i f length ( varargin ) <2
3 e r r o r ( ’Недостаточное количество аргументов ’ ) ;
4 end
5 . . .
Юдинцев В. В. Основы MATLAB 23
Файл-функции
Функции c переменным количеством аргументов
Аргумент varargin может быть указан после перечня обязательных
аргументов
1 function res = fun ( a1 , a2 , varargin )
2 i f length ( varargin ) <4
3 e r r o r ( ’Недостаточное количество аргументов ’ ) ;
4 end
5 . . .
Юдинцев В. В. Основы MATLAB 24
Файл-функции
Функция в качестве аргумента
Использование функции feval
Передача имени функции строкой:
1 >> x = 1;
2 >> fe va l ( ’ sin ’ , x )
3 ans =
4 0.8415
Передача ссылки на функцию (это работает быстрее):
1 >> fe va l ( @sin , x )
2 ans =
3 0.8415
Юдинцев В. В. Основы MATLAB 25
Циклы
Циклы
Оператор цикла for
1 f o r count = s t a r t : step : f i n a l
2 команды
3 команды
4 end
1 a = 0;
2 f o r k = 1:10
3 a = sin ( k * pi ) +a ;
4 end
Юдинцев В. В. Основы MATLAB 27
Циклы
Оператор цикла while
Общий вид:
1 while условие
2 команды
3 команды
4 end
Пример
1 while abs ( xErr ) <0.001
2 x1 = . . . ;
3 x2 = . . . ;
4 xErr = getError ( x1 , x2 ) ;
5 end
Юдинцев В. В. Основы MATLAB 28
Циклы
Операторы сравнения
Функция Синтаксис
Равно х==у
Не равно x∼=y
Меньше х<у
Больше х>у
Меньше или равно х<=у
Больше или равно х>=у
Юдинцев В. В. Основы MATLAB 29
Циклы
Продолжение выполнения цикла: continue
break – прерывание цикла.
continue – продолжение.
1 while условие
2 команда 1
3 i f условие
4 команда 2
5 continue ;
6 end
7 команда 3
8 end
“Команда 3” в седьмой строке не будет исполнена, если условие в
строке 3 будет выполнено.
Юдинцев В. В. Основы MATLAB 30
Циклы
Принудительный выход из блока: break
1 while условие
2 команда 1
3 i f условие
4 команда 2
5 break ;
6 end
7 команда 3
8 end
9 . . .
Если условие в строке 3 будет выполнено, то после команды 2 и
выхода из цикла, программа продолжит работу со строки 9.
Юдинцев В. В. Основы MATLAB 31
Операторы ветвления
Операторы ветвления
Оператор if
1 i f varA >5
2 команды , выполняемые если varA >5
3 end
Больше выбор:
1 i f условие
2 команды
3 e l s e i f условие
4 команды
5 e l s e i f условие
6 команды
7 else
8 команды
9 end
Юдинцев В. В. Основы MATLAB 33
Операторы ветвления
Оператор switch
1 switch varA
2 case 1
3 команды если varA=1
4 case 2
5 команды если varA=2
6 case 3
7 команды если varA=31
8 otherwise
9 команды
10 end
Юдинцев В. В. Основы MATLAB 34
Операторы ветвления
Функция в качестве аргумента
1 >> x = 1;
2 >> fe va l ( ’ sin ’ , x )
3 ans =
4 0.8415
1 >> fe va l ( @sin , x )
2 ans =
3 0.8415
Юдинцев В. В. Основы MATLAB 35
Обработка исключительных ситуаций
Обработка исключительных ситуаций
Операторы try, catch
1 t r y
2 C = [A ; B ] ;
3 catch err
4 i f ( strcmp ( err . i d e n t i f i e r , ’MATLAB : catenate :
dimensionMismatch ’ ) )
5 msg = ’Текст сообщения ’ ;
6 e r r o r ( ’MATLAB : myCode : dimensions ’ , msg ) ;
7 else
8 rethrow ( err ) ;
9 end
10 end
ME.identifier – идентификатор сообщения об ошибке.
ME.message – текст сообщения об ошибке.
Юдинцев В. В. Основы MATLAB 37
Обработка исключительных ситуаций
Предупреждения (warning)
1 function res = fun ( a , b )
2
3 i f a<0
4 warning ( ’ a должен быть больше нуля! a=%s ’ , . . . num2str ( a ) ) ;
5 else
6 . . .
7 end
Юдинцев В. В. Основы MATLAB 38
Задачи
Задачи
Игра “Жизнь” (автор Дж. Конвей)
1 Дано бесконечное поле на плоскости, разбитое на квадратные
ячейки.
2 Каждая ячейка может быть пустой или занятой клеткой.
3 Клетка умирает если вокруг неё меньше 2 или больше 3 соседей
(занято меньше 2 или больше 3 смежных ячеек).
4 Клетка рождается в пустой ячейке если вокруг неё ровно 3 соседа.
5 Рождение и смерть клеток происходит одновременно.
Юдинцев В. В. Основы MATLAB 40
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Глайдер
Юдинцев В. В. Основы MATLAB 41
Задачи
Юдинцев В. В. Основы MATLAB 42
Задачи
Задание
1 Напишите программу игры “Жизнь” на бесконечном поле.
2 Напишите программу игры “Жизнь” на торе (замкнутое
пространство).
Юдинцев В. В. Основы MATLAB 43

More Related Content

PDF
Основы MATLAB. Лекция 1.
PPTX
взаємне розміщення двох площин
PPTX
MATLAB - Arrays and Matrices
PPT
Арифметична прогресія
PPT
презентація до уроку 5 клас
PDF
NoSQL? No, SQL! - SQL, the underestimated "Big Data" technology
PDF
Introduction à la transformée en z et convolution discrète (GEII MA32)
PDF
matlab example
Основы MATLAB. Лекция 1.
взаємне розміщення двох площин
MATLAB - Arrays and Matrices
Арифметична прогресія
презентація до уроку 5 клас
NoSQL? No, SQL! - SQL, the underestimated "Big Data" technology
Introduction à la transformée en z et convolution discrète (GEII MA32)
matlab example

What's hot (20)

PPT
Перетворення графіків
PPT
Похідна складеної функції
PPT
мпр т 6
PDF
Peretvorenia grafikiv
PPT
функція у=коріньх
PDF
Linux binary Exploitation - Basic knowledge
DOC
Solution of System of Linear Equations
PPTX
Тотожні перетворення виразів із коренями
PDF
Διαγώνισμα προσομοίωσης - Γ Λυκείου 2016 - Μαθηματικά κατεύθυνσης
PPTX
корінь N го степеня та
PPTX
теорема вієта
PPTX
Рекурсия и рекурсивни функции в езика C++
PPT
Презентація:Обернена пропорційність
PPT
Null space, Rank and nullity theorem
DOCX
задачі лінійного програмування
PPT
координатна площина 6клас
PPTX
Інтеграл та його застосування
DOC
конспект уроку з геометрії
PPT
Презентація: Лінійна функція
PPT
Lu decomposition
Перетворення графіків
Похідна складеної функції
мпр т 6
Peretvorenia grafikiv
функція у=коріньх
Linux binary Exploitation - Basic knowledge
Solution of System of Linear Equations
Тотожні перетворення виразів із коренями
Διαγώνισμα προσομοίωσης - Γ Λυκείου 2016 - Μαθηματικά κατεύθυνσης
корінь N го степеня та
теорема вієта
Рекурсия и рекурсивни функции в езика C++
Презентація:Обернена пропорційність
Null space, Rank and nullity theorem
задачі лінійного програмування
координатна площина 6клас
Інтеграл та його застосування
конспект уроку з геометрії
Презентація: Лінійна функція
Lu decomposition
Ad

Viewers also liked (20)

PDF
Случай Эйлера
PDF
Python. Обработка ошибок
PDF
Python: Модули и пакеты
PDF
Кватернионы
PPTX
Matlab Introduction
PDF
Кинематические уравнения
PDF
Динамика твёрдого тела: случай Лагранжа
PDF
Углы Эйлера
PDF
Отделение створок головного обтекателя
PDF
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
PDF
Основы MATLAB. Численные методы
PPTX
CubeSat separation dynamics
PDF
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
PPTX
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
PDF
Attitude Dynamics of Re-entry Vehicle
PDF
Итерационные методы решения СЛАУ
PPTX
Научно-исследовательская работа кафедры Теоретической механики
PDF
Машинная арифметика. Cтандарт IEEE-754
PPTX
On problems of active space debris removal using tethered towing
PDF
Python: ввод и вывод
Случай Эйлера
Python. Обработка ошибок
Python: Модули и пакеты
Кватернионы
Matlab Introduction
Кинематические уравнения
Динамика твёрдого тела: случай Лагранжа
Углы Эйлера
Отделение створок головного обтекателя
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Основы MATLAB. Численные методы
CubeSat separation dynamics
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
Attitude Dynamics of Re-entry Vehicle
Итерационные методы решения СЛАУ
Научно-исследовательская работа кафедры Теоретической механики
Машинная арифметика. Cтандарт IEEE-754
On problems of active space debris removal using tethered towing
Python: ввод и вывод
Ad

Similar to Основы MATLAB. Программирование (14)

PPTX
Начало работы в R
PDF
апкс 2011 05_verilog
PDF
Лекция 1. Анализ эффективности алгоритмов
PPT
Запись вспомогательный алгоритмов на языка Паскаль
PDF
Использование GNU OCTAVE для инженерных и математических расчетов
DOC
лекция 3. программирование циклов
PPTX
mathcad.pptx CAD TEXNALOGIYA SISTEMA MATHCAD
PPT
Программирование разветвляющихся алгоритмов
PPTX
VHDL composite data types, arrays, records
PPT
Презентация на тему: ЕГЭ информатика
PPT
Present cource matlab
PDF
апкс 2011 03_verilog
PPTX
Урок 7. Интерпретация и компиляция функциональных программ.
Начало работы в R
апкс 2011 05_verilog
Лекция 1. Анализ эффективности алгоритмов
Запись вспомогательный алгоритмов на языка Паскаль
Использование GNU OCTAVE для инженерных и математических расчетов
лекция 3. программирование циклов
mathcad.pptx CAD TEXNALOGIYA SISTEMA MATHCAD
Программирование разветвляющихся алгоритмов
VHDL composite data types, arrays, records
Презентация на тему: ЕГЭ информатика
Present cource matlab
апкс 2011 03_verilog
Урок 7. Интерпретация и компиляция функциональных программ.

More from Theoretical mechanics department (18)

PDF
Космический мусор
PDF
PDF
PDF
Модификация механизма Йо-Йо
PDF
Python. Объектно-ориентированное программирование
PDF
Основы Python. Функции
PDF
Основы языка Питон: типы данных, операторы
PPTX
Chaotic motions of tethered satellites with low thrust
PPTX
Docking with noncooperative spent orbital stage using probe-cone mechanism
PDF
Алгоритмы и языки программирования
PDF
Deployers for nanosatellites
PDF
Chaotic Behavior of a Passive Satellite During Towing by a Tether
PPTX
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
PDF
Методы решения нелинейных уравнений
PDF
Наноспутники формата кубсат
PDF
Метод Кейна
PDF
Метод отдельных тел
PDF
Метод Й. Виттенбурга (Сферические шарниры)
Космический мусор
Модификация механизма Йо-Йо
Python. Объектно-ориентированное программирование
Основы Python. Функции
Основы языка Питон: типы данных, операторы
Chaotic motions of tethered satellites with low thrust
Docking with noncooperative spent orbital stage using probe-cone mechanism
Алгоритмы и языки программирования
Deployers for nanosatellites
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Методы решения нелинейных уравнений
Наноспутники формата кубсат
Метод Кейна
Метод отдельных тел
Метод Й. Виттенбурга (Сферические шарниры)

Основы MATLAB. Программирование

  • 1. Основы MATLAB Лекция 2 Юдинцев В. В. Кафедра теоретической механики Самарский университет http://yudintsev.info 17 сентября 2016 г.
  • 2. Содержание 1 Файловая система 2 Файл-скрипты 3 Файл-функции 4 Циклы 5 Операторы ветвления 6 Обработка исключительных ситуаций 7 Задачи Юдинцев В. В. Основы MATLAB 2
  • 4. Файловая система Типы файлов *.m (текстовые) содержат тексты программ, определения функций. *.mat (бинарные) содержат значения переменных. *.mex (бинарные). MEX-файлы – динамически подключаемые библиотеки Юдинцев В. В. Основы MATLAB 4
  • 5. Файловая система Скрипты Любую последовательность команд в MATLAB можно оформить в виде m файла. По умолчанию все переменные, объявленные внутри файл-скрипта, являются глобальными. Юдинцев В. В. Основы MATLAB 5
  • 6. Файловая система Функции Файл-функция содержит определение одной или нескольких функций. По-умолчанию все переменные, объявленные внутри файл-функции, являются локальными. Файл-функция является самостоятельным программным модулем, который связан с другими модулями и головной программой через входные и выходные параметры. Юдинцев В. В. Основы MATLAB 6
  • 7. Файловая система Создание m-файлов При создании файл-функций и файл-скриптов следует избегать перекрытия имён других функций. Для проверки имени можно использовать функцию exist: 1 >> e x i s t atan 2 ans = 3 5 Если имя не занято, то функция exist возвращает 0 (5 – если имя занято встроенной функцией). Юдинцев В. В. Основы MATLAB 7
  • 9. Файл-скрипты Файл-скрипт Файл-скрипт не имеет входных и выходных аргументов. Работает с данными из рабочей области. Все переменные, объявленные в файл-скрипте, являются глобальными. В процессе выполнения не компилируются. Представляют собой зафиксированную в виде файла последовательность операций. Юдинцев В. В. Основы MATLAB 9
  • 10. Файл-скрипты Структура файл-скрипта Файл fscript.m 1 % Описание кода , 2 % которое можно увидеть 3 % напечатав help f s c r i p t в окне команд 4 x = 1 : 0 . 1 : 1 0 ; 5 y= sin ( x ) ; Юдинцев В. В. Основы MATLAB 10
  • 11. Файл-скрипты Выполнение файл-скрипта Вызов из командной строки (command window) Запуск из редактора при помощи сочетания Ctrl Enter Файл-скрипт можно для удобства разделить на ячейки (секции) при помощи удвоенного знака %% %% секция 1 код ... %% секция 2 код ... Код в каждой секции может быть выполнен при помощи Ctrl Enter Юдинцев В. В. Основы MATLAB 11
  • 13. Файл-функции Объявление функции File New Function 1 % комментарии к функции , 2 % которые будут выводится 3 % по команде 4 % help func_name 5 function [ out1 , out2 ] = func_name ( in1 , in2 ) 6 % 7 % тело функции 8 % 9 out1 = . . . 10 out2 = . . . 11 Юдинцев В. В. Основы MATLAB 13
  • 14. Файл-функции Глобальные переменные в функциях По умолчанию все переменные внутри функции являются локальными. Для того, чтобы несколько функций использовали одну переменную, её необходимо объявить глобальной. 1 function res = func_name ( in1 , in2 ) 2 global G ; 3 res =G* in1 + in2 ; Юдинцев В. В. Основы MATLAB 14
  • 15. Файл-функции Выполнение функций и файл-скриптов Имя файла и имя объявленной в нем функции предпочтительно делать одинаковыми. Каталог, в котором содержатся вызываемые функции, должен быть текущим или добавлен в пути поиска. Юдинцев В. В. Основы MATLAB 15
  • 16. Файл-функции Выполнение функций и файл-скриптов File Set Path Юдинцев В. В. Основы MATLAB 16
  • 17. Файл-функции Оператор return Функция прекращает работу после выполнения последнего оператора. Принудительно завершить функцию можно оператором return. Юдинцев В. В. Основы MATLAB 17
  • 18. Файл-функции Векторы, как аргументы функции Большинство встроенных функций MATLAB корректно обрабатывают аргументы – векторы (матрицы). 1 >> sin ( 1 : 5 ) 2 ans = 3 0.8415 0.9093 0.1411 −0.7568 −0.9589 Юдинцев В. В. Основы MATLAB 18
  • 19. Файл-функции Векторы, как аргументы функции Вариант 1: функция работает только со скалярным аргументом 1 function f = myfun ( x ) 2 f =exp(−x ) * s q r t ( ( x^2+1) / ( x ^4+0.1) ) Вариант 2: функция адаптирована для векторного аргумента 1 function f = myfun ( x ) 2 f =exp(−x ) . * s q r t ( ( x .^2+1) . / ( x . ^ 4 + 0 . 1 ) ) Вызов функции: myfun([0.1 0.2 0.3]) Юдинцев В. В. Основы MATLAB 19
  • 20. Файл-функции Быстрое построение графика функции Функция fplot 1 f p l o t ( ’ myfun ’ ,[0 4 ] ) 2 f p l o t (@myfun, [ 0 4 ] ) первый аргумент: имя или ссылка на функцию, второй аргумент: диапазон изменения аргумента функции для построения графика Юдинцев В. В. Основы MATLAB 20
  • 21. Файл-функции Внутренние функции Файл-функция вместе с определением основной функции может содержать определения вспомогательных функций, доступных к вызову только из основной функции. 1 function f = myfun ( x ) 2 f1 = infun ( x ) ; 3 f = f1 +cos ( x ) ; 4 % Внутренняя функция 5 function f = infun ( x ) 6 a =3; 7 f = sin ( x * 3 ) ; Переменные, используемые в подфункциях локальные. Юдинцев В. В. Основы MATLAB 21
  • 22. Файл-функции Вложенные функции Вложенная функции определяется в теле основной функции. Файл myfun.m: 1 function f = myfun ( x ) 2 f1 = infun ( x ) ; 3 f = f1 +cos ( x ) ; 4 function f = infun ( x ) 5 f = sin ( x ) ; 6 end 7 end Из вложенной функции infun доступны локальные переменные всех функций верхнего уровня и наоборот. Юдинцев В. В. Основы MATLAB 22
  • 23. Файл-функции Функции c переменным количеством аргументов varargin – список ячеек с параметрами функции; length(varargin) – количество переданных аргумента; varargin{1} – первый аргумент; varargin{2} – второй аргумент. 1 function res = fun ( varargin ) 2 i f length ( varargin ) <2 3 e r r o r ( ’Недостаточное количество аргументов ’ ) ; 4 end 5 . . . Юдинцев В. В. Основы MATLAB 23
  • 24. Файл-функции Функции c переменным количеством аргументов Аргумент varargin может быть указан после перечня обязательных аргументов 1 function res = fun ( a1 , a2 , varargin ) 2 i f length ( varargin ) <4 3 e r r o r ( ’Недостаточное количество аргументов ’ ) ; 4 end 5 . . . Юдинцев В. В. Основы MATLAB 24
  • 25. Файл-функции Функция в качестве аргумента Использование функции feval Передача имени функции строкой: 1 >> x = 1; 2 >> fe va l ( ’ sin ’ , x ) 3 ans = 4 0.8415 Передача ссылки на функцию (это работает быстрее): 1 >> fe va l ( @sin , x ) 2 ans = 3 0.8415 Юдинцев В. В. Основы MATLAB 25
  • 27. Циклы Оператор цикла for 1 f o r count = s t a r t : step : f i n a l 2 команды 3 команды 4 end 1 a = 0; 2 f o r k = 1:10 3 a = sin ( k * pi ) +a ; 4 end Юдинцев В. В. Основы MATLAB 27
  • 28. Циклы Оператор цикла while Общий вид: 1 while условие 2 команды 3 команды 4 end Пример 1 while abs ( xErr ) <0.001 2 x1 = . . . ; 3 x2 = . . . ; 4 xErr = getError ( x1 , x2 ) ; 5 end Юдинцев В. В. Основы MATLAB 28
  • 29. Циклы Операторы сравнения Функция Синтаксис Равно х==у Не равно x∼=y Меньше х<у Больше х>у Меньше или равно х<=у Больше или равно х>=у Юдинцев В. В. Основы MATLAB 29
  • 30. Циклы Продолжение выполнения цикла: continue break – прерывание цикла. continue – продолжение. 1 while условие 2 команда 1 3 i f условие 4 команда 2 5 continue ; 6 end 7 команда 3 8 end “Команда 3” в седьмой строке не будет исполнена, если условие в строке 3 будет выполнено. Юдинцев В. В. Основы MATLAB 30
  • 31. Циклы Принудительный выход из блока: break 1 while условие 2 команда 1 3 i f условие 4 команда 2 5 break ; 6 end 7 команда 3 8 end 9 . . . Если условие в строке 3 будет выполнено, то после команды 2 и выхода из цикла, программа продолжит работу со строки 9. Юдинцев В. В. Основы MATLAB 31
  • 33. Операторы ветвления Оператор if 1 i f varA >5 2 команды , выполняемые если varA >5 3 end Больше выбор: 1 i f условие 2 команды 3 e l s e i f условие 4 команды 5 e l s e i f условие 6 команды 7 else 8 команды 9 end Юдинцев В. В. Основы MATLAB 33
  • 34. Операторы ветвления Оператор switch 1 switch varA 2 case 1 3 команды если varA=1 4 case 2 5 команды если varA=2 6 case 3 7 команды если varA=31 8 otherwise 9 команды 10 end Юдинцев В. В. Основы MATLAB 34
  • 35. Операторы ветвления Функция в качестве аргумента 1 >> x = 1; 2 >> fe va l ( ’ sin ’ , x ) 3 ans = 4 0.8415 1 >> fe va l ( @sin , x ) 2 ans = 3 0.8415 Юдинцев В. В. Основы MATLAB 35
  • 37. Обработка исключительных ситуаций Операторы try, catch 1 t r y 2 C = [A ; B ] ; 3 catch err 4 i f ( strcmp ( err . i d e n t i f i e r , ’MATLAB : catenate : dimensionMismatch ’ ) ) 5 msg = ’Текст сообщения ’ ; 6 e r r o r ( ’MATLAB : myCode : dimensions ’ , msg ) ; 7 else 8 rethrow ( err ) ; 9 end 10 end ME.identifier – идентификатор сообщения об ошибке. ME.message – текст сообщения об ошибке. Юдинцев В. В. Основы MATLAB 37
  • 38. Обработка исключительных ситуаций Предупреждения (warning) 1 function res = fun ( a , b ) 2 3 i f a<0 4 warning ( ’ a должен быть больше нуля! a=%s ’ , . . . num2str ( a ) ) ; 5 else 6 . . . 7 end Юдинцев В. В. Основы MATLAB 38
  • 40. Задачи Игра “Жизнь” (автор Дж. Конвей) 1 Дано бесконечное поле на плоскости, разбитое на квадратные ячейки. 2 Каждая ячейка может быть пустой или занятой клеткой. 3 Клетка умирает если вокруг неё меньше 2 или больше 3 соседей (занято меньше 2 или больше 3 смежных ячеек). 4 Клетка рождается в пустой ячейке если вокруг неё ровно 3 соседа. 5 Рождение и смерть клеток происходит одновременно. Юдинцев В. В. Основы MATLAB 40
  • 50. Задачи Юдинцев В. В. Основы MATLAB 42
  • 51. Задачи Задание 1 Напишите программу игры “Жизнь” на бесконечном поле. 2 Напишите программу игры “Жизнь” на торе (замкнутое пространство). Юдинцев В. В. Основы MATLAB 43