Слайд 2Управленческая пирамида предприятия
Стратегический уровень – аналитические и прогнозирующие системы (OLAP)
Функциональный
уровень – MES-, ERP-системы
Операционный уровень – АСУ ТП
Слайд 3АСУ ТП
1 – ввод/вывод
2 – управление вводом/выводом
3 – SCADA-системы
Слайд 4SCADA-системы
Решаемые задачи:
обмен данными с УСО;
обработка информации в реальном времени;
логическое управление;
отображение
информации;
ведение архивов;
сигнализация;
подготовка и генерирование отчетов и тп.
Слайд 7ПЕРЕМЕННЫЕ В MATLAB
переменные не требуют объявления
любая операция присваивания
создает переменную
имя переменной начинается с латинской буквы, далее буквы,
цифры подчеркивания
имя переменной не должно превышать 31 символ
различается символы верхнего и нижнего регистра
Слайд 11БАЗОВЫЕ ТИПЫ ДАННЫХ
Разряженные матрицы
A =
7
0 0 0 0
0 8 0 0 0
10 0 0 0 0 0 3 0 0 0
7 0 0 0 0 0 2 0 0 0
4 0 0 0 0 0 3 0 0 0
8 0 0 0 0 0 4 0 0 0
1 0 0 0 0 0 5 0 0 0
1 0 0 0 0 0 6 0 0 0
1 0 0 0 0 0 4 0 0 0
2 0 0 0 0 0 4 0 0 0
3 0 0 0 0 0 5 0 0 0
Объем в памяти 800 байт
8 байт на каждый элемент
B=sparse(A)
B =
(1,1) 7
(2,1) 10
(3,1) 7
(4,1) 4
(5,1) 8
(6,1) 1
(7,1) 1
(8,1) 1
(9,1) 2
(10,1) 3
(1,7) 8
(2,7) 3
(3,7) 2
(4,7) 3
(5,7) 4
(6,7) 5
(7,7) 6
(8,7) 4
(9,7) 4
(10,7) 5
Объем в памяти 568 байт !
Слайд 15Обращение к элементам матрицы
c =
1
9
17
25
33
41
49
d =
7
13
19
25
31
37
43
Слайд 16Обращение к элементам матрицы
c =
1
0 0 0 0
0 0
0 9 0 0 0 0 0
0 0 17 0 0 0 0
0 0 0 25 0 0 0
0 0 0 0 33 0 0
0 0 0 0 0 41 0
0 0 0 0 0 0 49
Слайд 17ПРИОРИТЕТ ВЫПОЛНЕНИЯ АРИФМЕТИЧЕСКИХ ОПЕРАТОРОВ
Слайд 19АРИФМЕТИЧЕСКИ ОПЕРАТОРЫ
A = [1 2; 3 4];
B = 10;
C =
A-B
C =
-9 -8
-7 -6
A
= [1 2; 3 4]
B = [4 3; 2 1]
C = A-B
C =
-3 -1
1 3
Слайд 20АРИФМЕТИЧЕСКИ ОПЕРАТОРЫ
A = [3 9 5];
B = [2 1
5];
b = sqrt (A(2)) + 2*B (1)
C = (A./B). ^
2
C = A./B. ^ 2
C = 0.7500 9.0000 0.2000
C = 2.2500 81.0000 1.0000
b = 7
Слайд 21АРИФМЕТИЧЕСКИ ОПЕРАТОРЫ
A = [1 2; 3 4];
B= A^2;
D=
A.^2;
B= [7 10;15 22];
D= [1 4;9 16];
Слайд 22АРИФМЕТИЧЕСКИ ОПЕРАТОРЫ
A = [1 2; 3 4];
B= sum(A);
C=
sum(sum(A));
B =
4 6
C =
10
Слайд 23АРИФМЕТИЧЕСКИ ОПЕРАТОРЫ
A = [1 2; 3 4];
B = 3;
C= A
+ B;
C =
4 5
6 7
C= A * B;
C= A / B;
C= A .* B;
C= A ./ B;
C =
3 6
9 12
C =
3 6
9 12
C =
0.3333 0.6667
1.0000 1.3333
C =
0.3333 0.6667
1.0000 1.3333
Слайд 24Поиск максимального значения
M = max(A)
M = max(A,[],dim)
M = max(A,[],nanflag)
M =
max(A,[],dim,nanflag)
[M,I] = max(___)
M = max(A,[],'all')
M = max(A,[],vecdim)
M = max(A,[],'all',nanflag)
M =
max(A,[],vecdim,nanflag)
[M,I] = max(A,[],___,'linear')
C = max(A,B)
C = max(A,B,nanflag)
Слайд 25Поиск максимального значения
A = [1 5 3 4; 5 6
7 8; 9 4 11 2]
B = max(A);
9
6 11 8
1 5 3 4
5 6 7 8
9 4 11 2
B = max(A,[],1);
9 6 11 8
B = max(A,[],2);
5
8
11
Слайд 26Поиск максимального значения
A = [1 5 3 4; 5 6
7 8; 9 4 11 2]
B = max(max(A)); % так
себе
11
1 5 3 4
5 6 7 8
9 4 11 2
Максимальное значение среди всех элементов матрицы?
B = max(A(:)); % норм
11
A(:)’
1 5 9 5 6 4 3 7 11 4 8 2
Слайд 27Поиск максимального значения
A = [1 5 3 4; 5 6
7 8; 9 4 11 2]
1
5 3 4
5 6 7 8
9 4 11 2
Координаты максимального значения?
[M,I] = max(A)
M =
9 6 11 8
I =
3 2 3 2
Слайд 28Статистические функции
corrcoef Correlation coefficients
cov Covariance matrix
max Largest elements in array
cummax Cumulative maximum
mean Average or mean
value of array
median Median value of array
min Smallest elements in array
cummin Cumulative minimum
mode Most
frequent values in array
std Standard deviation
var Variance
Слайд 29Построение графиков
plot(y)
plot(x, y)
plot(x, y, s)
plot(x1, y1, s1, x2, y2, s2,
...)
Маркер Тип линии
- непрерывная
-- штриховая
: пунктирная
-. штрих-пунктирная
Маркер Цвет линии
c голубой
m фиолетовый
y жёлтый
r красный
g зелёный
b синий
w белый
k чёрный
Маркер Тип точки
. точка
+ плюс
* звёздочка
o кружок
x крестик
Слайд 30Построение графиков
clc, clear, close all
x = linspace(-2*pi,2*pi,500);
y = abs(sin(x));
plot(y,'LineWidth',2)
grid on
Слайд 31Построение графиков
clc, clear, close all
x = linspace(-2*pi,2*pi,50);
y = abs(sin(x));
plot(y,'--o','LineWidth',2)
grid on
Слайд 32Построение графиков
clc, clear, close all
x = linspace(-2*pi,2*pi,500);
y = abs(sin(x));
plot(x,y,'LineWidth',2)
grid on
Слайд 33Построение графиков
clc, clear, close all
x1 = linspace(-pi,pi,500);
x2 = linspace(-2*pi,2*pi,500);
y1 =
abs(sin(x1)); y2 = abs(cos(x2));
plot(x1,y1,x2,y2,'.','LineWidth',2)
grid on
Ось X индивидуальная
Слайд 34Построение графиков
clc, clear, close all
x = linspace(-pi,pi,500);
y1 = abs(sin(x));
y2 =
abs(cos(x));
y = [y1;y2];
plot(x,y,'LineWidth',2)
grid on
Ось X общая
Слайд 35Построение графиков
clc, clear, close all
x1 = linspace(-pi,pi,500);
x2 = linspace(-2*pi,2*pi,500);
y1 =
abs(sin(x1));
y2 = abs(cos(x2));
plot(x1,y1,x2,y2,'.','LineWidth',2)
legend('|sin (x)|','|cos (x)|')
xlabel('x')
ylabel('y')
title(‘Графики')
grid on
Слайд 37Построение графиков
clc, clear, close all
t = linspace(0,10*pi,500);
plot3(sin(t),cos(t),t)
grid on, axis square
xlabel('sin(t)'),
ylabel('cos(t)'), zlabel('t')
Слайд 38Построение графиков
Функция [X, Y] = meshgrid(x, y) задает сетку на
плоскости x-y в виде двумерных массивов X, Y, которые определяются
одномерными массивами x и y.
>> x=0:0.2:1;
>> y=-1:0.2:0;
>> [X, Y] = meshgrid(x,y)
X =
0 0.2 0.4 0.6 0.8 1
0 0.2 0.4 0.6 0.8 1
0 0.2 0.4 0.6 0.8 1
0 0.2 0.4 0.6 0.8 1
0 0.2 0.4 0.6 0.8 1
0 0.2 0.4 0.6 0.8 1
Y =
-1 -1 -1 -1 -1 -1
-0.8 -0.8 -0.8 -0.8 -0.8 -0.8
-0.6 -0.6 -0.6 -0.6 -0.6 -0.6
-0.4 -0.4 -0.4 -0.4 -0.4 -0.4
-0.2 -0.2 -0.2 -0.2 -0.2 -0.2
0 0 0 0 0 0
Слайд 39Построение графиков
clc, clear, close all
x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] =
meshgrid(x,y);
Z = sin(X) + cos(Y);
surf(Z)
title('surf')
figure
surface(Z)
title('surface')
Слайд 41Построение графиков
clc, clear, close all
phi = linspace(0,3*pi,100);
ro = linspace(0,2,100);
polar(phi,ro)
x
= ro.*sin(phi);
y = ro.*cos(phi);
figure
plot(x,y,'LineWidth',2)
axis square
grid on
Слайд 43Построение графиков
%%сфера
phi = linspace(0, 2*pi, 50);
theta = linspace(0, pi, 25);
[Phi,
Theta] = meshgrid( phi, theta );
[X_s,Y_s,Z_s] = sph2cart(Theta,Phi,1);
surf(X_s,Y_s,Z_s)
axis equal
Слайд 44ОПЕРАТОРЫ ОТНОШЕНИЯ
= Больше или равно
== Равно тождественно
~ = Не
равно
A = [2 7 6; 9 0 -1; 3 0.5 6];
B = [8 0.2 0; -3 2 5; 4 -1 7];
А< B
ans =
Слайд 45ОПЕРАТОРЫ ОТНОШЕНИЯ
A = 1;
B = [8 0.2 0; -3 2
5; 4 -1 7];
A< B
ans =
1 0 0
0 1 1
1 0 1
Слайд 46ЛОГИЧЕСКИЕ ОПЕРАТОРЫ
u & v
ans =
u = [1 0 2
3 0 5];
v = [5 6 1 0 0 7];
and(u,v)
ans =
Слайд 47УПРАВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЬЮ ИСПОЛНЕНИЯ ОПЕРАТОРОВ
Четыре основных оператора :
оператор условия if (в
сочетании с else и elseif);
оператор переключения switch (в сочетании
с case и otherwise);
оператор условия while;
оператор цикла for.
Слайд 48ОПЕРАТОР УСЛОВИЯ
if
end
if
else
end
if
< инструкции>
elseif < логическое_выражение>
else
end
if
<логическое_выражение>
<инструкции>
elseif <логическое_выражение>
<инструкции>
elseif <логическое_выражение>
<инструкции>
else
<инструкции>
end
Слайд 49ОПЕРАТОР УСЛОВИЯ
if expression, statements, end evaluates an expression, and executes
a group of statements when the expression is true. An
expression is true when its result is nonempty and contains only nonzero elements (logical or real numeric). Otherwise, the expression is false.
Выражение истинно, если его результат непуст и содержит только ненулевые элементы (логические или вещественные числовые). В противном случае выражение является ложным.
Слайд 50ОПЕРАТОР УСЛОВИЯ
Нужен ли условный оператор при решении квадратного уравнения в
MATLAB?
a = 2; b = 1; c = 3;
D=b^2-4*a*c;
if D>0
x(1)
= (-b+sqrt(D))/2/a;
x(2) = (-b-sqrt(D))/2/a;
elseif D==0
x = -b/2/a;
Else
x(1) = (-b+i*sqrt(abs(D)))/2/a;
x(2) = (-b-i*sqrt(abs(D)))/2/a;
End
disp('Корни')
disp(x)
НЕ НУЖЕН
Слайд 51ОПЕРАТОР УСЛОВИЯ
Нужен ли условный оператор при решении квадратного уравнения в
MATLAB?
a = 2; b = 1; c = 3;
D=b^2-4*a*c;
x(1) =
(-b+sqrt(D))/2/a;
x(2) = (-b-sqrt(D))/2/a;
x =
-0.2500 + 1.1990i -0.2500 - 1.1990i
a = 1; b = 2; c = 1;
D=b^2-4*a*c;
x(1) = (-b+sqrt(D))/2/a;
x(2) = (-b-sqrt(D))/2/a;
x =
-1 -1
Слайд 52ОПЕРАТОР УСЛОВИЯ
Решение уравнений и систем уравнений
clc
clear all
syms x
Res = solve(x^2
+ 2*x + 2)
Res =
- 1 - i
-
1 + i
Слайд 53ОПЕРАТОР УСЛОВИЯ
A = 1;
if A == 1
disp('expression
is true');
else
disp('expression is false');
end
expression is true
A = [1
2 3 4];
if A == 1
disp('expression is true');
else
disp('expression is false');
end
expression is false
Слайд 54ОПЕРАТОР УСЛОВИЯ
A = [1 2 3 4];
B = [1 2
3 5];
if A == B
disp('expression is true');
else
disp('expression is false');
end
expression is false
Слайд 55ОПЕРАТОР ПЕРЕКЛЮЧЕНИЯ
Синтаксис:
switch
case
инструкции
case
инструкции
...
Otherwise
инструкции
end
key =
input('Введите 1,2,3? ', 's');
switch key
case '1'
disp('Вы выбрали 1');
case '2'
disp('Вы выбрали 2');
case '3'
disp('Вы выбрали 3');
otherwise
disp('Вы - странный');
end
Слайд 56ОПЕРАТОР ЦИКЛА С НЕОПРЕДЕЛЕННЫМ ЧИСЛОМ ОПЕРАЦИЙ
Синтаксис:
while
end
a=5; i=2;
while i
2;
i = i + 3;
end
disp(a)
Слайд 57ОПЕРАТОР ЦИКЛА С ОПРЕДЕЛЕННЫМ ЧИСЛОМ ОПЕРАЦИЙ
Синтаксис:
for =
::
end
x(1) = 1;
for i = 2:6
x(i) = 2*x(i-1);
end
for i = 1:m
for j = 1:n
A(i,j) = 1/(i + j - 1);
end
end
Слайд 58СКОРОСТЬ ВЫЧИСЛЕНИЯ MATLAB
dx = pi/30;
nx = 1 + 100*pi/dx;
for i
= 1:nx
x(i) = (i-1)*dx;
y(i) = sin(3*x(i));
end
Рассчитать значение функции
0.166 сек.
dx
= pi/30;
nx = 1 + 100*pi/dx;
x=zeros(1,nx);
y=zeros(1,nx);
for i = 1:nx
x(i) = (i-1)*dx;
y(i) = sin(3*x(i));
end
0.018 сек. (в 9 раз)
x = 0:pi/30:100 *pi;
y = sin(3*x);
0.0045 сек. (в 37 раз)
Слайд 59Типы m-файлов
М-сценарии
М-функции
Не использует входных и выходных аргументов
Использует входные и выходные
аргументы
Оперирует с данными из рабочей области
По умолчанию, внутренние переменные являются
локальными по отношению к функции
Предназначен для автоматизации последовательности шагов, которые нужно выполнять много раз
Предназначена для расширения возможностей языка MATLAB (библиотеки функций, пакеты прикладных программ)
Слайд 60Типы m-файлов
Требования к названию m-файлов:
имя файла начинается с
латинской буквы, далее буквы, цифры подчеркивания
имя файла не должно
превышать 31 символ
различается символы верхнего и нижнего регистра
Слайд 61Типы m-файлов. Структура m-функции
Структура m-функции:
строки определения функции;
первой строки комментария;
собственно комментария;
тела функции;
строчных комментариев.
Слайд 62Типы m-файлов. Пример
М-сценарий
A=10;
B=12;
C = (A+B)/2;
Разработать м-сценарий и м-функцию для вычисления
среднего из двух чисел
Слайд 63Типы m-файлов. Пример
М-функция
M-сценарий или командная строка
A=10;
B=12;
C = my_avg(A,B);
Содержимое файла my_avg.m
function
[ C ] = my_avg( x,y)
%% my_avg ср. знач. двух
чисел
[mx, nx] = size(x);
[my, ny] = size(y);
if (mx == my & nx == ny |
(mx == 1 & nx == 1)|(my == 1 & ny == 1))
C = (x+y)/2;
else
error('X и Y разной размерности');
end
end
Определение функции
Комментарий к функции для команд doc и help
Тело функции
Слайд 64Symbolic MathToolBox
Объявление символьных переменных
syms x y
Слайд 65Symbolic MathToolBox
Символьные выражения
syms A B t
F1 = A*t^2 +
B*t + A*B
F2 = (2*t+1)*(A*t-1)
F3 = F1+1.5
Слайд 66Symbolic MathToolBox
Алгебраические манипуляции
expand(S) Раскрывает скобки в выражении S
factor(S) Разлагает
на множители выражение S
simplify(S) Упрощает каждый элемент символьной матрицы
S
subs(S, oldvar, newvar) Заменяет в выражении S каждое вхождение
символической переменной oldvar новой
переменной newvar
Слайд 67Symbolic MathToolBox
Раскрытие скобок
syms s
A = s + 2;
B = s
+ 3;
C = A*B
C = expand(C)
Слайд 68Symbolic MathToolBox
Разложение на множители
syms s
F = s^2 + 4*s +
4
D = factor(F)
Слайд 69Symbolic MathToolBox
Подстановка переменной
syms s
F = s^2 + 4*s + 4
D
= subs(F, s, s+1)
D = expand(D)
Слайд 70Symbolic MathToolBox
Вычисление символьных значений
syms s
F = s^2 + 4*s +
4
D = subs(F, s, 1.2)
G = double(D)
Слайд 71Symbolic MathToolBox
Построить частотные характеристики передаточной функции
clc; clear all; close all
syms
p w real K real T real
W = K/(T*p +
1) % ПФ W=K/(Tp+1)
W = subs(W, K, 2) % W=2/(Tp+1)
W = subs(W, T, 4) % W=2/(4p+1)
H = subs(W, p, i*w) % W=2/(4jw+1)
x = -2:0.1:1; fr = 10.^x;
H = subs(H, w, fr); % АФХ
L = 20*log10(double(abs(H))); % ЛАЧХ
F = rad2deg(double(angle(H))); % ФЧХ
subplot(2,1,1)
semilogx(fr, L) % логарифмический масштаб X
title('magnitude');
xlabel('lg\omega'); ylabel('L(\omega)');
grid on
subplot(2,1,2)
semilogx(fr, F)
title('Phase');
xlabel('lg\omega'); ylabel('\phi (\omega)');
grid on
Слайд 73Контрольная точка 1
Состав теста:
1) Операции над матрицами в MATLAB, 4
шт (средня сложность);
2) цикл с определенным числом шагов, 2 шт
(средняя сложность);
3) цикл с не определенным числом операций, 2 средняя сложность).
Каждое задание – 12.5% рейтинга
Время выполнения теста – 30 минут.
Все задания открытые.