SlideShare a Scribd company logo
Основы MATLAB
Лекция 1
Юдинцев В. В.
Кафедра теоретической механики
Самарский университет
http://yudintsev.info
17 сентября 2016 г.
Содержание
1 Введение
2 Основы работы в MATLAB
3 Операторы
4 Функции MATLAB
5 Функции пользователя
6 Ячейки
7 Структуры
8 Задачи
Юдинцев В. В. Основы MATLAB 2
Введение
Введение
История создания
MATLAB как язык программирования был разработан Кливом
Моулером (Cleve Moler) в конце 1970-х годов для упрощения
использования программных библиотек LINPACK и EISPACK без
необходимости изучения Фортрана.
В начале 80-х Джек Литл (Jack Little) Модернизировал эту систему
для персональных компьютеров типа IBM PC, VAX и Macintosh.
В 1984 основана компания The MathWorks inc.
Последняя версия (09.2016): MATLAB R2016b.
Юдинцев В. В. Основы MATLAB 4
Введение
Структура MATLAB
Высокоуровневый интерпретируемый язык программирования,
включающий основанные на матрицах структуры данных,
широкий спектр функций, интегрированную среду разработки,
объектно-ориентированные возможности и интерфейсы к
программам, написанным на других языках программирования.
Toolboxes – коллекции MATLAB-функций, для решения
определённого класса задач (Optimization Toolbox, Partial
Differential Equation Toolbox, Spline Toolbox, Statistic Toolbox).
Simulink – приложение для анализа динамических систем.
Юдинцев В. В. Основы MATLAB 5
Введение
Свободное ПО
Близкое по функциональности свободное ПО:
GNU Octave https://www.gnu.org/software/octave;
FreeMat http://freemat.sourceforge.net;
Scilab http://www.scilab.org;
R (для статистических расчётов) https://www.r-project.org.
Python с библиотеками numpy, scipy, matplotlib http://www.scipy.org;
Sagemath http://www.sagemath.org.
Юдинцев В. В. Основы MATLAB 6
Введение
GNU Octave
Юдинцев В. В. Основы MATLAB 7
Основы работы в MATLAB
Основы работы в MATLAB
Окно программы
Command window – окно команд;
Command history – окно истории истории команд;
Current directory – окно, содержащие список файлов и
папок текущего каталога;
Editor – текстовый редактор.
Workspace – окно со списком переменных текущей сессии.
Юдинцев В. В. Основы MATLAB 9
Основы работы в MATLAB
MATLAB как калькулятор
a=1.2 – присвоение некоторого значения переменной a
1 >> a =1.2
2 a = 1.2
b=sin(a)*sqrt(a+2) – вычисление выражения и вывод
результата
1 >> b= sin ( a ) * s q r t ( a +2)
2 b =
3 1.6673
; – точка с запятой в конце выражения подавляет вывод
результата:
1 >> b= sin ( a ) * s q r t ( a +2) ;
2 >>
Юдинцев В. В. Основы MATLAB 11
Основы работы в MATLAB
Базовые команды редактора (Command window)
↑ – возврат к предыдущей команде.
help имя функции – справка по функции (или F1).
cls – очистить окно команд (Command window).
clear – удалить все переменные в текущей сессии.
Ctrl C - (в окне команд) прерывание вычислений.
Юдинцев В. В. Основы MATLAB 12
Основы работы в MATLAB
Синтаксис
Имена переменных могут состоять из латинских буквам, цифр,
знака подчёркивания: a, a1, x1, x_1. Имена переменных
чувствительны к регистру: A и a – это разные переменные.
При создании переменной может быть явно указан тип (по
умолчанию double):
1 >> a= int16 (25) ;
Юдинцев В. В. Основы MATLAB 13
Основы работы в MATLAB
Типы данных
Тип Описание
double вещественный, 64 бит
single вещественный, 32 бит
int8 знаковый целочисленный, 8 бит
int16 знаковый целочисленный, 16 бит
int32 знаковый целочисленный, 32 бит
int64 знаковый целочисленный, 64 бит
uint8 беззнаковый целочисленный, 8 бит
uint16 беззнаковый целочисленный, 16 бит
uint32 беззнаковый целочисленный, 32 бит
uint64 беззнаковый целочисленный, 64 бит
Юдинцев В. В. Основы MATLAB 14
Основы работы в MATLAB
Синтаксис
Квадратные скобки используются для создания векторов и
матриц: a=[1,2,3,4].
Круглые скобки используются для вызова функций и для
группировки выражений: sin(1.2)+a*(c+1).
Фигурные скобки для создания массивов ячеек:
a={'Масса',10}
Юдинцев В. В. Основы MATLAB 15
Основы работы в MATLAB
Создание последовательностей
var=начальное значение:шаг:конечное значение по
умолчанию шаг равен +1
1 >> c = 1:2:10
2 c =
3 1 3 5 7 9
Создание вектора-столбца
1 >> c = ( 1 : 2 : 1 0 ) ’
2 c =
3 1
4 3
5 5
6 7
7 9
Юдинцев В. В. Основы MATLAB 16
Основы работы в MATLAB
Управление переменными
whos показать переменные текущей сессии
1 >> whos
2 Name Size Bytes Class A t t r i b u t e s
3
4 a 1x1 8 double
5 ans 1x5 40 double
6 b 1x1 8 double
clear удалить все переменные текущей сессии
clear f1,f2 удалить переменные f1,f2 текущей сессии
Юдинцев В. В. Основы MATLAB 17
Основы работы в MATLAB
Ведение “протокола” работы
diary filename – ведет запись на диск всех команд в строках
ввода и полученных результатов в виде текстового файла.
diary off – приостанавливает запись в файл.
diary on – вновь начинает запись в файл.
Юдинцев В. В. Основы MATLAB 18
Основы работы в MATLAB
Сохранение сессии
Сохранение значения всех переменных в файл *.mat
save filename – запись в файл filename.mat текущей сессии
(значение всех переменных).
load filename – загрузка значений переменных из файла
filename.
Юдинцев В. В. Основы MATLAB 19
Основы работы в MATLAB
Ввод чисел
a=1.25
a=9.3e10 9.3 · 1010
a=2.36e-5 2.36 · 10−5
1 >> a =1.25
2 a = 1.2500
1 >> a =9.3 e10
2 a = 9.3000e+10
1 >> a =2.36e−5
2 a = 2.3600e−05
Юдинцев В. В. Основы MATLAB 20
Основы работы в MATLAB
Формат отображения результата
1 >> format short ;
2 >> pi
3 ans=
4 3.1416
1 >> format long ;
2 >> pi
3 ans=
4 3.141592653589793
1 >> format short e ;
2 >> pi
3 ans=
4 3.1416e+00
1 >> format long e ;
2 >> pi
3 ans=
4 3.141592653589793e+00
Юдинцев В. В. Основы MATLAB 21
Основы работы в MATLAB
Константы
pi – число π
1 >> pi
2 ans = 3.1416
realmin – минимальное положительное число
1 >> realmin
2 ans = 2.2251e−308
realmax – максимальное положительное число
1 >> realmax
2 ans = 1.7977e+308
Использование имен переменных, совпадающих со встроенными
именами, не рекомендуется
Юдинцев В. В. Основы MATLAB 22
Основы работы в MATLAB
Комплексные числа
complex(1,3) – комплексное число 1 + 3i
1 >> a = complex ( 1 , 3 ) ;
i или j – мнимая единица
√
−1
1 >> b = 1+2 i ;
2 >> a * b
3 ans =
4 −5.0000 + 5.0000 i
(1 + 3i) · (1 + 2i) = 1 + 2i + 3i − 6 = −5 + 5i
Юдинцев В. В. Основы MATLAB 23
Основы работы в MATLAB
ans – результат вычисления предыдущего действия
Встроенная переменная ans хранит результат последнего действия:
1 >> 2+2
2 ans =
3 4
Эту переменную можно использовать в выражениях:
1 >> ans *5
2 ans =
3 20
Юдинцев В. В. Основы MATLAB 24
Основы работы в MATLAB
Типы данных: векторы
[1.2 1.5 1.9 0.5] или [1.2, 1.5, 1.9, 0.5] вектор-строка
[
1.2 1.5 1.9 0.5
]
[1.2; 1.5; 1.9; 0.5] вектор-столбец




1.2
1.5
1.9
0.5




Юдинцев В. В. Основы MATLAB 25
Основы работы в MATLAB
Матрицы и скаляры
Каждая переменная в MATLAB – это матрица, поэтому переменная
1 >> a =1;
это матрица размерности 1x1:
1 >> a ( 1 , 1 )
2 ans =
3 1
Юдинцев В. В. Основы MATLAB 26
Основы работы в MATLAB
Типы данных: матрицы
A=[1.2 1.5 1.9; 0.5 0.6 0.7; 0.1 1 3]
A =


1.2 1.5 1.9
0.5 0.6 0.7
0.1 1 3


элементы вводятся построчно;
элементы матрицы в строке можно разделять пробелами или
запятыми;
для разграничения строк используются точка с запятой;
элемент матрицы может быть числом или выражением.
Юдинцев В. В. Основы MATLAB 27
Операторы
Операторы
Оператор ()
help ops вывести список всех операторов
(i,j,k,...) – доступ к элементам матрицы. A(i,j) – i строка, j
столбец.
Юдинцев В. В. Основы MATLAB 29
Операторы
Оператор ()
A(i) – i элемент вектора (строки или столбца) или i элемент матрицы,
при расположении элементов по столбцам.
1, 4, 7, 2, 5, 8, 3, 6, 9
Юдинцев В. В. Основы MATLAB 30
Операторы
Логическое индексирование
Логическое индексирование позволяет выбрать из вектора или
матрицы элементы, удовлетворяющие заданному условию.
1 >> a = sin ( 1 : 0 . 5 : 5 )
2 a =
3 0.8415 0.9975 0.9093 0.5985 0.1411 −0.3508
−0.7568 −0.9775 −0.9589
1 >> ind =a<0
2 ind =
3 0 0 0 0 0 1 1 1 1
1 >> a ( ind )
2 ans =
3 −0.3508 −0.7568 −0.9775 −0.9589
Юдинцев В. В. Основы MATLAB 31
Операторы
Скалярное произведение векторов
⃗a ·⃗b = |a||b| cos φ = axbx + ayby + azbz
Вычисление скалярного произведения, используя встроенную
функцию dot:
1 >> a =[1 2 3 ] ;
2 >> b=[4 5 6 ] ;
3 >> dot ( a , b )
4 ans =
5 32
Юдинцев В. В. Основы MATLAB 32
Операторы
Скалярное произведение векторов
⃗a ·⃗b = |a||b| cos φ = axbx + ayby + azbz
Вычисление скалярного произведения, используя оператор матричное
умножение:
1 >> a *b ’
2 ans =
3 32
Юдинцев В. В. Основы MATLAB 33
Операторы
Матричное умножение
A*B умножение чисел или матриц (матричное умножение)
1 >> a = [1 2 3
2 4 5 6 ] ;
3 >> b = [1 2
4 3 4
5 5 6 ] ;
6 >> a * b
7 ans =
8 22 28
9 49 64
Юдинцев В. В. Основы MATLAB 34
Операторы
Поэлементное умножение
C=A.*B поэлементное умножение матриц Cij = AijBij
1 >> a = [1 2;
2 3 4 ] ;
3 >> b = [4 7;
4 1 3 ] ;
5 >> a . * b
6 ans =
7 4 14
8 3 12
Юдинцев В. В. Основы MATLAB 35
Операторы
Возведение в степень
Возведение в степень матрицы или числа
1 >> a =[1 2
2 3 4 ] ;
3 >> a^2
4 ans =
5 7 10
6 15 22
a2
= a · a =
(
1 2
3 4
)
·
(
1 2
3 4
)
=
(
7 10
15 22
)
Юдинцев В. В. Основы MATLAB 36
Операторы
Возведение в степень
Возведение в степень всех элементов матрицы
1 >> a =[1 2
2 3 4 ] ;
3 >> a .^2
4 ans =
5 1 4
6 9 16
Юдинцев В. В. Основы MATLAB 37
Операторы
Операторы
A' – транспонирование матрицы:
1 >> A=[1.2 0 . 3 ;
2 0.5 2 . 1 ] ;
3 >> A ’
4 ans =
5 1.2000 0.5000
6 0.3000 2.1000
C=A/B – деление C = AB−1
C=A./B – поэлементное деление Ci = Ai/Bi
Юдинцев В. В. Основы MATLAB 38
Операторы
Решение системы линейных уравнений
Деление AB выполняет операцию C = A−1
B – решение СЛУ с
матрицей коэффициентов A и матрицей правой части B:
{
1.2x1 + 0.3x2 = 1;
0.5x1 + 2.1x2 = 2.
1 >> A=[1.2 0 . 3 ; 0 . 5 2 . 1 ] ;
2 >> B = [ 1 ; 2 ] ;
3 >> AB
4 ans =
5 0.6329
6 0.8017
Юдинцев В. В. Основы MATLAB 39
Операторы
Логические операторы < > = >= <= ~=
Результатом операции над матрицей или вектором является
логический вектор (матрица):
1 >> A = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
2 >> A<5
3 ans=
4 [1 ,1 ,1 ,1 ,0 ,0]
5 >> A==3
6 ans=
7 [0 ,0 ,1 ,0 ,0 ,0]
8 >> A~=5
9 ans=
10 [1 ,1 ,1 ,1 ,0 ,1]
11
Юдинцев В. В. Основы MATLAB 40
Операторы
Оператор :
Для создания списков с равноотстоящими значения используется
оператор :
n1:s:n2 n1, n1 + s, n1 + 2s, . . . , nk, nk ≤ n2
Оператор : может использоваться для доступа к элементам
матрицы и вектора
A=1:10 – 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
A(1:2:10) – нечетные элементы вектора: [1,3,5,7,9]
Юдинцев В. В. Основы MATLAB 41
Операторы
Оператор :
Для прямоугольной матрицы A:
A(:,k) – k-ый столбец матрицы А
A(k,:) – k-ая строка матрицы А
A(:,[2,4,5]) – второй, четвертый и пятый столбец матрицы А
1 >> a = magic ( 4 )
2 a =
3 16 2 3 13
4 5 11 10 8
5 9 7 6 12
6 4 14 15 1
7 >> a ( [ 1 3 ] , : )
8 ans =
9 16 2 3 13
10 9 7 6 12
Юдинцев В. В. Основы MATLAB 42
Операторы
Блоки матриц
A(1:2,3:4) – блок матрицы А, лежащий на пересечении строк 1 и 2,
и столбцов 3 и 4.
1 >> a = magic ( 4 )
2 a =
3 16 2 3 13
4 5 11 10 8
5 9 7 6 12
6 4 14 15 1
7 >> a ( [ 1 2 ] , [ 3 4 ] )
8 ans =
9 3 13
10 10 8
Юдинцев В. В. Основы MATLAB 43
Операторы
Удаление строк и столбцов из матрицы
A(3,:)=[] – удалить третью строку из матрицы A
1 >> a = magic ( 4 )
2 a =
3 16 2 3 13
4 5 11 10 8
5 9 7 6 12
6 4 14 15 1
7 >> a ( 3 , : ) = [ ]
8 a =
9 16 2 3 13
10 5 11 10 8
11 4 14 15 1
Юдинцев В. В. Основы MATLAB 44
Функции MATLAB
Функции MATLAB
Математические функции
sin, cos, tan, cot, acos, asin, ... – тригонометрические
log, log10, log2, exp, sqrt, nthroot(x,n), ...
sign(a) – знак числа a: -1, 0, +1.
Юдинцев В. В. Основы MATLAB 46
Функции MATLAB
Функции округления
К ближайшему к нулю целому:
fix(1.8)=1 но fix(-1.8)=-1
К меньшему целому:
floor(-1.9)=-2 но floor(1.9)=1
К большему целому:
ceil(1.3)=2
К ближайшему целому:
round(1.4)=1, round(-1.5)=-2
Юдинцев В. В. Основы MATLAB 47
Функции MATLAB
Функции комплексных чисел
abs(z) – модуль.
angle(z) – аргумент.
conj(z) – комплексно-сопряженное число.
imag(z) – мнимая часть.
real(z) – вещественная часть.
isreal(z) – 1, если z – вещественное число, 0 – мнимое.
Юдинцев В. В. Основы MATLAB 48
Функции MATLAB
Специальные матрицы
eye(n), eye(n,m) – единичные матрицы n × n.
1 >> eye ( 3 , 4 )
2 ans =
3 1 0 0 0
4 0 1 0 0
5 0 0 1 0
rand(n), rand(n,m) – матрица псевдослучайных чисел
ones(n,m) – матрица n × m, заполненная единицами
zeros(n,m) – матрица n × m, заполненная нулями
Юдинцев В. В. Основы MATLAB 49
Функции MATLAB
Специальные матрицы
magic(n) – квадратная матрица n × n,с одинаковыми суммами
элементов по строкам и столбцам и диагоналям.
1 >> magic ( 3 )
2 ans =
3 8 1 6
4 3 5 7
5 4 9 2
Юдинцев В. В. Основы MATLAB 50
Функции MATLAB
Функции над матрицами
diag(A), diag(A,k) – строка, содержащая диагональные
элементы матрицы A, если A - матрица (k=0 для главной
диагонали).
diag(V) – диагональная матрица с элементами вектора V на
диагонали, если V - вектор.
tril(A), tril(A,k) – нижняя треугольная матрица,
построенная по матрице A.
triu(A), triu(A,k) – верхняя треугольная матрица,
построенная по матрице A.
Юдинцев В. В. Основы MATLAB 51
Функции MATLAB
Функции над матрицами
Параметр k в функциях diag(A,k), tril(A,k), triu(A,k)
Юдинцев В. В. Основы MATLAB 52
Функции MATLAB
Функции над векторами
cross(a,b) – векторное произведение;
dot(a,b) – скалярное произведение;
sum(a) – сумма элементов вектора;
sort(a) – сортировка вектора; если a – матрица, то
производится сортировка элементов в столбцах.
Другой вариант вызова [res,i]=sort(a). Переменная i
содержит индексы элементов исходного вектора a,
расположенные по порядку сортировки.
Юдинцев В. В. Основы MATLAB 53
Функции MATLAB
Сумма элементов вектора или матрицы
sum(a)
Сумма элементов вектора:
1 >> a =[1 2 3 4 ] ;
2 >> sum ( a )
3 ans=
4 10
5
Сумма элементов матрицы:
1 >> a =[1 2;
2 3 4 ] ;
3 >> sum ( a )
4 ans=
5 4 6
6
Юдинцев В. В. Основы MATLAB 54
Функции MATLAB
Сумма элементов матрицы
Сумма элементов матрицы по заданному измерению:
1 >> a =[1 2;
2 3 4 ] ;
3 >> sum ( a , 2 )
4 ans =
5 3
6 7
7
Юдинцев В. В. Основы MATLAB 55
Функции MATLAB
Сортировка
sort(a) – сортировка вектора или матрицы. Если a – матрица, то
производится сортировка элементов в столбцах (по первому
измерению):
1 >> a = magic ( 3 )
2 a =
3 8 1 6
4 3 5 7
5 4 9 2
6 >> s o r t ( a )
7 ans =
8 3 1 2
9 4 5 6
10 8 9 7
11
Юдинцев В. В. Основы MATLAB 56
Функции MATLAB
Сортировка
Вторым аргументом функции sort может быть номер измерения, по
которому должна выполняться сортировка:
1 >> a = magic ( 3 )
2 a =
3 8 1 6
4 3 5 7
5 4 9 2
6 >> s o r t ( a , 2 )
7 ans =
8 1 6 8
9 3 5 7
10 2 4 9
11
Юдинцев В. В. Основы MATLAB 57
Функции MATLAB
Сортировка
[res,i]=sort(a). i содержит индексы элементов исходного
вектора a, расположенные по порядку сортировки.
1 >> a = magic ( 3 )
2 a =
3 8 1 6
4 3 5 7
5 4 9 2
6 >> [ res , i ] = s o r t ( a )
7 res =
8 3 1 2
9 4 5 6
10 8 9 7
11 i =
12 2 1 3
13 3 2 1
14 1 3 2
Юдинцев В. В. Основы MATLAB 58
Функции MATLAB
Битовые функции
bitand(a,b) – поразрядное И
1 >> bitand ( 5 , 1 )
2 ans =
3 1
bitor(a,b) – поразрядное ИЛИ
1 >> b i t o r ( 4 , 2 )
2 ans =
3 6
bitset(a,bit,v) – установка бита в позиции bit числа a; v = 1 или
0
1 >> b i t s e t ( 5 , 3 , 0 )
2 ans =
3 1
Юдинцев В. В. Основы MATLAB 59
Функции MATLAB
Преобразование числа к другому основанию
dec2bin(a) – строка с двоичным представлением положительного
числа a
1 >> dec2bin ( 5 )
2 ans =
3 101
4
dec2hex(a) – строка с шестнадцатеричным представлением
положительного числа a
1 >> dec2hex (255)
2 ans =
3 FF
4
Юдинцев В. В. Основы MATLAB 60
Функции MATLAB
Преобразование числа к другому основанию
bin2dec(a) – преобразование строки с двоичным представлением
числа к десятичной системе a
1 >> bin2dec ( ’ 111 ’ )
2 ans =
3 7
4
hex2dec(a) – преобразование строки с шестнадцатеричным
представлением числа к десятичной системе a
1 >> hex2dec ( ’ F1 ’ )
2 ans =
3 241
4
Юдинцев В. В. Основы MATLAB 61
Функции MATLAB
Работа с множествами
intersect(A, B) – пересечение векторов А и В как множеств:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> i n t e r s e c t ( a , b )
4 ans =
5 1 7
ismember(A, S) – содержит ли А элементы из S:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> ismember ( a , b )
4 ans =
5 1 0 0 1 0 1 0 1
Юдинцев В. В. Основы MATLAB 62
Функции MATLAB
Работа с множествами
setdiff(A, B) – элементы, входящие в А, но отсутствующие в В
(A-B):
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> s e t d i f f ( a , b )
4 ans =
5 2 3 8
setxor(A, B) – элементы, не входящие в результат пересечения
множеств А и В:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> s e t d i f f ( a , b )
4 ans =
5 2 3 5 6 8
Юдинцев В. В. Основы MATLAB 63
Функции MATLAB
Работа с множествами
union(A, B) – объединение множеств:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> union ( a , b )
4 ans =
5 1 2 3 5 6 7 8
unique(A) – элементы вектора А без повторений:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> unique ( a )
3 ans =
4 1 2 3 7 8
Юдинцев В. В. Основы MATLAB 64
Функции пользователя
Функции пользователя
Способы задания функции
inline функции;
анонимные функции;
файл-функции .
Юдинцев В. В. Основы MATLAB 66
Функции пользователя
inline-функция
1 >> f1 = i n l i n e ( ’ x1^2+x2^2 ’ , ’ x1 ’ , ’ x2 ’ ) ;
2 >> f1 ( 4 , 2 )
3 ans =
4 20
Переменные из рабочей области недоступны.
Юдинцев В. В. Основы MATLAB 67
Функции пользователя
Анонимная функция
1 >> f = @ ( x1 , x2 ) x1^2+x2 ^2;
2 >> f ( 4 , 2 )
3 ans =
4 20
Переменные из рабочей области доступны, но рассматриваются как
константы:
1 >> a =2;
2 >> f = @ ( x1 ) a * x1 ;
3 >> f ( 1 )
4 ans =
5 2
6 >> a =1; f ( 1 )
7 ans =
8 2
Юдинцев В. В. Основы MATLAB 68
Ячейки
Ячейки
Ячейки
Массивы ячеек (cells) могут хранить данные различных типов: числа,
строки, структуры, массивы ячеек.
1 >> data {1} = ’Текст ’
2 data =
3 ’Текст ’
4 >> data {2} = 1
5 data =
6 ’Текст ’ [ 1 ]
7 >> data {5} = [1 2 3]
8 data =
9 ’Текст ’ [ 1 ] [ ] [ ] [1 x3 double ]
Юдинцев В. В. Основы MATLAB 70
Ячейки
Доступ к элементам массива ячеек
1 >> data {1}
2 ans =
3 Текст
4
5 >> data {2}
6 ans =
7 1
8
9 >> data {5}
10 ans =
11 1 2 3
Юдинцев В. В. Основы MATLAB 71
Ячейки
Функция cell
Формирование пустой матрицы ячеек
1 >> a = c e l l ( 3 , 4 )
2 a =
3 [ ] [ ] [ ] [ ]
4 [ ] [ ] [ ] [ ]
5 [ ] [ ] [ ] [ ]
Присвоение значения элементу новой матрицы
1 >> a {2 ,3} = ’элемент 2 ,3 ’
2 a =
3 [ ] [ ] [ ] [ ]
4 [ ] [ ] ’элемент 2 ,3 ’ [ ]
5 [ ] [ ] [ ] [ ]
Юдинцев В. В. Основы MATLAB 72
Ячейки
Функции для работы с ячейками
Преобразование числовой матрицы в матрицу ячеек
1 >> a=magic ( 5 )
2 a =
3 17 24 1 8 15
4 23 5 7 14 16
5 4 6 13 20 22
6 10 12 19 21 3
7 11 18 25 2 9
1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] )
2 b =
3 [2 x2 double ] [2 x1 double ] [2 x2 double ]
4 [3 x2 double ] [3 x1 double ] [3 x2 double ]
Юдинцев В. В. Основы MATLAB 73
Ячейки
Функции для работы с ячейками
Преобразование числовой матрицы в матрицу ячеек
1 >> a=magic ( 5 )
2 a =
3 17 24 1 8 15
4 23 5 7 14 16
5 4 6 13 20 22
6 10 12 19 21 3
7 11 18 25 2 9
1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] )
2 b =
3 [2 x2 double ] [2 x1 double ] [2 x2 double ]
4 [3 x2 double ] [3 x1 double ] [3 x2 double ]
Юдинцев В. В. Основы MATLAB 73
Ячейки
Преобразование матрицы ячеек в числовую матрицу
Функция mat2cell:
1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] )
2 b =
3 [2 x2 double ] [2 x1 double ] [2 x2 double ]
4 [3 x2 double ] [3 x1 double ] [3 x2 double ]
5 >> cell2mat ( b )
6 ans =
7 17 24 1 8 15
8 23 5 7 14 16
9 4 6 13 20 22
10 10 12 19 21 3
11 11 18 25 2 9
Юдинцев В. В. Основы MATLAB 74
Структуры
Структуры
Структура
Структура – это элемент данных, который может содержать
разнотипные поля:
имя = struct('поле1',значение,'поле2',значение,...)
Структура, описывающая параллелепипед:
1 box= s t r u c t ( ’ height ’ , 100 , ’ width ’ , 10 , ’ depth ’ , 5)
2 box=
3 height : 100
4 width : 10
5 depth : 5
Юдинцев В. В. Основы MATLAB 76
Структуры
Доступ к полям структуры
Считывание значения поля
1 >> box . height
2 ans =
3 100
Имя поля может быть задано строкой
1 >> box . ( ’ height ’ )
2 ans =
3 100
Юдинцев В. В. Основы MATLAB 77
Структуры
Список полей структуры
1 >> names = fieldnames ( box )
2 names =
3 ’ height ’
4 ’ width ’
5 ’ depth ’
6 ’ mass ’
Юдинцев В. В. Основы MATLAB 78
Структуры
Изменение значения поля
1 >> box . height = 20
2 box =
3 height : 20
4 width : 10
5 depth : 5
Юдинцев В. В. Основы MATLAB 79
Структуры
Добавление поля
Для добавления поля к структуре необходимо присвоить значение
новому полю, как существующему:
1 >> box . mass=5
2 box =
3 height : 20
4 width : 10
5 depth : 5
6 mass : 5
Юдинцев В. В. Основы MATLAB 80
Структуры
Создание структуры
Cоздание новой структуры без использования функции struct:
1 >> sphere2 . radius =2
2 sphere2 =
3 radius : 2
Юдинцев В. В. Основы MATLAB 81
Задачи
Задачи
Задание 1
Напишите кратчайшее однострочное выражение для построения
квадратной матрицы вида




1 2 3 4 . . . n
1 2 3 4 . . . n
. . . . . . . . . . . . . . . n
1 2 3 4 . . . n




Юдинцев В. В. Основы MATLAB 83
Задачи
Задание 2
Напишите выражение, определяющее индекс элемента вектора с
наименьшим отклонением от среднего значения элементов вектора P
i : min |Pi − m(P)|
Например, для
P = [8, 1, 2, 2, 0, 3]
ответом будет 6, т.е. шестой элемент массива находится ближе всего к
среднему значению элементов массива. Среднее значение
определяется при помощи функции mean
1 >> P=[8 1 2 2 0 3 ] ;
2 >> mean ( P )
3 ans = 2.6667
4 >>
Юдинцев В. В. Основы MATLAB 84
Задачи
Задание 3
Напишите код, который находит матрицу B, отличающуюся от матрицы
A перестановкой столбцов по возрастанию суммы элементов столбца.
A =


2 3 5
4 1 9
3 0 2

 ⇒ B =


5 2 3
9 4 1
2 3 0


5 + 9 + 2 > 2 + 4 + 3 > 3 + 1 + 0
Юдинцев В. В. Основы MATLAB 85
Задачи
Задание 4
В матрице A записаны координат точек на плоскости: в первом
столбце – координаты x, во втором столбце – y:
A =






x1 y1
x2 y2
x3 y3
. . . . . .
xn yn






Постройте матрицу B, которая составлена из строк матрицы A так, что
с увеличением номера строки с координатами точки растёт расстояние
от этой точки до начала координат.
Юдинцев В. В. Основы MATLAB 86
Задачи
Задание 5
1
2
4 3
Структура графа описана при помощи списка
смежности, записанного в виде матрицы:
L =




1 2
2 4
. . . . . .
3 4



 ,
В каждой строке матрицы L записываются индексы
вершин, связанные дугой.
Постройте матрицу смежности графа S, элемент которой
– sij отличен от нуля, только если вершины i и j
смежные, т. е. соединены дугой. Остальные элементы
матрицы S равны нулю.
Юдинцев В. В. Основы MATLAB 87

More Related Content

What's hot

Matlab introduction
Matlab introductionMatlab introduction
Matlab introduction
Vikash Jakhar
 
Begin with Python
Begin with PythonBegin with Python
Begin with Python
Narong Intiruk
 
Input and Output
Input and OutputInput and Output
Input and Output
Marieswaran Ramasamy
 
Graphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear AlgebraGraphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear Algebra
Kenji Hiranabe
 
Scratch golikov 1
Scratch golikov 1Scratch golikov 1
Scratch golikov 1
Sergiy Shydlovskyy
 
Livro de Salmos Responsoriais - Por ordem de ano litúrgico
Livro de Salmos Responsoriais - Por ordem de ano litúrgicoLivro de Salmos Responsoriais - Por ordem de ano litúrgico
Livro de Salmos Responsoriais - Por ordem de ano litúrgico
João Rosa
 
Python 101 1
Python 101   1Python 101   1
Python 101 1
Iccha Sethi
 
Python: Модули и пакеты
Python: Модули и пакетыPython: Модули и пакеты
Python: Модули и пакеты
Theoretical mechanics department
 
High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance HaskellJohan Tibell
 
Programming.pdf
Programming.pdfProgramming.pdf
Programming.pdf
Md. Ashraf Uddin
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
Yi-Fan Chu
 
텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법
텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법
텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법
Seungwoo Yeom
 
Bloom filter
Bloom filterBloom filter
Bloom filter
Kumazaki Hiroki
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlabN NASRI
 
Whiteboarding Coding Challenges in Python
Whiteboarding Coding Challenges in PythonWhiteboarding Coding Challenges in Python
Whiteboarding Coding Challenges in Python
Andrew Ferlitsch
 
貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化
Ikumi Shimizu
 
Serving ML easily with FastAPI
Serving ML easily with FastAPIServing ML easily with FastAPI
Serving ML easily with FastAPI
Sebastián Ramírez Montaño
 
Основы NumPy
Основы NumPyОсновы NumPy
Python Interview Questions | Python Interview Questions And Answers | Python ...
Python Interview Questions | Python Interview Questions And Answers | Python ...Python Interview Questions | Python Interview Questions And Answers | Python ...
Python Interview Questions | Python Interview Questions And Answers | Python ...
Simplilearn
 

What's hot (20)

Matlab introduction
Matlab introductionMatlab introduction
Matlab introduction
 
Begin with Python
Begin with PythonBegin with Python
Begin with Python
 
Python - the basics
Python - the basicsPython - the basics
Python - the basics
 
Input and Output
Input and OutputInput and Output
Input and Output
 
Graphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear AlgebraGraphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear Algebra
 
Scratch golikov 1
Scratch golikov 1Scratch golikov 1
Scratch golikov 1
 
Livro de Salmos Responsoriais - Por ordem de ano litúrgico
Livro de Salmos Responsoriais - Por ordem de ano litúrgicoLivro de Salmos Responsoriais - Por ordem de ano litúrgico
Livro de Salmos Responsoriais - Por ordem de ano litúrgico
 
Python 101 1
Python 101   1Python 101   1
Python 101 1
 
Python: Модули и пакеты
Python: Модули и пакетыPython: Модули и пакеты
Python: Модули и пакеты
 
High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance Haskell
 
Programming.pdf
Programming.pdfProgramming.pdf
Programming.pdf
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법
텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법
텍스트 랭크 알고리즘을 이용한 실시간 이슈 데이터 분석법
 
Bloom filter
Bloom filterBloom filter
Bloom filter
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlab
 
Whiteboarding Coding Challenges in Python
Whiteboarding Coding Challenges in PythonWhiteboarding Coding Challenges in Python
Whiteboarding Coding Challenges in Python
 
貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化
 
Serving ML easily with FastAPI
Serving ML easily with FastAPIServing ML easily with FastAPI
Serving ML easily with FastAPI
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
Python Interview Questions | Python Interview Questions And Answers | Python ...
Python Interview Questions | Python Interview Questions And Answers | Python ...Python Interview Questions | Python Interview Questions And Answers | Python ...
Python Interview Questions | Python Interview Questions And Answers | Python ...
 

Viewers also liked

Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
Theoretical mechanics department
 
Случай Эйлера
Случай ЭйлераСлучай Эйлера
Случай Эйлера
Theoretical mechanics department
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
Theoretical mechanics department
 
Тренинги Mathworks
Тренинги MathworksТренинги Mathworks
Тренинги Mathworks
MATLAB
 
Итерационные методы решения СЛАУ
Итерационные методы решения СЛАУИтерационные методы решения СЛАУ
Итерационные методы решения СЛАУTheoretical mechanics department
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
Theoretical mechanics department
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAMikhail Kurnosov
 
Углы Эйлера
Углы ЭйлераУглы Эйлера
Углы Эйлера
Theoretical mechanics department
 
Tutorial Math Cad
Tutorial Math CadTutorial Math Cad
Tutorial Math Cadlalorroh
 
Matlab и Mathcad. Сравнительная характеристика.
Matlab и Mathcad. Сравнительная характеристика.Matlab и Mathcad. Сравнительная характеристика.
Matlab и Mathcad. Сравнительная характеристика.Dmitry Bulgakov
 
8571 урок excel
8571 урок excel8571 урок excel
8571 урок excelAnn Eres
 
поняття електронної таблиці
поняття електронної таблиціпоняття електронної таблиці
поняття електронної таблиціAnn Eres
 
Отделение створок головного обтекателя
Отделение створок головного обтекателяОтделение створок головного обтекателя
Отделение створок головного обтекателя
Theoretical mechanics department
 
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Theoretical mechanics department
 
CubeSat separation dynamics
CubeSat separation dynamicsCubeSat separation dynamics
CubeSat separation dynamics
Theoretical mechanics department
 
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual FuelThe Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
Theoretical mechanics department
 
Presagis presentation
Presagis presentationPresagis presentation
Presagis presentationMATLAB
 
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
Theoretical mechanics department
 
Моделирование и анализ дискретно-событийных систем
Моделирование и анализ дискретно-событийных системМоделирование и анализ дискретно-событийных систем
Моделирование и анализ дискретно-событийных систем
MATLAB
 
Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...
Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...
Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...
DevGAMM Conference
 

Viewers also liked (20)

Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
 
Случай Эйлера
Случай ЭйлераСлучай Эйлера
Случай Эйлера
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
 
Тренинги Mathworks
Тренинги MathworksТренинги Mathworks
Тренинги Mathworks
 
Итерационные методы решения СЛАУ
Итерационные методы решения СЛАУИтерационные методы решения СЛАУ
Итерационные методы решения СЛАУ
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
 
Углы Эйлера
Углы ЭйлераУглы Эйлера
Углы Эйлера
 
Tutorial Math Cad
Tutorial Math CadTutorial Math Cad
Tutorial Math Cad
 
Matlab и Mathcad. Сравнительная характеристика.
Matlab и Mathcad. Сравнительная характеристика.Matlab и Mathcad. Сравнительная характеристика.
Matlab и Mathcad. Сравнительная характеристика.
 
8571 урок excel
8571 урок excel8571 урок excel
8571 урок excel
 
поняття електронної таблиці
поняття електронної таблиціпоняття електронної таблиці
поняття електронної таблиці
 
Отделение створок головного обтекателя
Отделение створок головного обтекателяОтделение створок головного обтекателя
Отделение створок головного обтекателя
 
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
 
CubeSat separation dynamics
CubeSat separation dynamicsCubeSat separation dynamics
CubeSat separation dynamics
 
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual FuelThe Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
 
Presagis presentation
Presagis presentationPresagis presentation
Presagis presentation
 
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
 
Моделирование и анализ дискретно-событийных систем
Моделирование и анализ дискретно-событийных системМоделирование и анализ дискретно-событийных систем
Моделирование и анализ дискретно-событийных систем
 
Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...
Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...
Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...
 

Similar to Основы MATLAB. Лекция 1.

Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 
лекция 3. программирование циклов
лекция 3. программирование цикловлекция 3. программирование циклов
лекция 3. программирование цикловstudent_kai
 
Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003
Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003
Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003
Yura Maturin
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
Viktor Turskyi
 
Основы SciPy
Основы SciPyОсновы SciPy
регрессионный анализ в Ptc math cad
регрессионный анализ в Ptc math cadрегрессионный анализ в Ptc math cad
регрессионный анализ в Ptc math cad
khishigbayar ider
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программирования
ssusere39acb
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Python Meetup
 
3. Массивы в C#
3. Массивы в C#3. Массивы в C#
3. Массивы в C#
Olga Maksimenkova
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
Theoretical mechanics department
 
Простая линейная регрессия в системе R
Простая линейная регрессия в системе RПростая линейная регрессия в системе R
Простая линейная регрессия в системе R
Sergey Mastitsky
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовТранслируем.бел
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
Andrey Karpov
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
Theoretical mechanics department
 
Структурные формулы и функциональные схемы
Структурные формулы и функциональные схемыСтруктурные формулы и функциональные схемы
Структурные формулы и функциональные схемы
aleksashka3
 
практика 1
практика 1практика 1
практика 1student_kai
 
Урок 3. Карринг и ленивые вычисления.
Урок 3. Карринг и ленивые вычисления.Урок 3. Карринг и ленивые вычисления.
Урок 3. Карринг и ленивые вычисления.
Система дистанционного обучения MyDLS
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 

Similar to Основы MATLAB. Лекция 1. (20)

Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 
лекция 3. программирование циклов
лекция 3. программирование цикловлекция 3. программирование циклов
лекция 3. программирование циклов
 
Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003
Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003
Иванов Б.Н. Дискретная математика. Алгоритмы и программы. Москва. 2003
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
регрессионный анализ в Ptc math cad
регрессионный анализ в Ptc math cadрегрессионный анализ в Ptc math cad
регрессионный анализ в Ptc math cad
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программирования
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
3. Массивы в C#
3. Массивы в C#3. Массивы в C#
3. Массивы в C#
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
 
Простая линейная регрессия в системе R
Простая линейная регрессия в системе RПростая линейная регрессия в системе R
Простая линейная регрессия в системе R
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
Структурные формулы и функциональные схемы
Структурные формулы и функциональные схемыСтруктурные формулы и функциональные схемы
Структурные формулы и функциональные схемы
 
практика 1
практика 1практика 1
практика 1
 
Урок 3. Карринг и ленивые вычисления.
Урок 3. Карринг и ленивые вычисления.Урок 3. Карринг и ленивые вычисления.
Урок 3. Карринг и ленивые вычисления.
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 

More from Theoretical mechanics department

Космический мусор
Космический мусорКосмический мусор
Космический мусор
Theoretical mechanics department
 
Модификация механизма Йо-Йо
Модификация механизма Йо-ЙоМодификация механизма Йо-Йо
Модификация механизма Йо-Йо
Theoretical mechanics department
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
Theoretical mechanics department
 
Python: ввод и вывод
Python: ввод и выводPython: ввод и вывод
Python: ввод и вывод
Theoretical mechanics department
 
Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754
Theoretical mechanics department
 
Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust
Theoretical mechanics department
 
Docking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanismDocking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanism
Theoretical mechanics department
 
Алгоритмы и языки программирования
Алгоритмы и языки программированияАлгоритмы и языки программирования
Алгоритмы и языки программирования
Theoretical mechanics department
 
Deployers for nanosatellites
Deployers for nanosatellitesDeployers for nanosatellites
Deployers for nanosatellites
Theoretical mechanics department
 
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a TetherChaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Theoretical mechanics department
 
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Theoretical mechanics department
 
On problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingOn problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingTheoretical mechanics department
 
Методы решения нелинейных уравнений
Методы решения нелинейных уравненийМетоды решения нелинейных уравнений
Методы решения нелинейных уравнений
Theoretical mechanics department
 
Наноспутники формата кубсат
Наноспутники формата кубсатНаноспутники формата кубсат
Наноспутники формата кубсат
Theoretical mechanics department
 
Метод Кейна
Метод КейнаМетод Кейна
Метод Кейна
Theoretical mechanics department
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
Theoretical mechanics department
 
Метод Й. Виттенбурга (Сферические шарниры)
Метод Й. Виттенбурга (Сферические шарниры)Метод Й. Виттенбурга (Сферические шарниры)
Метод Й. Виттенбурга (Сферические шарниры)
Theoretical mechanics department
 

More from Theoretical mechanics department (17)

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

Основы MATLAB. Лекция 1.

  • 1. Основы MATLAB Лекция 1 Юдинцев В. В. Кафедра теоретической механики Самарский университет http://yudintsev.info 17 сентября 2016 г.
  • 2. Содержание 1 Введение 2 Основы работы в MATLAB 3 Операторы 4 Функции MATLAB 5 Функции пользователя 6 Ячейки 7 Структуры 8 Задачи Юдинцев В. В. Основы MATLAB 2
  • 4. Введение История создания MATLAB как язык программирования был разработан Кливом Моулером (Cleve Moler) в конце 1970-х годов для упрощения использования программных библиотек LINPACK и EISPACK без необходимости изучения Фортрана. В начале 80-х Джек Литл (Jack Little) Модернизировал эту систему для персональных компьютеров типа IBM PC, VAX и Macintosh. В 1984 основана компания The MathWorks inc. Последняя версия (09.2016): MATLAB R2016b. Юдинцев В. В. Основы MATLAB 4
  • 5. Введение Структура MATLAB Высокоуровневый интерпретируемый язык программирования, включающий основанные на матрицах структуры данных, широкий спектр функций, интегрированную среду разработки, объектно-ориентированные возможности и интерфейсы к программам, написанным на других языках программирования. Toolboxes – коллекции MATLAB-функций, для решения определённого класса задач (Optimization Toolbox, Partial Differential Equation Toolbox, Spline Toolbox, Statistic Toolbox). Simulink – приложение для анализа динамических систем. Юдинцев В. В. Основы MATLAB 5
  • 6. Введение Свободное ПО Близкое по функциональности свободное ПО: GNU Octave https://www.gnu.org/software/octave; FreeMat http://freemat.sourceforge.net; Scilab http://www.scilab.org; R (для статистических расчётов) https://www.r-project.org. Python с библиотеками numpy, scipy, matplotlib http://www.scipy.org; Sagemath http://www.sagemath.org. Юдинцев В. В. Основы MATLAB 6
  • 9. Основы работы в MATLAB Окно программы Command window – окно команд; Command history – окно истории истории команд; Current directory – окно, содержащие список файлов и папок текущего каталога; Editor – текстовый редактор. Workspace – окно со списком переменных текущей сессии. Юдинцев В. В. Основы MATLAB 9
  • 10.
  • 11. Основы работы в MATLAB MATLAB как калькулятор a=1.2 – присвоение некоторого значения переменной a 1 >> a =1.2 2 a = 1.2 b=sin(a)*sqrt(a+2) – вычисление выражения и вывод результата 1 >> b= sin ( a ) * s q r t ( a +2) 2 b = 3 1.6673 ; – точка с запятой в конце выражения подавляет вывод результата: 1 >> b= sin ( a ) * s q r t ( a +2) ; 2 >> Юдинцев В. В. Основы MATLAB 11
  • 12. Основы работы в MATLAB Базовые команды редактора (Command window) ↑ – возврат к предыдущей команде. help имя функции – справка по функции (или F1). cls – очистить окно команд (Command window). clear – удалить все переменные в текущей сессии. Ctrl C - (в окне команд) прерывание вычислений. Юдинцев В. В. Основы MATLAB 12
  • 13. Основы работы в MATLAB Синтаксис Имена переменных могут состоять из латинских буквам, цифр, знака подчёркивания: a, a1, x1, x_1. Имена переменных чувствительны к регистру: A и a – это разные переменные. При создании переменной может быть явно указан тип (по умолчанию double): 1 >> a= int16 (25) ; Юдинцев В. В. Основы MATLAB 13
  • 14. Основы работы в MATLAB Типы данных Тип Описание double вещественный, 64 бит single вещественный, 32 бит int8 знаковый целочисленный, 8 бит int16 знаковый целочисленный, 16 бит int32 знаковый целочисленный, 32 бит int64 знаковый целочисленный, 64 бит uint8 беззнаковый целочисленный, 8 бит uint16 беззнаковый целочисленный, 16 бит uint32 беззнаковый целочисленный, 32 бит uint64 беззнаковый целочисленный, 64 бит Юдинцев В. В. Основы MATLAB 14
  • 15. Основы работы в MATLAB Синтаксис Квадратные скобки используются для создания векторов и матриц: a=[1,2,3,4]. Круглые скобки используются для вызова функций и для группировки выражений: sin(1.2)+a*(c+1). Фигурные скобки для создания массивов ячеек: a={'Масса',10} Юдинцев В. В. Основы MATLAB 15
  • 16. Основы работы в MATLAB Создание последовательностей var=начальное значение:шаг:конечное значение по умолчанию шаг равен +1 1 >> c = 1:2:10 2 c = 3 1 3 5 7 9 Создание вектора-столбца 1 >> c = ( 1 : 2 : 1 0 ) ’ 2 c = 3 1 4 3 5 5 6 7 7 9 Юдинцев В. В. Основы MATLAB 16
  • 17. Основы работы в MATLAB Управление переменными whos показать переменные текущей сессии 1 >> whos 2 Name Size Bytes Class A t t r i b u t e s 3 4 a 1x1 8 double 5 ans 1x5 40 double 6 b 1x1 8 double clear удалить все переменные текущей сессии clear f1,f2 удалить переменные f1,f2 текущей сессии Юдинцев В. В. Основы MATLAB 17
  • 18. Основы работы в MATLAB Ведение “протокола” работы diary filename – ведет запись на диск всех команд в строках ввода и полученных результатов в виде текстового файла. diary off – приостанавливает запись в файл. diary on – вновь начинает запись в файл. Юдинцев В. В. Основы MATLAB 18
  • 19. Основы работы в MATLAB Сохранение сессии Сохранение значения всех переменных в файл *.mat save filename – запись в файл filename.mat текущей сессии (значение всех переменных). load filename – загрузка значений переменных из файла filename. Юдинцев В. В. Основы MATLAB 19
  • 20. Основы работы в MATLAB Ввод чисел a=1.25 a=9.3e10 9.3 · 1010 a=2.36e-5 2.36 · 10−5 1 >> a =1.25 2 a = 1.2500 1 >> a =9.3 e10 2 a = 9.3000e+10 1 >> a =2.36e−5 2 a = 2.3600e−05 Юдинцев В. В. Основы MATLAB 20
  • 21. Основы работы в MATLAB Формат отображения результата 1 >> format short ; 2 >> pi 3 ans= 4 3.1416 1 >> format long ; 2 >> pi 3 ans= 4 3.141592653589793 1 >> format short e ; 2 >> pi 3 ans= 4 3.1416e+00 1 >> format long e ; 2 >> pi 3 ans= 4 3.141592653589793e+00 Юдинцев В. В. Основы MATLAB 21
  • 22. Основы работы в MATLAB Константы pi – число π 1 >> pi 2 ans = 3.1416 realmin – минимальное положительное число 1 >> realmin 2 ans = 2.2251e−308 realmax – максимальное положительное число 1 >> realmax 2 ans = 1.7977e+308 Использование имен переменных, совпадающих со встроенными именами, не рекомендуется Юдинцев В. В. Основы MATLAB 22
  • 23. Основы работы в MATLAB Комплексные числа complex(1,3) – комплексное число 1 + 3i 1 >> a = complex ( 1 , 3 ) ; i или j – мнимая единица √ −1 1 >> b = 1+2 i ; 2 >> a * b 3 ans = 4 −5.0000 + 5.0000 i (1 + 3i) · (1 + 2i) = 1 + 2i + 3i − 6 = −5 + 5i Юдинцев В. В. Основы MATLAB 23
  • 24. Основы работы в MATLAB ans – результат вычисления предыдущего действия Встроенная переменная ans хранит результат последнего действия: 1 >> 2+2 2 ans = 3 4 Эту переменную можно использовать в выражениях: 1 >> ans *5 2 ans = 3 20 Юдинцев В. В. Основы MATLAB 24
  • 25. Основы работы в MATLAB Типы данных: векторы [1.2 1.5 1.9 0.5] или [1.2, 1.5, 1.9, 0.5] вектор-строка [ 1.2 1.5 1.9 0.5 ] [1.2; 1.5; 1.9; 0.5] вектор-столбец     1.2 1.5 1.9 0.5     Юдинцев В. В. Основы MATLAB 25
  • 26. Основы работы в MATLAB Матрицы и скаляры Каждая переменная в MATLAB – это матрица, поэтому переменная 1 >> a =1; это матрица размерности 1x1: 1 >> a ( 1 , 1 ) 2 ans = 3 1 Юдинцев В. В. Основы MATLAB 26
  • 27. Основы работы в MATLAB Типы данных: матрицы A=[1.2 1.5 1.9; 0.5 0.6 0.7; 0.1 1 3] A =   1.2 1.5 1.9 0.5 0.6 0.7 0.1 1 3   элементы вводятся построчно; элементы матрицы в строке можно разделять пробелами или запятыми; для разграничения строк используются точка с запятой; элемент матрицы может быть числом или выражением. Юдинцев В. В. Основы MATLAB 27
  • 29. Операторы Оператор () help ops вывести список всех операторов (i,j,k,...) – доступ к элементам матрицы. A(i,j) – i строка, j столбец. Юдинцев В. В. Основы MATLAB 29
  • 30. Операторы Оператор () A(i) – i элемент вектора (строки или столбца) или i элемент матрицы, при расположении элементов по столбцам. 1, 4, 7, 2, 5, 8, 3, 6, 9 Юдинцев В. В. Основы MATLAB 30
  • 31. Операторы Логическое индексирование Логическое индексирование позволяет выбрать из вектора или матрицы элементы, удовлетворяющие заданному условию. 1 >> a = sin ( 1 : 0 . 5 : 5 ) 2 a = 3 0.8415 0.9975 0.9093 0.5985 0.1411 −0.3508 −0.7568 −0.9775 −0.9589 1 >> ind =a<0 2 ind = 3 0 0 0 0 0 1 1 1 1 1 >> a ( ind ) 2 ans = 3 −0.3508 −0.7568 −0.9775 −0.9589 Юдинцев В. В. Основы MATLAB 31
  • 32. Операторы Скалярное произведение векторов ⃗a ·⃗b = |a||b| cos φ = axbx + ayby + azbz Вычисление скалярного произведения, используя встроенную функцию dot: 1 >> a =[1 2 3 ] ; 2 >> b=[4 5 6 ] ; 3 >> dot ( a , b ) 4 ans = 5 32 Юдинцев В. В. Основы MATLAB 32
  • 33. Операторы Скалярное произведение векторов ⃗a ·⃗b = |a||b| cos φ = axbx + ayby + azbz Вычисление скалярного произведения, используя оператор матричное умножение: 1 >> a *b ’ 2 ans = 3 32 Юдинцев В. В. Основы MATLAB 33
  • 34. Операторы Матричное умножение A*B умножение чисел или матриц (матричное умножение) 1 >> a = [1 2 3 2 4 5 6 ] ; 3 >> b = [1 2 4 3 4 5 5 6 ] ; 6 >> a * b 7 ans = 8 22 28 9 49 64 Юдинцев В. В. Основы MATLAB 34
  • 35. Операторы Поэлементное умножение C=A.*B поэлементное умножение матриц Cij = AijBij 1 >> a = [1 2; 2 3 4 ] ; 3 >> b = [4 7; 4 1 3 ] ; 5 >> a . * b 6 ans = 7 4 14 8 3 12 Юдинцев В. В. Основы MATLAB 35
  • 36. Операторы Возведение в степень Возведение в степень матрицы или числа 1 >> a =[1 2 2 3 4 ] ; 3 >> a^2 4 ans = 5 7 10 6 15 22 a2 = a · a = ( 1 2 3 4 ) · ( 1 2 3 4 ) = ( 7 10 15 22 ) Юдинцев В. В. Основы MATLAB 36
  • 37. Операторы Возведение в степень Возведение в степень всех элементов матрицы 1 >> a =[1 2 2 3 4 ] ; 3 >> a .^2 4 ans = 5 1 4 6 9 16 Юдинцев В. В. Основы MATLAB 37
  • 38. Операторы Операторы A' – транспонирование матрицы: 1 >> A=[1.2 0 . 3 ; 2 0.5 2 . 1 ] ; 3 >> A ’ 4 ans = 5 1.2000 0.5000 6 0.3000 2.1000 C=A/B – деление C = AB−1 C=A./B – поэлементное деление Ci = Ai/Bi Юдинцев В. В. Основы MATLAB 38
  • 39. Операторы Решение системы линейных уравнений Деление AB выполняет операцию C = A−1 B – решение СЛУ с матрицей коэффициентов A и матрицей правой части B: { 1.2x1 + 0.3x2 = 1; 0.5x1 + 2.1x2 = 2. 1 >> A=[1.2 0 . 3 ; 0 . 5 2 . 1 ] ; 2 >> B = [ 1 ; 2 ] ; 3 >> AB 4 ans = 5 0.6329 6 0.8017 Юдинцев В. В. Основы MATLAB 39
  • 40. Операторы Логические операторы < > = >= <= ~= Результатом операции над матрицей или вектором является логический вектор (матрица): 1 >> A = [ 1 , 2 , 3 , 4 , 5 , 6 ] ; 2 >> A<5 3 ans= 4 [1 ,1 ,1 ,1 ,0 ,0] 5 >> A==3 6 ans= 7 [0 ,0 ,1 ,0 ,0 ,0] 8 >> A~=5 9 ans= 10 [1 ,1 ,1 ,1 ,0 ,1] 11 Юдинцев В. В. Основы MATLAB 40
  • 41. Операторы Оператор : Для создания списков с равноотстоящими значения используется оператор : n1:s:n2 n1, n1 + s, n1 + 2s, . . . , nk, nk ≤ n2 Оператор : может использоваться для доступа к элементам матрицы и вектора A=1:10 – 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 A(1:2:10) – нечетные элементы вектора: [1,3,5,7,9] Юдинцев В. В. Основы MATLAB 41
  • 42. Операторы Оператор : Для прямоугольной матрицы A: A(:,k) – k-ый столбец матрицы А A(k,:) – k-ая строка матрицы А A(:,[2,4,5]) – второй, четвертый и пятый столбец матрицы А 1 >> a = magic ( 4 ) 2 a = 3 16 2 3 13 4 5 11 10 8 5 9 7 6 12 6 4 14 15 1 7 >> a ( [ 1 3 ] , : ) 8 ans = 9 16 2 3 13 10 9 7 6 12 Юдинцев В. В. Основы MATLAB 42
  • 43. Операторы Блоки матриц A(1:2,3:4) – блок матрицы А, лежащий на пересечении строк 1 и 2, и столбцов 3 и 4. 1 >> a = magic ( 4 ) 2 a = 3 16 2 3 13 4 5 11 10 8 5 9 7 6 12 6 4 14 15 1 7 >> a ( [ 1 2 ] , [ 3 4 ] ) 8 ans = 9 3 13 10 10 8 Юдинцев В. В. Основы MATLAB 43
  • 44. Операторы Удаление строк и столбцов из матрицы A(3,:)=[] – удалить третью строку из матрицы A 1 >> a = magic ( 4 ) 2 a = 3 16 2 3 13 4 5 11 10 8 5 9 7 6 12 6 4 14 15 1 7 >> a ( 3 , : ) = [ ] 8 a = 9 16 2 3 13 10 5 11 10 8 11 4 14 15 1 Юдинцев В. В. Основы MATLAB 44
  • 46. Функции MATLAB Математические функции sin, cos, tan, cot, acos, asin, ... – тригонометрические log, log10, log2, exp, sqrt, nthroot(x,n), ... sign(a) – знак числа a: -1, 0, +1. Юдинцев В. В. Основы MATLAB 46
  • 47. Функции MATLAB Функции округления К ближайшему к нулю целому: fix(1.8)=1 но fix(-1.8)=-1 К меньшему целому: floor(-1.9)=-2 но floor(1.9)=1 К большему целому: ceil(1.3)=2 К ближайшему целому: round(1.4)=1, round(-1.5)=-2 Юдинцев В. В. Основы MATLAB 47
  • 48. Функции MATLAB Функции комплексных чисел abs(z) – модуль. angle(z) – аргумент. conj(z) – комплексно-сопряженное число. imag(z) – мнимая часть. real(z) – вещественная часть. isreal(z) – 1, если z – вещественное число, 0 – мнимое. Юдинцев В. В. Основы MATLAB 48
  • 49. Функции MATLAB Специальные матрицы eye(n), eye(n,m) – единичные матрицы n × n. 1 >> eye ( 3 , 4 ) 2 ans = 3 1 0 0 0 4 0 1 0 0 5 0 0 1 0 rand(n), rand(n,m) – матрица псевдослучайных чисел ones(n,m) – матрица n × m, заполненная единицами zeros(n,m) – матрица n × m, заполненная нулями Юдинцев В. В. Основы MATLAB 49
  • 50. Функции MATLAB Специальные матрицы magic(n) – квадратная матрица n × n,с одинаковыми суммами элементов по строкам и столбцам и диагоналям. 1 >> magic ( 3 ) 2 ans = 3 8 1 6 4 3 5 7 5 4 9 2 Юдинцев В. В. Основы MATLAB 50
  • 51. Функции MATLAB Функции над матрицами diag(A), diag(A,k) – строка, содержащая диагональные элементы матрицы A, если A - матрица (k=0 для главной диагонали). diag(V) – диагональная матрица с элементами вектора V на диагонали, если V - вектор. tril(A), tril(A,k) – нижняя треугольная матрица, построенная по матрице A. triu(A), triu(A,k) – верхняя треугольная матрица, построенная по матрице A. Юдинцев В. В. Основы MATLAB 51
  • 52. Функции MATLAB Функции над матрицами Параметр k в функциях diag(A,k), tril(A,k), triu(A,k) Юдинцев В. В. Основы MATLAB 52
  • 53. Функции MATLAB Функции над векторами cross(a,b) – векторное произведение; dot(a,b) – скалярное произведение; sum(a) – сумма элементов вектора; sort(a) – сортировка вектора; если a – матрица, то производится сортировка элементов в столбцах. Другой вариант вызова [res,i]=sort(a). Переменная i содержит индексы элементов исходного вектора a, расположенные по порядку сортировки. Юдинцев В. В. Основы MATLAB 53
  • 54. Функции MATLAB Сумма элементов вектора или матрицы sum(a) Сумма элементов вектора: 1 >> a =[1 2 3 4 ] ; 2 >> sum ( a ) 3 ans= 4 10 5 Сумма элементов матрицы: 1 >> a =[1 2; 2 3 4 ] ; 3 >> sum ( a ) 4 ans= 5 4 6 6 Юдинцев В. В. Основы MATLAB 54
  • 55. Функции MATLAB Сумма элементов матрицы Сумма элементов матрицы по заданному измерению: 1 >> a =[1 2; 2 3 4 ] ; 3 >> sum ( a , 2 ) 4 ans = 5 3 6 7 7 Юдинцев В. В. Основы MATLAB 55
  • 56. Функции MATLAB Сортировка sort(a) – сортировка вектора или матрицы. Если a – матрица, то производится сортировка элементов в столбцах (по первому измерению): 1 >> a = magic ( 3 ) 2 a = 3 8 1 6 4 3 5 7 5 4 9 2 6 >> s o r t ( a ) 7 ans = 8 3 1 2 9 4 5 6 10 8 9 7 11 Юдинцев В. В. Основы MATLAB 56
  • 57. Функции MATLAB Сортировка Вторым аргументом функции sort может быть номер измерения, по которому должна выполняться сортировка: 1 >> a = magic ( 3 ) 2 a = 3 8 1 6 4 3 5 7 5 4 9 2 6 >> s o r t ( a , 2 ) 7 ans = 8 1 6 8 9 3 5 7 10 2 4 9 11 Юдинцев В. В. Основы MATLAB 57
  • 58. Функции MATLAB Сортировка [res,i]=sort(a). i содержит индексы элементов исходного вектора a, расположенные по порядку сортировки. 1 >> a = magic ( 3 ) 2 a = 3 8 1 6 4 3 5 7 5 4 9 2 6 >> [ res , i ] = s o r t ( a ) 7 res = 8 3 1 2 9 4 5 6 10 8 9 7 11 i = 12 2 1 3 13 3 2 1 14 1 3 2 Юдинцев В. В. Основы MATLAB 58
  • 59. Функции MATLAB Битовые функции bitand(a,b) – поразрядное И 1 >> bitand ( 5 , 1 ) 2 ans = 3 1 bitor(a,b) – поразрядное ИЛИ 1 >> b i t o r ( 4 , 2 ) 2 ans = 3 6 bitset(a,bit,v) – установка бита в позиции bit числа a; v = 1 или 0 1 >> b i t s e t ( 5 , 3 , 0 ) 2 ans = 3 1 Юдинцев В. В. Основы MATLAB 59
  • 60. Функции MATLAB Преобразование числа к другому основанию dec2bin(a) – строка с двоичным представлением положительного числа a 1 >> dec2bin ( 5 ) 2 ans = 3 101 4 dec2hex(a) – строка с шестнадцатеричным представлением положительного числа a 1 >> dec2hex (255) 2 ans = 3 FF 4 Юдинцев В. В. Основы MATLAB 60
  • 61. Функции MATLAB Преобразование числа к другому основанию bin2dec(a) – преобразование строки с двоичным представлением числа к десятичной системе a 1 >> bin2dec ( ’ 111 ’ ) 2 ans = 3 7 4 hex2dec(a) – преобразование строки с шестнадцатеричным представлением числа к десятичной системе a 1 >> hex2dec ( ’ F1 ’ ) 2 ans = 3 241 4 Юдинцев В. В. Основы MATLAB 61
  • 62. Функции MATLAB Работа с множествами intersect(A, B) – пересечение векторов А и В как множеств: 1 >> a = [1 2 3 7 8 7 3 1 ] ; 2 >> b = [7 1 5 6 ] ; 3 >> i n t e r s e c t ( a , b ) 4 ans = 5 1 7 ismember(A, S) – содержит ли А элементы из S: 1 >> a = [1 2 3 7 8 7 3 1 ] ; 2 >> b = [7 1 5 6 ] ; 3 >> ismember ( a , b ) 4 ans = 5 1 0 0 1 0 1 0 1 Юдинцев В. В. Основы MATLAB 62
  • 63. Функции MATLAB Работа с множествами setdiff(A, B) – элементы, входящие в А, но отсутствующие в В (A-B): 1 >> a = [1 2 3 7 8 7 3 1 ] ; 2 >> b = [7 1 5 6 ] ; 3 >> s e t d i f f ( a , b ) 4 ans = 5 2 3 8 setxor(A, B) – элементы, не входящие в результат пересечения множеств А и В: 1 >> a = [1 2 3 7 8 7 3 1 ] ; 2 >> b = [7 1 5 6 ] ; 3 >> s e t d i f f ( a , b ) 4 ans = 5 2 3 5 6 8 Юдинцев В. В. Основы MATLAB 63
  • 64. Функции MATLAB Работа с множествами union(A, B) – объединение множеств: 1 >> a = [1 2 3 7 8 7 3 1 ] ; 2 >> b = [7 1 5 6 ] ; 3 >> union ( a , b ) 4 ans = 5 1 2 3 5 6 7 8 unique(A) – элементы вектора А без повторений: 1 >> a = [1 2 3 7 8 7 3 1 ] ; 2 >> unique ( a ) 3 ans = 4 1 2 3 7 8 Юдинцев В. В. Основы MATLAB 64
  • 66. Функции пользователя Способы задания функции inline функции; анонимные функции; файл-функции . Юдинцев В. В. Основы MATLAB 66
  • 67. Функции пользователя inline-функция 1 >> f1 = i n l i n e ( ’ x1^2+x2^2 ’ , ’ x1 ’ , ’ x2 ’ ) ; 2 >> f1 ( 4 , 2 ) 3 ans = 4 20 Переменные из рабочей области недоступны. Юдинцев В. В. Основы MATLAB 67
  • 68. Функции пользователя Анонимная функция 1 >> f = @ ( x1 , x2 ) x1^2+x2 ^2; 2 >> f ( 4 , 2 ) 3 ans = 4 20 Переменные из рабочей области доступны, но рассматриваются как константы: 1 >> a =2; 2 >> f = @ ( x1 ) a * x1 ; 3 >> f ( 1 ) 4 ans = 5 2 6 >> a =1; f ( 1 ) 7 ans = 8 2 Юдинцев В. В. Основы MATLAB 68
  • 70. Ячейки Ячейки Массивы ячеек (cells) могут хранить данные различных типов: числа, строки, структуры, массивы ячеек. 1 >> data {1} = ’Текст ’ 2 data = 3 ’Текст ’ 4 >> data {2} = 1 5 data = 6 ’Текст ’ [ 1 ] 7 >> data {5} = [1 2 3] 8 data = 9 ’Текст ’ [ 1 ] [ ] [ ] [1 x3 double ] Юдинцев В. В. Основы MATLAB 70
  • 71. Ячейки Доступ к элементам массива ячеек 1 >> data {1} 2 ans = 3 Текст 4 5 >> data {2} 6 ans = 7 1 8 9 >> data {5} 10 ans = 11 1 2 3 Юдинцев В. В. Основы MATLAB 71
  • 72. Ячейки Функция cell Формирование пустой матрицы ячеек 1 >> a = c e l l ( 3 , 4 ) 2 a = 3 [ ] [ ] [ ] [ ] 4 [ ] [ ] [ ] [ ] 5 [ ] [ ] [ ] [ ] Присвоение значения элементу новой матрицы 1 >> a {2 ,3} = ’элемент 2 ,3 ’ 2 a = 3 [ ] [ ] [ ] [ ] 4 [ ] [ ] ’элемент 2 ,3 ’ [ ] 5 [ ] [ ] [ ] [ ] Юдинцев В. В. Основы MATLAB 72
  • 73. Ячейки Функции для работы с ячейками Преобразование числовой матрицы в матрицу ячеек 1 >> a=magic ( 5 ) 2 a = 3 17 24 1 8 15 4 23 5 7 14 16 5 4 6 13 20 22 6 10 12 19 21 3 7 11 18 25 2 9 1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] ) 2 b = 3 [2 x2 double ] [2 x1 double ] [2 x2 double ] 4 [3 x2 double ] [3 x1 double ] [3 x2 double ] Юдинцев В. В. Основы MATLAB 73
  • 74. Ячейки Функции для работы с ячейками Преобразование числовой матрицы в матрицу ячеек 1 >> a=magic ( 5 ) 2 a = 3 17 24 1 8 15 4 23 5 7 14 16 5 4 6 13 20 22 6 10 12 19 21 3 7 11 18 25 2 9 1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] ) 2 b = 3 [2 x2 double ] [2 x1 double ] [2 x2 double ] 4 [3 x2 double ] [3 x1 double ] [3 x2 double ] Юдинцев В. В. Основы MATLAB 73
  • 75. Ячейки Преобразование матрицы ячеек в числовую матрицу Функция mat2cell: 1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] ) 2 b = 3 [2 x2 double ] [2 x1 double ] [2 x2 double ] 4 [3 x2 double ] [3 x1 double ] [3 x2 double ] 5 >> cell2mat ( b ) 6 ans = 7 17 24 1 8 15 8 23 5 7 14 16 9 4 6 13 20 22 10 10 12 19 21 3 11 11 18 25 2 9 Юдинцев В. В. Основы MATLAB 74
  • 77. Структуры Структура Структура – это элемент данных, который может содержать разнотипные поля: имя = struct('поле1',значение,'поле2',значение,...) Структура, описывающая параллелепипед: 1 box= s t r u c t ( ’ height ’ , 100 , ’ width ’ , 10 , ’ depth ’ , 5) 2 box= 3 height : 100 4 width : 10 5 depth : 5 Юдинцев В. В. Основы MATLAB 76
  • 78. Структуры Доступ к полям структуры Считывание значения поля 1 >> box . height 2 ans = 3 100 Имя поля может быть задано строкой 1 >> box . ( ’ height ’ ) 2 ans = 3 100 Юдинцев В. В. Основы MATLAB 77
  • 79. Структуры Список полей структуры 1 >> names = fieldnames ( box ) 2 names = 3 ’ height ’ 4 ’ width ’ 5 ’ depth ’ 6 ’ mass ’ Юдинцев В. В. Основы MATLAB 78
  • 80. Структуры Изменение значения поля 1 >> box . height = 20 2 box = 3 height : 20 4 width : 10 5 depth : 5 Юдинцев В. В. Основы MATLAB 79
  • 81. Структуры Добавление поля Для добавления поля к структуре необходимо присвоить значение новому полю, как существующему: 1 >> box . mass=5 2 box = 3 height : 20 4 width : 10 5 depth : 5 6 mass : 5 Юдинцев В. В. Основы MATLAB 80
  • 82. Структуры Создание структуры Cоздание новой структуры без использования функции struct: 1 >> sphere2 . radius =2 2 sphere2 = 3 radius : 2 Юдинцев В. В. Основы MATLAB 81
  • 84. Задачи Задание 1 Напишите кратчайшее однострочное выражение для построения квадратной матрицы вида     1 2 3 4 . . . n 1 2 3 4 . . . n . . . . . . . . . . . . . . . n 1 2 3 4 . . . n     Юдинцев В. В. Основы MATLAB 83
  • 85. Задачи Задание 2 Напишите выражение, определяющее индекс элемента вектора с наименьшим отклонением от среднего значения элементов вектора P i : min |Pi − m(P)| Например, для P = [8, 1, 2, 2, 0, 3] ответом будет 6, т.е. шестой элемент массива находится ближе всего к среднему значению элементов массива. Среднее значение определяется при помощи функции mean 1 >> P=[8 1 2 2 0 3 ] ; 2 >> mean ( P ) 3 ans = 2.6667 4 >> Юдинцев В. В. Основы MATLAB 84
  • 86. Задачи Задание 3 Напишите код, который находит матрицу B, отличающуюся от матрицы A перестановкой столбцов по возрастанию суммы элементов столбца. A =   2 3 5 4 1 9 3 0 2   ⇒ B =   5 2 3 9 4 1 2 3 0   5 + 9 + 2 > 2 + 4 + 3 > 3 + 1 + 0 Юдинцев В. В. Основы MATLAB 85
  • 87. Задачи Задание 4 В матрице A записаны координат точек на плоскости: в первом столбце – координаты x, во втором столбце – y: A =       x1 y1 x2 y2 x3 y3 . . . . . . xn yn       Постройте матрицу B, которая составлена из строк матрицы A так, что с увеличением номера строки с координатами точки растёт расстояние от этой точки до начала координат. Юдинцев В. В. Основы MATLAB 86
  • 88. Задачи Задание 5 1 2 4 3 Структура графа описана при помощи списка смежности, записанного в виде матрицы: L =     1 2 2 4 . . . . . . 3 4     , В каждой строке матрицы L записываются индексы вершин, связанные дугой. Постройте матрицу смежности графа S, элемент которой – sij отличен от нуля, только если вершины i и j смежные, т. е. соединены дугой. Остальные элементы матрицы S равны нулю. Юдинцев В. В. Основы MATLAB 87