Professional Documents
Culture Documents
00 MATLAB SIMULINK Upatstvo Za Vezbi PDF
00 MATLAB SIMULINK Upatstvo Za Vezbi PDF
00 MATLAB SIMULINK Upatstvo Za Vezbi PDF
MATLAB/SIMULINK
УПАТСТВО ЗА ВЕЖБИ
Забелешка
Сл.1. Сл.2.
Промената на работниот директориум се врши со наредбата „cd“. Со следните приме-
ри е илустрирано користењето на оваа наредба.
СОДРЖИНА
ПРЕДГОВОР
6. СИСТЕМИ НА УПРАВУВАЊЕ
(CONTROL SYSTEM TOOLBOX) 169
6.1. Полиноми ........................................................................................... 169
6.1.1 Нули на полиномот .................................................................... 169
6.1.2 Пресметување на вредноста на полиномот ............................. 171
6.1.3 множење (конволуција) и делење (деконволуција) на
полиноми .................................................................................... 171
6.1.4 Развој на парцијални дропки ................................................... 172
6.2. Функции за определување на Лапласовата трансформација
и за дефинирање на LTI системи ................................................. 177
6.2.1 Функција laplace ……………………………………………. 177
6.2.2 Функција tf …………………………………………………… 178
6.2.3 Оператори „s‟ и „z‟ .................................................................... 179
6.2.4 Функција ‘ss’ …………………………………………………. 180
6.2.5 Функции pole и zero ………………………………………… 181
6.3. Одзиви на линеарен систем .......................................................... 182
6.3.1 Функција initial ……………………………………………… 182
6.3.2 Функција impulse ……………………………………………. 184
6.3.3 Функција step ………………………………………………… 188
6.3.4 Функција lsim ………………………………………………… 189
6.4. Фреквенциски карактеристики на LTI системи ...................... 194
6.4.1 Функција bode ………………………………………………. 194
6.4.1 Функција margin ……………………………………………. 197
6.4.1 Функција nichols ……………………………………………. 199
6.4.1 Функција nyquist ……………………………………………. 199
6.5. Геометриско место на корените – ГМК (Root Locus) ………… 201
6.6. Matlab Command List …………………………………………….. 203
1. ОСНОВИ НА МАТЛАБ
1.1. ВОВЕД
РБ Тип Примери
1. Цел број 1362, -217897
2. Реален број 1.234, -10.76
3. Комплексен број 3.21 - 4.3i ( i е имагинарна единица)
4. Inf Бесконечно, делење со нула
5. NaN Не е број , 0/0
Наредбата
е исто така корисна наредба ако не сакаме печатење на празни редови. На тој
начин повеќе информации можат да бидат испечатени.
>> 34*3
ans =
102
пример:
y=
2.5000
>> pi/6
ans =
0.5236
>> x = 9;format;
>> sqrt(x), exp(x), log(sqrt(x)),log10(x^2+6)
ans =
3
ans =
8.1031e+003
ans =
1.0986
ans =
1.9395
1. 3x , x 2 .
3
x2
2. , x6.
2
2 3
3. 7 x , x4. 4. 4 x , x 2 .
2
1 x 1
6. x 4 x , x 3 .
5. , x2.
x 1
7. 3x 4 x , x 2 . 8. 6 x (6 x ) , x 10 .
2 3 0 0
9. 5( x ) , x 3 .
3
1
10. , x4.
( x )3
11. 500 x
60
, x 1,01 . 12.
10.000
, x 1,075 .
x120
e 0.2696 x sin(2 y )
14. x 3, y 5, z
x y ln(x y )
e 0.5 x cos(2 y )
15. x 5.5, y 7.0, z ( x y ) 2
x 2 y 2 ln(x 2 y 2 )
1.5. ВЕКТОРИ
>> v = [1 3, sqrt(5)]
v=
1.0000 3.0000 2.2361
>> length(v)
ans =
3
>> v2 = [ 3+ 4 5]
v2 =
7 5
>> v3 = [ 3 +4 5]
v3 =
3 4 5
>> v + v3
ans =
4.0000 7.0000 7.2361
>> v4 = 3*v
v4 =
3.0000 9.0000 6.7082
MATLAB/SIMULINK – упатство за вежби 19
>> w = [1 2 3], z = [8 9]
>> cd = [ 2*z, -w]
>> sort(cd)
w=
1 2 3
z=
8 9
cd =
16 18 -1 -2 -3
ans =
-3 -2 -1 16 18
>> w = [ 2 4 9 16 25 ]
w=
2 4 9 16 25
>> sqrt(w)
ans =
1.4142 2.0000 3.0000 4.0000 5.0000
>> 1:4
>> 3:7
>> 1:-1
ans =
1 2 3 4
ans =
3 4 5 6 7
ans =
Empty matrix: 1-by-0
>> c2 = [3
4
5]
c2 =
3
4
5
>> c3 = 2*c - 3*c
c3 =
-7.0000
-6.0000
-10.5279
Вектор колони можат да се собират или одземаат ако имаат иста димен-
зија (ист број на елементи).
1.5.4. Транспонирање
>> w = [ 1 -2 3 ], c = [ 1; 3; sqrt(5)]
w=
1 -2 3
c=
1.0000
3.0000
2.2361
>> w', c’
ans =
1
-2
3
ans =
1.0000 3.0000 2.2361
22 MATLAB/SIMULINK – упатство за вежби
>> t = w + 2*c'
t=
3.0000 4.0000 7.4721
>> T,t
T=
3.0000
-16.0000
10.5279
t=
3.0000 4.0000 7.4721
>> x’
ans =
1.0 – 3.0000i
.0000 + 2.0000i
prod =
167
>> u*w
??? Error using ==> *
Inner matrix dimensions must agree.
додека пак
u*w'
ans =
45
бидејќи со операцијата транспонирање, векторот-редица w е претворен во вектор-
колона.
24 MATLAB/SIMULINK – упатство за вежби
Пример:
Аголот помеѓу два вектор-колони x и y e дефиниран е со равенството:
xT y
cos
x y
Со помош на оваа формулата да се определи косинус на аголот помеѓу следниве
два вектори
x [1, 2,3]T и y [3, 2,1]T
потоа да се најде аголот изразен во степени.
Решение во MATLAB:
>> x=[1, 2, 3]';
>> y=[3, 2, 1]';
>> costheta=x'*y/(norm(x)*norm(y));
>> theta=acos(costheta);
>> thetad=theta*180/pi;
>> costheta, theta, thetad (печатење на резултатите)
Чекорите на пресметување кои што се кријат зад овој еден ред наредба се
следниве:
Секој елемент на векторот-колона x се множи со бројот pi = 3.1495.
Функцијата sin се пресметува за секој елемент на векторот добиен со претход-
ниот чекор. При тоа се добива нов вектор-колона
Се врши точкасто множење помеѓу новодобиентиот вектоr sin(pi*x) и
векторот x и се генерира векторот y, чии елементи се бараните табеларни
вредности на функцијата.
Кусо, со следниве наредби во MATLAB може да се добие горната табела:
>> x=[0.0:0.25:1.0]’; % вектор колона – независна варијабла)
>> spx=sin(pi*x); % пресметка на sin(x) - вектор колона)
>> y=x.*spx; % пресметка на функцијата y x sin(x)
>> [x, spx, y] % испис на решението во табела
ans = x sin(x) y x sin(x)
0 0 0
0.2500 0.7071 0.1768
0.5000 1.0000 0.5000
0.7500 0.7071 0.5303
1.0000 0.0000 0.0000
MATLAB/SIMULINK – упатство за вежби 27
>> a./a
ans =
1 1 1 1 1
>> u.^2
ans =
100 121 144
>> u.*u
ans =
100 121 144
>> u.^4
ans =
10000 14641 20736
6 1 2
A 1 8 3 .
2 4 9
>> size(ans)
ans =
1 2
ans =
3 5
ans =
5 3
>> P=ones(2,3)
P=
1 1 1
1 1 1
>> St = S'
St =
2 -1 0
-1 2 -1
0 -1 2
34 MATLAB/SIMULINK – упатство за вежби
>> S-St
ans =
0 0 0
0 0 0
0 0 0
>> D = [-3 0 0; 0 4 0; 0 0 2]
D=
-3 0 0
0 4 0
0 0 2
>> diag(F)
ans =
0
-2
1
9
0 1 2 3 4 5 6 7 8 9
nz = 34
>> x=0:0.1:0.5;
>> y=4*sin(3*x); u=3*sin(4*x);
>> [x',y',u']
ans =
0 0 0
0.1000 1.1821 1.1683
0.2000 2.2586 2.1521
0.3000 3.1333 2.7961
0.4000 3.7282 2.9987
0.5000 3.9900 2.7279
>> x=(0:0.1:0.5)';
>> [x 4*sin(3*x) 3*sin(4*x) ]
ans =
0 0 0
0.1000 1.1821 1.1683
0.2000 2.2586 2.1521
0.3000 3.1333 2.7961
0.4000 3.7282 2.9987
0.5000 3.9900 2.7279
>> J(1,1)
ans =
1
>> J(2,3)
ans =
7
>> J(4,5)
??? Index exceeds matrix dimensions.
38 MATLAB/SIMULINK – упатство за вежби
>> J(4,:)
ans =
7 0 5 4
>> J(2:3,2:3)
ans =
6 7
10 11
A=
6 7 9
1 -3 -7
>> B = [ -1 2 5; 9 0 5]
B=
-1 2 5
9 0 5
>> A.*B
ans =
-6 14 45
9 0 -35
>> A.*B'
??? Error using ==> .*
Matrix dimensions must agree.
Множење на матрица со вектор може да биде или од десно или од лево т.е.
Ax множење на матрица со вектор од десно и
xA множење на матрица со вектор од лево.
Најчесто се среќава множење од десно, Ax и затоа векторот x е вектор-
колона а бројот на колоните на матрицата A мора да е еднаков на бројот на
елементите на x.
>> A = [5 7 9; 1 -3 -7]
A=
5 7 9
1 -3 -7
>>B = [ 0, 1; 3, -2; 4, 2]
B=
0 1
3 -2
4 2
>> C = A*B
C=
57 9
-37 -7
>> D = B*
D=
1 -3 -7
13 27 41
22 22 22
4 2 10 x1 10
2 10 12 x 32
2
4 6 16 x3 16
MATLAB/SIMULINK – упатство за вежби 41
Програмско решение:
% Primer 1.6.1
% file: mt_p16_01_linalgebra.m
%
A = [ 4 -2 -10; 2 10 -12; -4 -6 16];
B = [-10; 32; -16];
X = A\B
Решение:
X=
2.0000
4.0000
1.0000
Во MATLAB постојат бројни математички функции кои се изработени и
се достапни како М-фајлови. Списокот и употребата на овие функции се дадени
во Упатството за корисниците на МАТЛАБ (MATLAB User‟s Guide).
Пример 1.6.2.
Да се употреби функцијата inv за одредување на инверз од матрицата A
во Примерот 1.6.1., а потоа да се одреди векторот x.
Програмско решение:
% Primer 1.6.2
% File: mt_p16_02_linalgebra.m
%
A = [ 4 -2 -10; 2 10 -12; -4 -6 16];
B = [-10; 32; -16];
C = inv(A)
X = C*B
Решение:
C=
2.2000 2.3000 3.1000
0.4000 0.6000 0.7000
0.7000 0.8000 1.1000
X=
2
4
1
Пример 1.6.3.
Употреби ја функцијата за факторизација lu за изразување на матрицата А
од Примерот 1.6.2. како производ од горна и долна триаголна матрица, A = LU.
1 1
Потоа најди го x од X U L B.
42 MATLAB/SIMULINK – упатство за вежби
U=
4.0000 -2.0000 -10.0000
0 11.0000 -7.0000
0 0 0.9091
X=
2
4
1
Пример. 1.6.4.
Одреди ги својствените вредности и својствените вектори на матрицата А:
0 1 1
A 6 11 6
6 11 5
M-file (програмско решение):
% Primer 1.6.4
% File: mt_p16_04_eigenvalues.m
%
A = [0 1 -1; -6 -11 6; -6 -11 5];
[X,D] = eig(A)
Решение:
X = (Својствени вектори – колоните во матрицата)
0.7071 -0.2182 -0.0921
0.0000 -0.4364 -0.5523
0.7071 -0.8729 -0.8285
Пример 1.6.5.
x y z t 4
2x y t 2
3x y z t 2
x 2 y 3 z t 3
1 1 1 1 x 4
2 1 0 1 y 2
3 1 z 1 z 2
1 2 3 1 t 3
1
За непознатиот вектор х вреди x A B .
44 MATLAB/SIMULINK – упатство за вежби
За решавање може да се примени кој било еден од горе понудените начини. Едно
програмско решение е:
% Primer 1.6.5
% File: mt_p16_05_linalgebra.m
%
A = [ 1 1 1 1; 2 -1 0 1; 3 2 -1 -1; 1 -2 -3 1];
B = [4; 2; 2; -3];
X = A\B
Решение: непознатиот вектор x [ x y z t ]T е:
X=
0.8437 (x)
0.8750 (y)
1.0937 (z)
1.1875 (t)
Задача 1.6.1.
2x 3y z t 1
x y z t 1
3 x y z 2t 0
x z t 2
Задача 1.6.2.
x 2y z t 3
xz t
2y z t
x 4 y 2z t 1
Задача 1.6.3.
x 2y w 0
3x y 4 z 2w 3
2 x 3 y z 5w 1
x 2 z 2w 1
MATLAB/SIMULINK – упатство за вежби 45
Низата на букви, помеѓу двата апострофи ( ' ' ) може да се состои од било
какви знаци. МАТЛАБ-от ги смета како низа на карактери.
Легенда. Кога на еден цртеж има нацртaно повеќе графици кои се
направени во различни бои или линии корисни е да е стави легенда . Легендата на
цртежот се става со наредбата:
>> legend('kriva 1', 'kriva 2')
при што помеѓу апострофите може да се напише соодветниот наслов за кривата.
Мрежа. Со наредбата grid на цртежот се става точкаста мрежа. Мрежата
може а се тргне повторно со наредбата grid или grid off.
46 MATLAB/SIMULINK – упатство за вежби
Сл.1.7.1.
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0 0
-0.2 -0.2
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
а) б)
Примери:
Пример 1.7.1. Линеарен граф
Да се креира линеарен X-Y граф за следниве варијабли:
t 0 1 2 3 4 5 6 7 8 9 10 11 12
y 0 .5 1 2 4 7 11 14 15.5 16 16 16 16
За мал број податоци, може експлицитно да се внесат податоците во загра-
да. Тоа е направено во следниов M-File:
% Primer 1.7.1
% File: mt_p17_01_lingraf.m
%
t = [0 1 2 3 4 5 6 7 8 9 10 11 12];
y = [0 0.5 1 2 4 7 11 14 15.5 16 16 16 16];
plot(t,y), grid
0.6
0.4
0.2
y axis
-0.2
-0.4
-0.6
-0.8
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x axis
HOLD наредба
Сл.1.7.7.
Sl. 1.7.8.
MATLAB/SIMULINK – упатство за вежби 55
Z = (X-3).^2- (Y-2).^2;
mesh(X,Y,Z)
title(' Sedlo '), xlabel('x'),ylabel('y')
Saddle
0.5
-0.5
-1
3
2.5 4
2 3.5
3
1.5
2.5
y 1 2
x
Сл.1.7.9.
Во овој пример искористена е вградена функцијата на MatLab-от
mesh(X,Y,Z) со која се исцртува тридимензионалната мрежа на површината.
2 ( x 2 y 2 )
Пример 1.7.7: a) Да се нацрта функцијата f xye за -2 < x < 2, -2<y<2.
b) Да се определат вредностите и локациите на максималните и минималните
екстреми на функцијата.
Сл. 1.7.10.
MATLAB/SIMULINK – упатство за вежби 57
fmax =
0.0920
kmax =
641
1041
Pos =
-0.5000 0.5000
0.5000 -0.5000
1.5
0.5 Maximum
0
y
-0.5 Maximum
-1
-1.5
-2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x
Сл.1.7.11.
58 MATLAB/SIMULINK – упатство за вежби
Пример 1.7.8.
Да се нацрта во правоаголни координати граф на Bessel-овата функција
Jo x2 y2 .
Пример 1.7.9
sin r
Да се нацрта граф на функцијата z , r x 2 y 2 , ако x и y се менуваат
r
во границите -10 до 10 со чекор 0.5
clg
[x,y]=meshgrid(-10:.5:10);
% meshgrid ja transfora specificiranata domena
% vo matrici x i y za ocenuvanje na z
%
r=sqrt(x.^2+y.^2)+eps;
z= sin(r)./r;
%
% 3-D mesh plot
mesh(x,y,z)
a) [x,y]=meshgrid(-10:.5:10);
b) [x,y]=meshgrid(-20:.5:20);
2. ПРОГРАМИРАЊЕ ВО МАТЛАБ
2.1. ЦИКЛУСИ
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
1 1
0 0
-1 -1
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1
Сл.2.1.2.
Како бројач во циклусот (во горниот случај тоа е n), може да се користи
било која легална променлива при што може за вредностите на бројачот да се
дефинираат и елементите на даден вектор. Тоа значи дека можно е да се користи
for циклус од следен вид.
MATLAB/SIMULINK – упатство за вежби 63
1.9
1.8
1.7
1.6
1.5
1.4
1.3
1.2
1.1
1
0 2 4 6 8 10 12 14 16 18 20
Сл. 2.1.3.
64 MATLAB/SIMULINK – упатство за вежби
1 1 1 1
S 20 1 2
2 2 ..... 2
2 3 4 20
1 1 1 1 1
S 21 1 2 2 2 ..... 2 2
2 3 4 20 21
...
1 1 1 1 1 1
S100 1 2 2 2 ..... 2 2 ......
2 3 4 20 21 100 2
Постојат вкупно 81 сума. Првата сума S20 може да се пресмета со наребата
sum(1./(1:20).^2). (Се користи вградената наредба sum со аргументите вектор-ред).
Соодветен код во MatLab би бил следниот.
>> S= zeros(100,1); % 1
>> S(20) = sum(1./(1:20).^2); % 2
>> for n =21:100 % 3
>> S(n) = S(n-1) +1/n^2; % 4
>> end % 5
>> clf; plot([20:100],S(20:100),'.',[20
100],[1,1]*pi^2/6,'-') % 6
>> axis([20 100 1.5 1.7]) % 7
>> [(98:100)' S(98:100)] % 8
ans =
98.0000 1.6348
99.0000 1.6349
100.0 1.6350
1.7
1.68
1.66
1.64
1.62
1.6
1.58
1.56
1.54
1.52
1.5
20 30 40 50 60 70 80 90 100
Сл.2.1.5.
MATLAB/SIMULINK – упатство за вежби 65
true = 1, false = 0
x == 2 дали x е еднакво на 2 ?
x ~= 2 дали x е различито од 2?
x>2 дали x е поголемо од 2?
x<2 дали x е помало од 2?
x >= 2 дали x е поголемо или еднакво на 2?
x <= 2 дали x е помало или еднакво на 2?
>> x = pi
x=
3.1416
>> x ~= 3, x ~= pi
ans =
1
ans =
0
>> x = [ -2 pi 5; -1 0 1 ]
x =
-2.0000 3.1416 5.0000
-1.0000 0 1.0000
>> x == 0
66 MATLAB/SIMULINK – упатство за вежби
ans =
0 0 0
0 1 0
A B A&B
1 1 1
1 0 0
0 1 0
0 0 0
A B A|B
1 1 1
1 0 1
0 1 1
0 0 0
A ~A
1 0
0 1
A B xor(A,B)
1 1 0
1 0 1
0 1 1
0 0 0
MATLAB/SIMULINK – упатство за вежби 67
ans =
1 1 1
ans =
1 0 1
0 1 0
0 0 0
>> x, L = x >= 0
x =
-2.0000 3.1416 5.0000
-5.0000 -3.0000 -1.0000
L =
0 1 1
0 0 0
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6
Сл.2.1.6.
S 12 2 2 ..... n 2
биде помала од 100.
>> S =1; n = 1;
>> while S+ (n+1)^2 < 100
>> n = n+1;
>> S = S + n^2;
>> end
>> [n,S]
ans =
6 91
Дел на наредбите помеѓу while и end ќе бидат пресметани само ако условот
S+ (n+1)^2 < 100 е исполент (вистинит).
70 MATLAB/SIMULINK – упатство за вежби
Метода 1:
>> x = zeros(1,20) ; x(1) = pi/4;
>> n = 1; d = 1;
>> while abs(d) > 0.001
>> n = n+1; x(n) = cos(x(n-1));
>> d = x(n)-x(n-1);
>> end
>> n,x
n=
14
x=
Columns 1 through 7
0.7854 0.7071 0.7602 0.7247 0.7487 0.7326 0.7435
Columns 8 through 14
0.7361 0.7411 0.7377 0.7400 0.7385 0.7395 0.7388
Columns 15 through 20
0 0 0 0 0 0
Метода 2.
>> d = xnew-xold;
>> xold = xnew;
>> end
>> [n, xnew, abs(d)]
ans =
14.0000 0.7388 0.0007
>> if a >= c
>> b = sqrt(a^2 - c^2)
>> else
>> b = 0
>> end
b =
0
if логички тест_1
команди кои се извршуваат ако
тест_1 е исполнет
abc
A s(s a)(s b)(s b) каде s
2
Соодветните наредби во MATLAB се:
>> a=10;b=15;c=20;
>> s=(a+b+c)/2;
>> A=sqrt(s*(s-a)*(s-b)*(s-c))
A =
72.6184
Овој проблем може да се надмине ако се формира скрип m-фајл, така што
наредбите со кои се пресметува површината се испишат во фајлот. Во конкретниот
пример формиран е скрипт m-фајл со име mt_p26_01_area.m и сместен е во
директориумот work.
mt_p26_01_area.m
s=(a+b+c)/2;
A=sqrt(s*(s-a)*(s-b)*(s-c))
>> a=10;b=15;c=20;
>> mt_p26_1_area
A =
72.6184
>> a=3;b=4;c=5;
>> mt_p26_1_area
A =
6
74 MATLAB/SIMULINK – упатство за вежби
File mt_p26_02_crta.m
plot(x,y,'w-')
legend(' matematicka kriva')
title(' Crtez na fukcija ')
xlabel('x-oska'), ylabel('y-oska')
grid
Сега е можно следното
>> x=-pi:pi/20:pi;
>> y=sin(x);
>> mt_p26_02_crta
Crtez na fukcija
1
matematicka kriva
0.8
0.6
0.4
0.2
y-oska
-0.2
-0.4
-0.6
-0.8
-1
-4 -3 -2 -1 0 1 2 3 4
x-oska
Sl. 2.6.1.
MATLAB/SIMULINK – упатство за вежби 75
>> x=-1:2/100:1;
>> y=x.^2;
>> mt_p26_02_crta
Crtez na fukcija
1
matematicka kriva
0.9
0.8
0.7
0.6
y-oska
0.5
0.4
0.3
0.2
0.1
0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
x-oska
% Koristenje:
% Area = povr(2,3,4)
%------------------------------------------------
s = (a+b+c)/2;
A=sqrt(s*(s-a)*(s-b)*(s-c));
%----------- kraj na funkcijata povr -----------
>> povr(3,4,5)
>> Area = povr(3,4,5)
>> x=10;y=15;z=20;
>> A=povr(x,y,z)
ans =
6
Area =
6
A =
72.6184
>> s
ставена како излезна променлива. Тоа може да се стори ако се промени заглавието
на функцијата во.
>> povr(10,15,20)
ans =
72.6184
Area =
72.6184
hlen =
22.5000
1. Одберите име на функцијата кое нема да биде исто како и име кое веќе постои
и се користи од страна на MATLAB. Во конкретниот пример името на
функцијата е povr и нејзината дефиниција (код) се наоѓа во фајлот povr.m.
function f = Fib1(n)
% premetuva n-tiot broj vo
%nizata na Fibonaci
F = zeros(1,n+1);
F(2) = 1;
for i = 3:n+1
MATLAB/SIMULINK – упатство за вежби 79
function f = Fib2(n)
% premetuva n-tiot broj vo
%nizata na Fibonaci
if n== 1
f=0;
elseif n==2
f=1;
else
f1 = 0; f2 = 1;
for i = 2:n-1
f = f1 + f2;
f1 = f2; f2 = f;
end
end
%--------------- kraj---------------
function f = Fib3(n)
% premetuva n-tiot broj vo
% nizata na Fibonaci
if n== 1
f=0;
elseif n==2
f=1;
else
f = Fib3(n-1) + Fib3(n-2)
end
%--------------- kraj---------------
function f = Fib4(n)
% premetuva n-tiot broj vo
% nizata na Fibonaci
A = [0 1;1 1];
y = A^n*[1;0];
f = y(1);
%--------------- kraj---------------
>> x1 = Fib1(10)
>> x2 = Fib2(10)
>> x3 = Fib3(10)
>> x4 = Fib4(10)
x1 =
34
x2 =
34
x3 =
34
x4 =
34
Горните четири методи даваат исти резултати но затоа пак брзината со која
се вршат пресметките е различита. Тоа може да се покаже со мерење на времето
користејќи ги наредбите tic и toc, со кои се добива потрошеното време во секунди.
x1 =
4181
elapsed_time = 0.1700 sec
x2 =
4181
elapsed_time = 0 sec
x3 =
4181
elapsed_time = 31.8000 sec
x4 =
4181
elapsed_time = 0 sec
MATLAB/SIMULINK – упатство за вежби 81
>> fix(x)
ans =
-3 0 3 6 9
>> floor(x)
ans =
-4 0 3 6 9
>> ceil(x)
ans =
-3 0 4 7 10
>> x = pi/4*(1:3)'
>> A=[sin(x), sin(2*x), sin(3*x)]/sqrt(2)
x=
0.7854
1.5708
2.3562
A=
0.5000 0.7071 0.5000
0.7071 0.0000 -0.7071
0.5000 -0.7071 0.5000
>> A*A'
ans =
1.0000 0 0
0 1.0000 0.0000
0 0.0000 1.0000
>> S = eye(3)
MATLAB/SIMULINK – упатство за вежби 83
S =
1 0 0
0 1 0
0 0 1
>> A*A' - S
ans =
1.0e-015 *
-0.2220 0 0
0 -0.2220 0.0555
0 0.0555 -0.2220
>> A'*A - S
ans =
1.0e-015 *
-0.2220 0 0
0 -0.2220 0.0555
0 0.0555 -0.2220
floor(1 + 6*rand)
file: E:\mat-prog\kocka.m
d = floor(1 + 6*rand(n,2));
%------------------- kraj--------------------------------------
>> kocka(3)
ans =
2 6
3 3
6 6
>> sum(kocka(100))/100
ans =
3.5600 3.3100
>> x = -1:0.05:1;
>> y = sin(3*pi*x).*exp(-x.^2); plot(x,y,':')
>> k = find(y > 0.2)
k=
Columns 1 through 12
9 10 11 12 13 22 23 24 25 26 27 36
Columns 13 through 15
37 38 39
86 MATLAB/SIMULINK – упатство за вежби
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Сл.2.7.1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Сл.2.7.2.
MATLAB/SIMULINK – упатство за вежби 87
>> A = [ -2 3 4 4; 0 5 -1 6; 6 8 0 1]
A=
-2 3 4 4
0 5 -1 6
6 8 0 1
1 4 7 10
2 5 8 11
3 6 9 12
n=
1
2
8
9
>> A(n)
ans =
-2
0
-1
0
file e:\mat-vezbi\humps.m
function y=humps(x)
y = 1./((x-0.3).^2 + 0.01) + 1./((x-0.9).^2 + 0.04) –6;
100
80
60
40
20
-20
-5 -4 -3 -2 -1 0 1 2 3 4 5
Сл. 2.8.1
MATLAB/SIMULINK – упатство за вежби 89
1.5
0.5
-0.5
-1
-1.5
-2
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Сл.2.8.2.
Но можно е и следното
>> fplot('[2*sin(x+3), humps(x)]', [-5 5])
100
80
60
40
20
-20
-5 -4 -3 -2 -1 0 1 2 3 4 5
Сл.2.8.3.
90 MATLAB/SIMULINK – упатство за вежби
>> x = fmin('humps',0.3,1)
x=
0.6370
29.8583
пример: Да се определи должината на кривата во простор зададена параметриски.
x(t ) sin(2t ) y(t ) cos(t ) z (t ) t
za t [0,3 ] .
Три димензионален цртеж на кривата е:
>> t=0:0.1:3*pi;
>> plot3(sin(2*t),cos(t),t)
10
0
1
0.5 1
0 0.5
0
-0.5
-0.5
-1 -1
Сл.2.8.4.
3
0
4 cos 2 (2t ) sin 2 (t ) 1dt
Но можно е и следното
>> fplot('[2*sin(x+3), humps(x)]', [-5 5])
92 MATLAB/SIMULINK – упатство за вежби
>> matdat
>> A
A=
0.2113 0.8098 0.4832
0.0824 0.9870 0.6512
0.7599 0.4524 0.2749
0.0087 0.8075 0.8880
MATLAB/SIMULINK – упатство за вежби 93
fajl E:\mat-vrzbi\b.dat
b =
0.2113 0.8098 0.4832
0.0824 0.9870 0.6512
0.7599 0.4524 0.2749
0.0087 0.8075 0.8880
A = rand(4,3);
save temp.dat A -ascii
type temp.dat
1
Primerot e zemen od upatstvoto za MATLAB
96 MATLAB/SIMULINK – упатство за вежби
>> r = roots(p)
r=
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
>> p2 = poly(r)
p2 =
1.0000 -0.0000 -2.0000 -5.0000
p2 =
1.0000 5.4330 6.9545
r=
-3.3683
-2.0647
2
primerot e zemen od knigata "MATLAB i dodatni moduli Control system toolbox i Simulink " od
Latinka ^alasan i Menka Petkovska, Mikro kwiga, Beograd
MATLAB/SIMULINK – упатство за вежби 97
>> polyval(p,5)
ans =
110
v=
-5.1990 -5.8750 -6.0000 -1.0000 16.0000 51.0000 110.0000
a(s) s 2 2s 3 i b(s) 4s 2 5s 6
c=
4 13 28 27 18
q=
4 5 6
r=
0 0 0 0 0
p = polyfit(x,y,n)
каде што x и y се векторите кои ги содржат податоците што треба да се
интерполираат, а n е редот на полиномот чии коефициенти треба да се определат.
p =
-0.1917 31.5821 -60.3262 35.3400
500
450
400
350
300
250
200
150
100
50
0
1 1.5 2 2.5 3 3.5 4 4.5 5
Сл.3.1.1.
Пример 3.1.2.
c =
13.2447 1.3735 -20.3555 10.3114 0.1641
>> x1 = 0.1:0.01:0.8;
MATLAB/SIMULINK – упатство за вежби 99
>> y1 = polyval(c,x1);
>> plot(x1,y1,x,y,'*')
1.6
1.5
1.4
1.3
1.2
1.1
0.9
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
3
Vidi del 1.3 vo predavawata za vtoriot semestar
4
Isto
100 MATLAB/SIMULINK – упатство за вежби
>> x = [ 0 1 3 ]';
>> fx = [ -5 1 25]';
>> A = myvander(x)
>> coef = A\fx
A =
0 0 1
1 1 1
9 3 1
coef =
2
4
-5
f ( x) 2 x 2 4 x 5
>> x1 = 0:0.2:3.4;
>> y1 = polyval(coef,x1);
>> plot(x1,y1,x,fx,'*')
MATLAB/SIMULINK – упатство за вежби 101
35
30
25
20
15
10
-5
0 0.5 1 1.5 2 2.5 3 3.5
Сл.3.2.1
>> A = vander(x)
A =
0 0 1
1 1 1
9 3 1
5
Vidi del 1.4 vo predavawata za vtoriot semestar
102 MATLAB/SIMULINK – упатство за вежби
>> x = [ 0 1 3];
>> y = [ -5 1 25];
>> [coef,L] = lagrange(x,y)
coef =
2.0000 4.0000 -5.0000
L =
MATLAB/SIMULINK – упатство за вежби 103
1.2
0.8
0.6
0.4
0.2
-0.2
-0.4
0 0.5 1 1.5 2 2.5 3
Сл.3.2.2
104 MATLAB/SIMULINK – упатство за вежби
y1 =
-2.5000 5.5000 11.0000
6
Vidi del 1.5 vo predavawata za vtoriot semestar
MATLAB/SIMULINK – упатство за вежби 105
Пример 17:
C =
2 4 -5
D =
-5 0 0
1 6 0
11 10 2
Пример 28:
C =
0 1 -2 7 -5
D =
-5 0 0 0 0
1 6 0 0 0
9 8 1 0 0
25 16 4 1 0
55 30 7 1 0
>> a = 1.5;
>> vrd = polyval(C,a)
vrd =
4.3750
7
Primerot e od predavawata za vtoriot semestar
8
Isto
106 MATLAB/SIMULINK – упатство за вежби
f f ( x 0 h) f ( x 0 h )
f ( x0 ) lim lim
x 0 x h 0 2*h
Ако горниот лимес е конечен и има вредност тогаш велиме дека функцијата
има извод во точката x0.
9
Vidi del 2.1 vo predavawata za vtoriot semestar
MATLAB/SIMULINK – упатство за вежби 107
Името на m-фунцијата е difflim, при што како влезни параметри се: името
на функцијата f, точката во која се бара изводот x и толеранција, toler, на грешката
во вредноста на изводот. Самата функцијата ф треба да биде зададена и
дефинирана како м-функциска датотека. Во нашиот пример тоа е функцијата
cos(x) а дефинирана е со следната m-функциската датотека.
file:f.m
function z = f(x)
z = cos(x);
>> x = 0.8;
>> h = 1;
>> f1 = feval('f',x+h)
>> f2 = feval('f',x-h)
>> izv = (f1-f2)/(2*h)
f1 =
-0.2272
f2 =
0.9801
izv =
-0.6036
>> x0 = 0.8;
>> toler = 1e-7;
>> [H,D,E,n] = difflim('f',x0,toler);
>> n,H(n),D(n),E(n)
n =
4
ans =
1.0000e-004
ans =
-0.7174
ans =
1.1836e-007
function vr = newtdiff(x,y,x0)
[C,D] = newtint(x,y);
10
Vidi 2.3 od predavawata vo vtoriot semestar
110 MATLAB/SIMULINK – упатство за вежби
derc = polyder(C);
vr = polyval(derc,x0);
Пример:
>> x = 0:0.2:1.2;
>> y = cos(x);
>> x0 = 0.8;
>> izvod = newtdiff(x,y,x0)
izvod =
-0.7174
Пример11
>> x=1:0.05:1.3;
>> y = sqrt(x);
>> x0 = 1.0;
>> izvod = newtdiff(x,y,x0)
izvod =
0.5000
11
Od predavawata na strana 24
12
Vidi 3.2 od predavawata vo vtoriot semestar
MATLAB/SIMULINK – упатство за вежби 111
function v = trapez(x,y)
n = length(x);
m = length(y);
if m ~= n
display(' x i y nemaat ednakov broj na podatoci ')
break
end
v = 0;
for k=1:n-1
v=v+(x(k+1)-x(k))*(y(k+1)+y(k))/2.0;
end
Пример13
>> x = 0.4:0.1:1.0;
>> y = exp(x)./x;
>> integral = trapez(x,y)
integral =
1.7950
Пример14
>> x = 0:pi/12:pi/2;
>> y = sin(x);
>> integral = trapez(x,y)
integral =
0.9943
>> x = 0:pi/500:pi/2;
>> y = sin(x);
>> format compact
>> integral = trapez(x,y)
13
od predavawata na st. 29
14
od predavaqata na st. 30
112 MATLAB/SIMULINK – упатство за вежби
integral =
0.99999671012970
function v = simpson(h,y)
%-------------------------------
% vlezni parametri
% h cekor na integracija ( interval)
% y() vrednosti na funkcijata t.e podatoci vo brojcana forma
%-------------------------------
n = length(y);
% se ispituva dali ima neparen broj na podatoci
% ako ne da se namali za eden
m = n;
if rem(n,2) == 0
m = n-1;
end
m,n
v = 0.0;
for k=2:m-1
if rem(k,2)== 0
v = v+4.0*y(k);
else
v = v+2.0*y(k);
end
end
v = h*(v + y(1)+y(m))/3;
% vo slucaj na paren broj na tocki dodaj ja
% poslednata povrsina koristejki trapezno pravilo
if rem(n,2) == 0
v = v+h*(y(n)+y(n-1))/2;
end
Пример
15
Vidi 3.2.3 od predavawata vo vtoriot semestar
MATLAB/SIMULINK – упатство за вежби 113
>> h = pi/500;
>> x = 0:h:pi/2;
>> y = sin(x);
>> integral = simps1(h,y)
integral =
1.0000
16
Vidi 3.3 od predavawata vo vtoriot semestar
114 MATLAB/SIMULINK – упатство за вежби
fz = fct*feval(f,x);
sum = sum+w*fz;
end
пример
>> a = 0;
>> b = pi/2;
>> integral = gauss5('f',a,b)
integral =
1.0000
function z = f(x)
z = sin(x);
пример
>> a = 0.4;
>> b = 1.0;
>> integral = gauss5('f',a,b)
integral =
1.7904
function z = f(x)
z = exp(x)/x;
пример
>> a = 1;
>> b = 2;
>> integral = gauss5('ff',a,b)
integral =
0.6931
function z = ff(x)
z = 1./x;
MATLAB/SIMULINK – упатство за вежби 115
integral =
0.69314722007998
>> a = 1;
>> b = 2;
>> err = 1.e-5;
>> integral = quad8('ff',a,b,err)
integral =
0.69314718056011
Пример 3.5.1
2x1 + x2 = 4
x1 - x2 = -1
или
2 1 x1 4
Ax b t.e 1 1 x 1
2
MATLAB наредби:
116 MATLAB/SIMULINK – упатство за вежби
x=
1
2
c=
4
-1
err =
0
0
Ainv =
0.3333 0.3333
0.3333 -0.6667
x=
1.0000
2.0000
A (3,:) = [ 1 1]
b(3) = 4
x = A\b
c = A*x
MATLAB/SIMULINK – упатство за вежби 117
razlika = b-c
err = norm(razlika)
A=
2 1
1 -1
1 1
b=
4
-1
4
x=
1.0714
2.2857
c=
4.4286
-1.2143
3.3571
razlika =
-0.4286
0.2143
0.6429
err =
0.8018
x1 =
1.09
2.24
кое се разликува во втората децимала од решението x грешката е:
x1 =
1.0900
2.2400
c1 =
4.4200
-1.1500
3.3300
raz1 =
-0.4200
0.1500
118 MATLAB/SIMULINK – упатство за вежби
0.6700
err1 =
0.8049
ans =
0.0031
Пример 3.5.2:
>> A = [ 10 -7 0; -3 2 6; 5 -1 5]
>> b = [7 4 6]'
>> x = A\b
>> c = A*x
>> err = b-c
A=
10 -7 0
-3 2 6
5 -1 5
b=
7
4
6
x=
0
-1
1
c=
7
4
6
err =
0
0
0
Пример 3.5.3:
A=
1.0000 0.8000 0.6400
1.0000 0.9000 0.8100
MATLAB/SIMULINK – упатство за вежби 119
function X = gaussj(A,B)
%--------------------------------------------------------------
%GAUSSJ Gauss-Jordan metoda za resavawe na linearni ravenki
% Povikuvanje
% X = gaussj(A,B)
% Vlez
% A coeficienti na matricata
% B vector na desnata strana
% Izlez
% X vector na resenie
%----------------------------------------------------------------
[n n] = size(A); %1
A = [A';B']'; %2
X = zeros(n,1); %3
for p = 1:n, %4
for k = [1:p-1,p+1:n], %5
if A(p,p)==0, break, end %6
mult = A(k,p)/A(p,p); %7
A(k,:) = A(k,:) - mult*A(p,:); %8
end %9
end %10
X = A(:,n+1)./diag(A); %11
Пример 3.5.4:
>> A = [ 1.0 0.8 0.64;1.0 0.9 0.81; 1.0 1.1 1.21]
>> b = [erf(0.8) erf(0.9) erf(1.1)]'
>> x = gaussj(A,b)
>> c = A*x
>> err = b-c
A=
1.0000 0.8000 0.6400
1.0000 0.9000 0.8100
1.0000 1.1000 1.2100
b=
0.7421
0.7969
0.8802
x=
-0.0122
1.2937
-0.4386
c=
0.7421
0.7969
0.8802
err =
1.0e-015 *
MATLAB/SIMULINK – упатство за вежби 121
0.1110
0.1110
0.2220
Пример
>> A = [ 10 -7 0; -3 2 6; 5 -1 5]
>> b = [7 4 6]'
>> x = gaussj(A,b)
>> c = A*x
>> err = b-c
A=
10 -7 0
-3 2 6
5 -1 5
b=
7
4
6
x=
0
-1.0000
1.0000
c=
7.0000
4.0000
6.0000
err =
1.0e-013 *
-0.3109
0.1066
-0.0355
Оваа метода исто така доста често се користи, поради својата едноставност
и многу лесно програмирање. Може да се користи за системи со било која
големина но недостаток на методата е што претходно системот на линеарни
равенки прво треба да се трансформира во форма за итерација и при тоа треба да
биде задоволен условот за конвергенција.
Пример 3.5.5:
>> A = [ 10 1 1; 2 10 1; 2 2 10]
>> b = [12 13 14]'
>> x0 = [ 1.07 0.4 2.3]'
>> toler = 1.e-8
>> maxiter = 20
>> [x,DX,Z] = gseid(A,b,x0,toler,maxiter)
>> c = A*x
>> err = b-c
MATLAB/SIMULINK – упатство за вежби 123
A=
10 1 1
2 10 1
2 2 10
b=
12
13
14
x0 =
1.0700
0.4000
2.3000
toler =
1.0000e-008
maxiter =
20
x=
1.0000
1.0000
1.0000
DX =
1.0e-008 *
0.2106
0.0150
0.0451
Z=
1.0700 0.4000 2.3000
0.9300 0.8840 1.0372
1.0079 0.9947 0.9995
1.0006 0.9999 0.9999
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
c=
12.0000
13.0000
14.0000
err =
1.0e-009 *
0.3013
0.4511
0
124 MATLAB/SIMULINK – упатство за вежби
Пример 3.5.6:
>> A = [ 8 1 1; 1 5 -1; 1 -1 5]
>> b = [26 7 7]'
>> x0 = [ 1.07 0.4 2.3]'
>> toler = 1.e-6
>> maxiter = 20
>> [x,DX,Z] = gseid(A,b,x0,toler,maxiter)
>> c = A*x
>> err = b-c
A=
8 1 1
1 5 -1
1 -1 5
b=
26
7
7
x0 =
1.0700
0.4000
2.3000
toler =
1.0000e-006
maxiter =
20
x=
3.0000
1.0000
1.0000
DX =
1.0e-005 *
0.1308
0.0940
0.0450
Z=
1.0700 0.4000 2.3000
2.9125 1.2775 1.0730
2.9562 1.0234 1.0134
2.9954 1.0036 1.0016
2.9993 1.0005 1.0002
2.9999 1.0001 1.0000
3.0000 1.0000 1.0000
3.0000 1.0000 1.0000
3.0000 1.0000 1.0000
c=
26.0000
7.0000
7.0000
MATLAB/SIMULINK – упатство за вежби 125
err =
1.0e-005 *
0.1389
-0.0450
0
>> A = [ 8 1 1; 1 5 -1; 1 -1 5]
>> b = [26 7 7]'
>> x0 = [ 107 -24 32]'
>> toler = 1.e-6
>> maxiter = 20
>> [x,DX,Z] = gseid(A,b,x0,toler,maxiter)
>> c = A*x
>> err = b-c
A=
8 1 1
1 5 -1
1 -1 5
b=
26
7
7
x0 =
107
-24
32
toler =
1.0000e-006
maxiter =
20
x=
3.0000
1.0000
1.0000
DX =
1.0e-006 *
0.4888
0.3509
0.1679
Z=
107.0000 -24.0000 32.0000
2.2500 7.3500 2.4200
2.0288 1.4782 1.2899
2.9040 1.0772 1.0346
126 MATLAB/SIMULINK – упатство за вежби
>> A = [ 65 17 -13 7
23 56 11 -19
-5 3 47 20
16 12 17 18]
>> b = [84 36 18 25]'
>> x0 = [ 1.07 0.4 2.3 0.5]'
>> toler = 1.e-8
>> maxiter = 100
>> [x,DX,Z] = gseid(A,b,x0,toler,maxiter);
>> [iter,m]=size(Z);
>> x,iter
>> c = A*x
>> err = b-c
A=
65 17 -13 7
23 56 11 -19
-5 3 47 20
16 12 17 18
b=
84
36
18
MATLAB/SIMULINK – упатство за вежби 127
25
x0 =
1.0700
0.4000
2.3000
0.5000
toler =
1.0000e-008
maxiter =
100
x =
1.6181
-0.3788
0.8241
-0.5752
iter =
33
c =
84.0000
36.0000
18.0000
25.0000
err =
1.0e-006 *
0.3173
-0.2172
0.1472
0.0000
17
Vo angliskata literatura ovoj vid na aproksimacija se narekuva "fitting". Vo na{iot jazik
soodveten prevod ne postoi zatoa ~esto mo`e da se sretne samiot zbor fiting. Najblisku do
prevodot e "aproksimacija" iako vo angliskata literatura zborot aproksimacija (aproximation)
e poseben zbor. Vo statistikata postapkata se narekuva regresija a krivata regresiona kriva.
128 MATLAB/SIMULINK – упатство за вежби
p(s) ak x k ak 1 x k 1 .... a1 x a0
S j 1 ( p( x j ) y j ) 2
n
.
a1
a 0 y n 1
y
n
x1k x1k 1 . x1 1
k
x2 x 2k 1 . x2 1
x3k . x3k 1 . x3 1
A . . . . .
. . . . .
k k 1
x n 1 x n 1 . x n 1 1
xk x nk 1 1
n . xn
[mr,mc] = size(x);
if mr == 1
x = x';
m = mc;
end
n = length(y);
m = length(x);
if m ~= n
display(' x i y nemaat ist broj na podatoci'), break
end
A = zeros(n,k+1); %1
for j = 1:k+1 %2
A(:,j)= x.^(k+1-j); %3
130 MATLAB/SIMULINK – упатство за вежби
end %4
S = A'*A; %5
b = A'*y; %6
C = S\b; %7
Err = norm((y-A*C)); %8
Пример 3.6.1:
C =
1.3929
1.8214
Err =
1.2956
p( x) 1.3929 x 1.8214
C1 =
0.0119
1.3214
1.8810
Err1 =
1.2910
>> y =[ 2 3 5 5 8 9 10];
>> [C3,Err3]=polylsq(x,y,3)
C3 =
-0.0278
0.2619
0.7659
2.0476
Err3 =
1.2247
11
10
1
0 1 2 3 4 5 6 7
Сл.3.6.1.
132 MATLAB/SIMULINK – упатство за вежби
C1 =
1.3929 1.8214
Q1 =
R: [2x2 double]
df: 5
normr: 1.2956
C2 =
0.0119 1.3214 1.8810
Q2 =
R: [3x3 double]
df: 4
normr: 1.2910
C3 =
-0.0278 0.2619 0.7659 2.0476
Q3 =
R: [4x4 double]
df: 3
normr: 1.2247
Резултатите се идентични, со тоа што во случајов грешката е означена со
normr.
при што функциите qk(x) се одбираат така да задоволуваат дадени услови или пак
ја презентираат физиката на проблемот. Не постои некое правило за избор на
функциите но најчест критериум е физикалниот контекс на проблемот како и
искуството. Сега матрицата A би добила форма.
MATLAB/SIMULINK – упатство за вежби 133
q k ( x1 ) q k 1 ( x1 ) . q 2 ( x1 ) q1 ( x1 )
q (x ) q k 1 ( x 2 ) . q2 ( x2 ) q1 ( x 2 )
k 2
q k ( x3 ) q k 1 ( x3 ) . q 2 ( x3 ) q1 ( x3 )
A . . . . .
. . . . .
q k ( x n 1 ) q k 1 ( x n 1 ) . q 2 ( x n 1 ) q1 ( x n 1 )
q (x ) q1 ( x n )
k n q k 1 ( x n ) . q2 ( xn )
f ( x) a1q1 ( x) kade q1 ( x) e bx
>> x = 0:0.1:3;
>> a = 5.5;
>> b=-1.2;
>> y = a*exp(b*x);
>> n=length(y);
>> z = rand(1,n)-0.2;
>> y1 = y+z;
>> plot(x,y1,'o')
134 MATLAB/SIMULINK – упатство за вежби
0
0 0.5 1 1.5 2 2.5 3
C=
-0.8863
1.5706
Err =
2.8748
alg =
1.5706
breg =
-0.8863
areg =
4.8095
MATLAB/SIMULINK – упатство за вежби 135
0
0 0.5 1 1.5 2 2.5 3
4. ОСНОВИ НА SIMULINK
.
И во двата случаеви ќе се отвори прозорот со библиотеката на блокови
(Simulink Library Browser) даден на Сл.4.2.3. Со кликнување на белото копче во
горниот лев агол на прозорецот ќе се отвори работното поле во кое може да го
цртаме нашиот Simulink модел (Сл.4.2.2).
138 MATLAB/SIMULINK – упатство за вежби
3) Користење на Ctrl+O
Истиот резултат ќе се добие ако се наоѓаме во MATLAB и ако на тастатурата
отчукаме Ctrl+O. Ке ни се отвори работниот директориум каде лесно ќе го најдеме
бараниот фајл - mt_p42_01_Primer.mdl
4.4.1. Блокови
На Сл.4.4.1. прикажан е основниот прозор на библиотеката на блокови
каде може да се видат сите основни групи блокови – тулбоксови во Симулинк за
МАТЛАБ верзија 6.5. Тулбоксовите содржат наменски блокови од определени
области кои се гледаат од насловите.
При стартувањето на Симулинк на еден од опишаните начини во точката
4.2., прво се отвора прозорот прикажан на Сл.4.4.1.а). Овде може да ги видиме
основните групи блокови во Simulink. Ако кликнемe (два пати) на Continuous ќе
ја видиме содржината на оваа група блокови за моделирање на континуални
системи (Сл.4.4.1. б) . На сличен начин може да се прегледа целокупната содржина
на Simulink библиотеката.
Преносот на некој од блоковите од поедина библиотека во работното поле
се остварува така што се кликнува со глушецот и држејќи го левото копче на
глушецот означениот блок се пренесува во работното поле.
MATLAB/SIMULINK – упатство за вежби 141
а) б)
Сл.4.4.1. Групи блокови во СИМУЛИНК (за МАТЛАБ 6.5)
4.4.2. Линии
Блокот "Step" исто така може два пати да се кликне при што ќе се отвори
следниов дијалог-прозорец.
а) б)
Сл.4.4.13. а) нови параметри на системот, б) одзив на системот под а)
а) б)
Сл.4.4.14. Dialog-box Simulation Parameters а) стари параметри, б) нови параметри
а) б)
а) б)
Сл.4.6.3. а) Дел од библиотеката Sources (извори), б) Пренесен извор – степ
генератор во прозорот за градење на системот
а) б)
Сега кога блоковите се точно подесени тие треба да се поврзат помеѓу себе. За
поврзување треба да се направат следниве чекори.
- Со глувчето курсорот го донесуваме на излезот на блокот „Step“. Кога ќе се
појави крст го стиснуваме левото копче на глувчето и држејќи го повлекуваме
154 MATLAB/SIMULINK – упатство за вежби
линија кон првиот влез во суматорот. Чим ќе се појави крст со дупли линии
тоа е знак дека спојот ќе биде направен и го отпуштаме левото коппче на
глувчето. Спојот можеше да се направи и во спротивна насока, прво да се
позициониравме на влезот во суматорот (ќе се појави крст и стрелката на
линијата) , а потоа, со притиснато лево копче на глушецот, влечеме линија кон
излезот од блокот „Step“. Резултатот ќе биде ист и ќе изгледа како на Сл.4.6.8.
4.6.4. Симулација
>> K=2.5
m - masa
k - konstanta na pru`inata Dijagram na slobodno telo
c - koeficient na viskozno pridu{uvawe
k
kx
F (t ) F (t )
c m m
cx
Trieweto na trkalata so
podlogata se zanemaruva
x
d 2x dx
m 2
c kx F (t ) (5.1.1.)
dt dt
или
d 2 x c dx k 1
2
x F (t ) (5.1.2)
dt m dt m m
каде се:
162 MATLAB/SIMULINK – упатство за вежби
c k 1
x x x F (t ) (5.1.3)
m m m
Состојбата на механичкиот систем на Сл.5.1.1 се карактеризира со
позицијата на масата одредена со поместувањето x и со брзината ма масата
одредена со dx / dt x . Ако овие варијабли на состојба ги означиме со:
x1 x
(5.1.4)
x2 x
тогаш диференцијалната равенка од втор ред (5.1.3) може да се запише во форма
на систем со две диференцијални равенки од прв ред, односно:
x1 x2
1 (5.1.5)
x 2 [ F (t ) cx 2 kx1 ]
m
Нека во почетокот (t=0) , до кога масата била во мирување, почне да
делува константна сила F(t)=25N . Нека се останатите параметри на системот:
N
m 1[kg], k 25[ N / m], c 5[ ]
m/ s
Потребно е да се направи програма во МАТЛАБ за симулација на
механичкиот систем и да се нацртаат одзивите – варијаблите на состојба во
функција на времето како и граф во фазната рамнина.
Функција fc_mehsist.m:
%
function dx = fc_mehsyst(t,x); % Gi presmetuva izvodite na varijablite na sostojba
%
% Parametri na sistemot
F = 25; % Nadvoresna sila - Step vlez [N]
m =1; % Masa [kg]
c = 5; % Koeficient an prigusniot element [N/m/s]
k = 25; % Koeficient na pruzinata [N/m]
%
% Presmetka na desnite strani na diferencijalnite ravenki
dx = [x(2) ; 1/m*( F - c*x(2) - k*x(1))];
MATLAB/SIMULINK – упатство за вежби 163
М – фајл: mt_p51_01_fc_mehsist.m
% Glavna programa: Mehanicki sistem-Masa pruzina-prigusuvac
% Ime na fajlot: mt_p51_01_fc_mehsist.m
% Funkcii: fc_mehsist.m
%
t0 = 0; % Pocetno vreme
tf = 3; % Konecno vreme
x0 = [0, 0]; % Pocetni uslovi
tol = 0.001; % Tocnost
trace = 0; % Ako ne e nula, sekoj cekor se pecati
%
% Integracija na diferencijalnite ravenki:
[t,x] = ode23('fc_mehsist',t0,tf,x0,tol,trace);
%
% Crtanje na rezultatite:
subplot(211),plot(t,x)
title('Vremenski odziv na meh.translatoren sistem')
xlabel('t [s]')
text(2,1.2,'Pomestuvanje d')
text(2,.2,'Brzina v')
%
d = x(:,1); % Pomestuvanje
v = x(:,2); % Brzina
%
subplot(212), plot(d, v)
title('Brzinata V vo funkcija na pomestuvanjeto d')
xlabel('Pomestuvanje d')
ylabel('Brzina V')
%
Сл. 5.1.2.
164 MATLAB/SIMULINK – упатство за вежби
FT G sin CL
O
L
FN +x
M mx mL FT
G sin
m
Cx G cos
x VT L
G mg
Сл.5.1.3. Нишало
M-File: Функција
%
function dx = fc_nisalo(t,x); % Presmetuvanje na izvodite
% na varijablite na sostojba
% Parametri na nisaloto
%
G = 2; % Tezina na nisaloto[N]
L = 0.6; % Dolzina na stapot [m]
C = 0.02; % Koeficient na prigusuvanje [N/m/s]
g0 = 9.81; % Zabrzuvanje na zemjinata teza [m/s^2]
m = G/g0; % Masa na nisaloto [kg]
%
% Presmetka na desnite strani na dif. ravenki
%
dx = [x(2); (-C/m)*x(2)-G/(m*L)*sin(x(1))]; % dx = d/dt(x)
%
% GLAVNA PROGRAMA
% SUL_PrV2_2_fc_nisalo.m
%
clg
%
t0 = 0; % pocetno vreme
tf = 5; % krajno vreme
x0 = [1, 0]; % pocetni uslovi
tol = 0.0001; % tocnost
trace = 0; % ako ne e nula sekoj cekor se pecati
%
% Integracija na dif. ravenki
[t,x] = ode23('fc_nisalo',t0,tf,x0,tol,trace);
%
% Crtanje na varijablite:
%
subplot(211),plot(t,x), grid
166 MATLAB/SIMULINK – упатство за вежби
6.1. ПОЛИНОМИ
РБ Функција Опис
1. conv множење на полиноми
2. deconv делење на полиноми
3. poly определување на полином ако се знаат нулите
4. roots определување на нулите на полином
5. polyval пресметување на вредноста на полином
6. polyder диференцирање на полином
7. polifit определување на полином со кој се апроксимираат
дадени податоци
8. polivalm пресметување на вредностите на матричен полином
9. residue развој на парцијални дропки (резидуали)
>> p = [ 1 0 -2 -5]
>> r = roots(p)
170 MATLAB/SIMULINK – упатство за вежби
r =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
r=
-4.0000
-3.0000
-1.0000 + 2.0000i
-1.0000 - 2.0000i
0.0000 + 0.5000i
0.0000 - 0.5000i
p1 =
1.0000 -0.0000 -2.0000 -5.0000
Пример 6.1.2.
>> r2 = [ -4.0, -3.0, -1.0 + 2.0i, -1.0 - 2.0i, 0.0 + 0.5i, 0.0 - 0.5000i];
>> p2 = poly(r2)
p2 =
1.0000 9.0000 31.2500 61.2500 67.7500 14.7500 15.0000
p3 =
1.0000 5.4330 6.9545
r3 =
-3.3683
-2.0647
ans =
110
v =
-5.1990 -5.8750 -6.0000 -1.0000 16.0000
51.0000 110.0000
Вредностите на полиномот се пресметани за секоја зададена вредност на x.
a(s) s 2 2s 3 i b(s) 4s 2 5s 6
c =
4 13 28 27 18
172 MATLAB/SIMULINK – упатство за вежби
q =
4 5 6
r =
0 0 0 0 0
За m n ,
H (s) е позната како права (proper) рационална функција, а за
m n функцијата H (s) е позната како неправа (improper) рационална
функција.
Ако се означат корените на полиномот во именителот со p1, p2 , ..., pn
тогаш именителот A(s) може да се запише во факторизирана форма:
As an s p1 s p2 ...s pn , (2)
H s
K1 K2 Kk Kn
... ... , (4)
s p1 s p2 s pk s pn
каде константите K k се нарекуваат резидиуми (остатоци) кои може да бидат
пресметани со командата residue:
[k,p]=residue(b,a)
која ги пресметува резидијумите: k [ K1, K 2 , ..., K n ] и корените на
карактеристичниот полином p [ p1, p2 , ..., pn ] .
Пример 6.1.3:
s2
H ( s)
s 4s 2 3s
3
>> b = [1 2];
>> a = [1 4 3 0];
>> [k,p] = residue(b,a)
k=
-0.1667
-0.5000
0.6667
p=
-3
-1
0
1 1 2
0.1667 0.5000 0.6667
H ( s) 6 2 3
s (3) s (1) s0 s 3 s 1 s
k=
-1.5000 + 2.0000i
-1.5000 - 2.0000i
4.0000
174 MATLAB/SIMULINK – упатство за вежби
p=
-1.0000 + 1.0000i
-1.0000 - 1.0000i
-1.0000
1.5 j 2 1.5 j 2 4
H (s)
s 1 j s 1 j s 1
B( s)
H ( s)
A( s)
може да се изрази како
Kp K p 1
H s
K1 K2 Kn
... ... ..... , (5)
s p1 ( s p1 ) 2
( s pk ) p s p p 1 s pn
Пример 6.1.4:
5s 1
H ( s)
s 3s 2
3
>> b = [5 -1];
>> a = [1 0 -3 -2];
>> [k,p] = residue(b,a)
k=
1.0000
-1.0000
2.0000
p=
2.0000
-1.0000
-1.0000
1 1 2
H ( s)
s 2 s 1 ( s 1) 2
MATLAB/SIMULINK – упатство за вежби 175
Пример 6.1.5.:
s 3 2s 4
H (s)
s 2 4s 2
>> b = [1 0 2 -4];
>> a = [1 4 -2];
>> [k,p,q] = residue(b,a)
k=
20.6145
-0.6145
p=
-4.4495
0.4495
q=
1 -4
20.6145 0.6145
H ( s) s 4
s 4.4495 s 0.4495
176 MATLAB/SIMULINK – упатство за вежби
b=
1.0 0.0 2.0 -4.0
a=
1.0 4.0 -2.0
s 3 2s 4
H ( s)
s 2 4s 2
MATLAB/SIMULINK – упатство за вежби 177
Пример 6.2.1:
Да се одреди Лапласовата трансформација од следниве функции:
x e2t , x a sin(t ), x a sin(t ) b cos(t )
__________________
% Laplace_1.m
clear; pack; clc
syms x t
x = exp(-2*t);
X = laplace(x)
Одговор на Матлаб:
X=
1/(s+2)
___________________
% Laplace_2.m
clear; pack; clc
syms x t a w
x = a*sin(w*t);
X = laplace(x)
X=
a*w/(s^2+w^2)
__________________
% Laplace_3.m
clear; pack; clc
syms x t a b w
x = a*sin(w*t)+b*cos(w*t);
X = laplace(x)
X=
a*w/(s^2+w^2)+b*s/(s^2+w^2)
178 MATLAB/SIMULINK – упатство за вежби
6.2.2 Функција tf
Континуални системи:
форма: G=tf(num,den)
аргументи: num – вектор на коефициентите на полиномот во броителот на
преносната функција G(s) ;
den – вектор на коефициентите на полиномот во именителот
на преносната функција G(s)
Пример 6.2.2.
2s 3
Преносната функција G( s) во Матлаб се презентира како:
s 4s 1
2
Пример 6.2.3.
5s
Преносната функција G ( s ) во Матлаб може да се презентира се
s 2
2
презентира како:
>> num=[5 0]; den=[1 0 2];
>> G=tf(num,den)
Матлаб одговара на ист начин:
Transfer function:
5s
-------
s^2 + 2
Дискретни системи:
форма: G=tf(num,den,Тѕ)
аргументи: num – вектор на коефициентите на полиномот во броителот на
преносната функција G(z ) ;
den – вектор на коефициентите на полиномот во именителот
на преносната функција G(z )
Тѕ – периода на одбирање
MATLAB/SIMULINK – упатство за вежби 179
Пример 6.2.4.
1
Преносната функција G ( z ) во Матлаб се презентира
z 0.2 z 0.2
2
како:
>> G=tf([1],[1 -0.2 0.2], 2)
Матлаб одговара со:
Transfer function:
1
-----------------
z^2 - 0.2 z + 0.2
Sampling time: 2
Пример 6.2.5.
z2
Преносната функција G ( z ) во Матлаб може да се презентира и
z
како:
>> num = [1 2]; den = [1 0]; Ts=1;
>> G = tf(num, den,Ts)
Матлаб одговара со:
Transfer function:
z+2
-----
z
Sampling time: 1
Континуални системи
форма: s=tf(„s‟); G=(bm*s^m+…+b1*s+b0)/(an*s^n+…+a1*s+a0);
Пример 6.2.6.
2s 3
Преносната функција G( s) во Матлаб се презентира како:
s 4s 1
2
>> s=tf('s');
>> G=(2*s+3)/(s^2+4*s+1)
Матлаб одговара со:
Transfer function:
2s+3
-------------
s^2 + 4 s + 1
180 MATLAB/SIMULINK – упатство за вежби
Дискретни системи
Пример 6.2.6.
z 1
Преносната функција G ( s) во Матлаб се презентира
z 0.2 z 0.2
2
како:
>> z=tf('z',1);
>> G=(z+1)/(z^2-0.2*z+0.2)
Матлаб одговара со:
Transfer function:
z+1
-----------------
z^2 - 0.2 z + 0.2
x
y 1 0 1
x2
Matlab интерпретација на горните равенки:
a=
x1 x2
x1 -1 2
x2 0 -1
b=
u1
x1 0
x2 1
c=
x1 x2
y1 1 0
Пример 6.2.8
Дадена е преносната функција:
2s 3 3
G(s) ; полови: p1,2 2 3 ; нули: z1 1.5
s 4s 1
2 2
Одредување на нулите и половите во МАТЛАБ:
>> s=tf('s');
>> G=(2*s+3)/(s^2+4*s+1);
>> p=pole(G)
>> z=zero(G)
Одговорот на МАТЛАБ е:
p=
-3.7321
-0.2679
z=
-1.5000
182 MATLAB/SIMULINK – упатство за вежби
Пример 6.3.1:
Електричното коло на Сл.6.3.1 е опишано со следниве равенки во
матрична форма:
1
x1 (t ) 0 C x1 (t ) 0
x (t ) 1 R x (t ) 1 u (t ) (1)
2 2 L
L L
x (t )
y (t ) 1 0 1 ,
x2 (t )
каде варијаблите на состојба се: x1 (t ) U C (t ) - напон на кондензаторот и
x2 (t ) i(t ) - струјаја во колото, а како излез е земен напонот на кондензаторот:
y(t ) uc (t ) x1 (t ) )
Компактната матрична форма на записот на равенките (1) е:
MATLAB/SIMULINK – упатство за вежби 183
x (t ) Ax(t ) Bu (t ) (2)
y (t ) Cx(t ) Du (t )
каде матриците на системот A , B , C и D се одредени со:
1
0 0 0
A C 0 1000 , B 1 , C [1 0], D [0] . (3)
R
10 10
1
L
10
L L
i (t ) U c (t )
DC U (t ) C
Пример 6.3.2:
За системот опишан со преносна функција
1
G( s) (1)
s 2s 1
2
Пример 6.3.3:
% Primer 6.3.3
% File: mt_p63_03_initial.m
A=[-1 2;0 -1]; B=[0;1];
C=[1 0]; D=[0];
impulse(A,B,C,D), grid;
Пример 6.3.4
% Primer 6.3.4
% File: mt_p63_04_initial.m
% Elektricno kolo - odziv na impuls
% File: elsist_2_impulse.m
A=[0 1000;-10 -40]; B=[0;10]; C=[1 0]; D=[0];
sys=ss(A,B,C,D);
impulse(sys), grid
Пример 6.3.5.
Импулсeн одзив на МИМО систем:
% Primer 6.3.5 MIMO sistem - odziv na impuls
% File: mt_p63_05_MIMO_sistem_1_impulse.m
A=[-3 1; 1 -3];
B=[1 2; 2 1];
C=[1 0; 0 1];
D=[0 0; 0 0];
sys=ss(A,B,C,D);
impulse(sys), grid
Пример 6.3.6:
Краткопериодичната динамика на движењето на авион во вертикалната
рамнина се опишува со следниов модел (R.Nelson: Flight Srtability and Automatic
Control, Second Edition, page 369):
a) b)
Сл.6.3.7. Одзив на импулс на системот-авионот од примерот 6.3.6
Пример 6.3.7
Нека е системот опишан со преносна функција:
s 1
G( s) .
s s 1
2
Пример 6.3.9
s 1
Нека е зададена преносната функција G ( s ) . Следниов фајл е
s s 1
2
Пример 6.3.10.
Нека е системот опишан со преносната функција
Y ( s) s 1
G( s) 2 (1)
U ( s) s s 1
и нека на влезот делува сигнал како на Сл.6.3.11.
Потребно е да се одреди одзивот на системот на оваа побуда. На графот да
се нацртаат и побудниот сигнал u(t) и одзивот y(t).
U(t)
1
0 20 40 60 80 100 t
-1
% Primer 6.3.10.
% Odziv na proizvolna pobuda
% File: mt_p63_10_lsim_1.m
%
s=tf('s');
G=(s+1)/(s^2+s+1);
t=0:0.1:100;
for i=1:length(t)
u(i)=0;
if (t(i)>=20)&(t(i)<40)
u(i)=1;
end
if (t(i)>=60)&(t(i)<80)
u(i)=-1;
end
end
y=lsim(G,u,t);
Сл.6.3.12. Одзив на побуда како на Сл.6.3.11
plot(t,u,'b'),grid; hold on;
plot(t,y,'r'); hold off;
На Сл.6.3.12 со плава боја е прикажан влезот на системот со преносна
функција (1) , а со црвената неговиот излез.
MATLAB/SIMULINK – упатство за вежби 191
Пример 6.3.12
Да се одреди одзивот на авион чија динамика е опишана во просторот на
состојба со равенките:
y1 1 0 0
y 0 1 q 0 m
2
каде векторот на состојба го чинат нападниот агол на авионот x1 и аголната
брзина на извишување x2 q . Моделот има еден влез – отклонот на кормилото
за висина u m . Отклонот на кормилото се менува како во претходниот
пример, Пример 6.3.8 (Сл.6.3.9), со тоа што амлитудата на овој сигнал изнесува 0.1
радијан.
m – file:
% Primer 6.3.12
% Model na avion - odziv na proizvolen signal
% File: mt_63_12_lsim_2_avion.m
%
% Matrici na sistemot
A=[-0.334 1.0; -2.52 -0.387]; B=[-0.027; -2.6];
C=[1 0; 0 1]; D=[0; 0];
%
% Vrema za simulacija
t=0:0.1:100;
%
% pocetni uslovi
x0=[0 0];
%
% Generiranje na vlezniot signal
for i=1:length(t)
u(i)=0;
if (t(i)>=20)&(t(i)<40)
u(i)=0.1;
end
if (t(i)>=60)&(t(i)<80)
u(i)=-0.1;
end
end
% Simulacija
[y,x] = lsim(A,B,C,D,u,t,x0); % ili sys=ss(A,B,C,D); [y,x] = lsim(sys,u,t,x0)
% Zna;ewe na varijablite:
alfa = x(:,1); % napaden agol
q = x(:,2); % agolna brzina na izvisuvanje
MATLAB/SIMULINK – упатство за вежби 193
Форма: bode(G)
Аргументи: G е LTI модел на системот генериран со функцијата tf или
со функцијата ss
Пример 6.4.1
Даден е систем со преносна функција:
1000( s 1)
G( s) (1)
( s 0.1)(s 100)
Функцијата bode(G) ja генерира сликата на Сл.6.4.1, со помош на следниот m-фајл:
% Primer 6.4.01
% Frekvenciski karaktristiki na LTI sistemi
% File: mt_p64_01_bode_1.m
%
% Prensna funkcija na sistemot
s=tf('s');
G=1000*(s+1)/((s+0.1)*(s+100));
bode(G), grid
Пример 6.4.3
Бодеов дијаграм кога се зададени полиномите во броителот и именителот
на преносната функција – наредба bode(num,den).
% Primer 6.4.3
% Bode dijagram so komandata bode(num,den)
% File: mt_p64_03_bode_num_den.m
%
clc
clear all
clf
num=10;
den=[1 5 5 0];
bode(num,den);
grid;
Пример 6.4.4
Бодеов дијаграм кога се зададени полиномите во броителот и именителот
на преносната функција и кога посебно се дефинира опсегот на фреквенцијата:
наредба bode(num,den,w).
% Primer 6.4.4
% Bode dijagram so komandata bode(num,den,w)
% File: mt_p64_04_bode_num_den_w.m
MATLAB/SIMULINK – упатство за вежби 197
%
clc
clear all
clf
num=10;
den=[1 5 5 0];
w=logspace(-1, 4, 100);
bode(num,den,w);
grid;
Gm_dB = 20*log10(Gm)
198 MATLAB/SIMULINK – упатство за вежби
Пример 6.4.5
Ако преносната функција на отворениот систем е дадена со преносната
функција од претходните примери, G=10/(s^3+5*s^2+5*s), да се одреди амлитуд-
ното и фазното осигурување и содветните пресечни фреквенции.
М.фајл:
% Primer 6.4.5
% Odreduvanje na amplitudnoto i faznoto osiguruvanje
% File: mt_p64_05_margin_num_den.m
clc
clear all
clf
num=10;
den=[1 5 5 0];
margin(num,den);
grid;
R(s ) E (s ) num Y (s )
K G(s)
den
Пример 6.5.1
% Primer 6.5.1
% Geometrisko mesto na
% korenite GMK (root locus)
% File: mt_p65_01_rlocus_1.m
%
clc
clear all
clf
num=1;
den=[1 5 5 0];
rlocus(num,den);
Пример 6.5.2
Дефинирање на промената на засилувањето од 0 до 100.
% Primer 6.5.2
% Geometrisko mesto na
% korenite GMK (root locus)
% File: mt_p65_02_rlocus_2.m
%
clc
clear all
clf
K=0:1:100;
num=1;
den=[1 5 5 0];
rlocus(num,den,K);
Сл.6.5.3 ГМК за системот на Сл.6.5.1 за К=0:1:100
Пример 6.5.3
Дефинирање на промената на засилувањето К по сегменти
% Primer 6.5.3
% Geometrisko mesto na
% korenite GMK (root locus)
% File: mt_p65_03_rlocus_3.m
%
clc
clear all
clf
k1=0:2:10;
k2=11:0.5:90;
k3=91:10:500;
K=[k1 k2 k3];
num=1;
den=[1 5 5 0]; Сл.6.5.3 ГМК за системот на Сл.6.5.1 при
rlocus(num,den,K); промена на К по сегменти со различен чекор
MATLAB/SIMULINK – упатство за вежби 203
The following list of commands can be very useful for future reference. Use "help" in
Matlab for more information on how to use the commands.
In these tutorials, we use commands both from Matlab and from the Control Systems
Toolbox, as well as some commands/functions which we wrote ourselves. For those
commands/functions which are not standard in Matlab, we give links to their
descriptions. For more information on writing Matlab functions, see the function page.
Note:Matlab commands from the control system toolbox are highlighted in red.
Non-standard Matlab commands are highlighted in green.
Command Description
abs Absolute value
acker Compute the K matrix to place the poles of A-BK, see also place
axis Set the scale of the current plot, see also plot, figure
bode Draw the Bode plot, see also logspace, margin, nyquist1
c2dm Continuous system to discrete system
clf Clear figure (use clg in Matlab 3.5)
conv Convolution (useful for multiplying polynomials), see also deconv
ctrb The controllability matrix, see also obsv
deconv Deconvolution and polynomial division, see also conv
det Find the determinant of a matrix
dimpulse Impulse response of discrete-time linear systems, see also dstep
Linear-quadratic requlator design for discrete-time systems, see also
dlqr
lqr
dlsim Simulation of discrete-time linear systems, see also lsim
dstep Step response of discrete-time linear systems, see also stairs
eig Compute the eigenvalues of a matrix
eps Matlab's numerical tolerance
feedback Feedback connection of two systems.
figure Create a new figure or redefine the current figure, see also subplot, axis
for For, next loop
format Number format (significant digits, exponents)
function Creates function m-files
grid Draw the grid lines on the current plot
gtext Add a piece of text to the current plot, see also text
204 MATLAB/SIMULINK – упатство за вежби
help HELP!
hold Hold the current graph, see also figure
if Conditionally execute statements
imag Returns the imaginary part of a complex number, see also real
Impulse response of continuous-time linear systems, see also step,
impulse
lsim, dlsim
input Prompt for user input
inv Find the inverse of a matrix
Generate grid lines of constant damping ratio (zeta) and settling
jgrid time (sigma), see also sgrid, sigrid, zgrid
legend Graph legend
length Length of a vector, see also size
linspace Returns a linearly spaced vector
lnyquist1 Produce a Nyquist plot on a logarithmic scale, see also nyquist1
log natural logarithm, also log10: common logarithm
loglog Plot using log-log scale, also semilogx/semilogy
logspace Returns a logarithmically spaced vector
Linear quadratic regulator design for continuous systems, see also
lqr
dlqr
lsim Simulate a linear system, see also step, impulse, dlsim.
Returns the gain margin, phase margin, and crossover frequencies, see
margin
also bode
norm Norm of a vector
Draw the Nyquist plot, see also lnyquist1. Note this command was
nyquist1 written to replace the Matlab standard command nyquist to get
more accurate Nyquist plots.
obsv The observability matrix, see also ctrb
ones Returns a vector or matrix of ones, see also zeros
place Compute the K matrix to place the poles of A-BK, see also acker
plot Draw a plot, see also figure, axis, subplot.
poly Returns the characteristic polynomial
polyadd Add two different polynomials
polyval Polynomial evaluation
print Print the current plot (to a printer or postscript file)
pzmap Pole-zero map of linear systems
rank Find the number of linearly independent rows or columns of a matrix
MATLAB/SIMULINK – упатство за вежби 205
real Returns the real part of a complex number, see also imag
rlocfind Find the value of k and the poles at the selected point
rlocus Draw the root locus
roots Find the roots of a polynomial
rscale Find the scale factor for a full-state feedback system
Set(gca,'Xtick',xticks,'Ytick',yticks) to control the number and spacing of
set
tick marks on the axes
series Series interconnection of Linear time-independent systems
Generate grid lines of constant damping ratio (zeta) and natural
sgrid
frequency (Wn), see also jgrid, sigrid, zgrid
Generate grid lines of constant settling time (sigma), see also jgrid, sgrid,
sigrid zgrid
size Gives the dimension of a vector or matrix, see also length
sqrt Square root
Create state-space models or convert LTI model to state space, see
ss
also tf
ss2tf State-space to transfer function representation, see also tf2ss
ss2zp State-space to pole-zero representation, see also zp2ss
stairs Stairstep plot for discreste response, see also dstep
step Plot the step response, see also impulse, lsim, dlsim.
subplot Divide the plot window up into pieces, see also plot, figure
text Add a piece of text to the current plot, see also title, xlabel, ylabel, gtext
Creation of transfer functions or conversion to transfer function, see
tf
also ss
tf2ss Transfer function to state-space representation, see also ss2tf
tf2zp Transfer function to Pole-zero representation, see also zp2tf
title Add a title to the current plot
Returns the bandwidth frequency given the damping ratio and the rise or
wbw settling time.
Add a label to the horizontal/vertical axis of the current plot, see also
xlabel/ylabel
title, text, gtext
zeros Returns a vector or matrix of zeros
Generates grid lines of constant damping ratio (zeta) and natural
zgrid
frequency (Wn), see also sgrid, jgrid, sigrid
zp2ss Pole-zero to state-space representation, see also ss2zp
zp2tf Pole-zero to transfer function representation, see also tf2zp
206 MATLAB/SIMULINK – упатство за вежби
7. ЛИТЕРАТУРА
1. The MathWorks, Inc. MATLAB, Using MATLAB, Natick, 1999.
2. The MathWorks, Inc. MATLAB, Using MATLAB Graphics, Natick, 1999.
3. Matlab na straneh podjetja MathWorks,
http://www.mathworks.com/products/matlab/
4. M. Saje, D. Zupan, Kinematika in dinamika, http://www.km.fgg.uni-
lj.si/predmeti/KiD/KD.htm
5. MATLAB Educational Sites, http://www.eece.maine.edu/mm/matweb.html
6. University of New Hampshire: MATLAB-tutorial,
http://spicerack.sr.unh.edu/˜mathadm/tutorial/software/matlab/
7. University of Florida: MATLAB Tutorial, http://www.math.ufl.edu/help/matlab-
tutorial/
8. Jordanovski, Lj. Osnovi na MATLAB so primeri, upatstvo, PMF Skopje
9. L. Kalašan, M. Petkovska: MATLAB i dodatni moduli „ Controls Szstem Toolbox
and Simulink, Verzija 4.2. za Windows, Beograd,
10. Hadi Saadat: Computational Aids in Control Systems Using Matlab, McGraw-Hill,
Inc. New York, 1993.
11. Hadi Saadat: Power System Analysis, Second edition, McGraw-Hll Primis, New
York, 2002.
12. Delores M. Etter: Engineering Problem Solving with Matlab, Second Edition,
Prentice Hall, Inc, New Jersey, 1993.
13. Norman S. Nise: Control Systems Engineering, Third Edition, John Wiley and
Sons, Inc, New York, 2000.
14. Richard C. Dorf, Robert H. Bishop: Modern Control Systems, Ninth Edition,
Prentice Hall Inc. 2001.
15. Robert H. Bishop: Modern Control Systems Analisys and Design Using MATLAB,
Addison – Weley Publishing Company, New York, 1993.
16. Robert H. Bishop: Modern Control Systems Analisys and Design Using MATLAB
and SIMULINK, Addison – Weley Longman, Inc. Menlo Park, California, 1997.
17. SIMULINK – Dynamic System Simulation for MATLAB – Using SIMULINK
Version 3, The Math Works, Inc. 1999. (http://www.mathworks.com )
18. Control Tutorials for Matlab, Carnegie Melon, University of Michigan,
http://www.engin.umich.edu/group/ctm/
19. Десковски, С.: Системи на автоматско управување, предавања во учебната
2006/2007, ФЕИТ, Скопје, 2007..
20. Stojić, M.: Sistemi automatskog upravljanja, Elektronski fakultet, Niš, 2004.
21. Vukić Z., Kuljača Lj.: Automatsko upravljanje - analiza linearnih sustava,
Kigen d.o.o. Zagreb. 2005.
MATLAB/SIMULINK – упатство за вежби 207
8. П Р И Л О З И
MatLab-от, како и секој друг програм има богата информациона база за сите
вградени функции која се повикува со наредбата help, при што за секоја функција
постои и кратко објаснување на нејзината примена.
help
HELP topics:
matlab\general - General purpose commands.
matlab\ops - Operators and special characters.
matlab\lang - Programming language constructs.
matlab\elmat - Elementary matrices and matrix manipulation.
matlab\elfun - Elementary math functions.
matlab\specfun - Specialized math functions.
matlab\matfun - Matrix functions - numerical linear algebra.
matlab\datafun - Data analysis and Fourier transforms.
matlab\polyfun - Interpolation and polynomials.
matlab\funfun - Function functions and ODE solvers.
matlab\sparfun - Sparse matrices.
matlab\graph2d - Two dimensional graphs.
matlab\graph3d - Three dimensional graphs.
matlab\specgraph - Specialized graphs.
matlab\graphics - Handle Graphics.
matlab\uitools - Graphical user interface tools.
matlab\strfun - Character strings.
matlab\iofun - File input/output.
matlab\timefun - Time and dates.
matlab\datatypes - Data types and structures.
matlab\winfun - Windows Operating System Interface Files DDE/ActiveX)
matlab\demos - Examples and demonstrations.
help general
General information
help - On-line help, display text at command line.
helpwin - On-line help, separate window for navigation.
helpdesk - Comprehensive hypertext documentation and roubleshooting.
demo - Run demonstrations.
ver - MATLAB, SIMULINK, and toolbox version information.
208 MATLAB/SIMULINK – упатство за вежби
help elmat
Elementary matrices.
zeros - Zeros array.
ones - Ones array.
eye - Identity matrix.
repmat - Replicate and tile array.
rand - Uniformly distributed random numbers.
randn - Normally distributed random numbers.
linspace - Linearly spaced vector.
logspace - Logarithmically spaced vector.
meshgrid - X and Y arrays for 3-D plots.
: - Regularly spaced vector and index into matrix.
Matrix manipulation.
reshape - Change size.
diag - Diagonal matrices and diagonals of matrix.
tril - Extract lower triangular part.
triu - Extract upper triangular part.
fliplr - Flip matrix in left/right direction.
flipud - Flip matrix in up/down direction.
flipdim - Flip matrix along specified dimension.
rot90 - Rotate matrix 90 degrees.
: - Regularly spaced vector and index into matrix.
find - Find indices of nonzero elements.
end - Last index.
sub2ind - Linear index from multiple subscripts.
ind2sub - Multiple subscripts from linear index.
pi - 3.1415926535897....
i, j - Imaginary unit.
inf - Infinity.
NaN - Not-a-Number.
isnan - True for Not-a-Number.
isinf - True for infinite elements.
isfinite - True for finite elements.
flops - Floating point operation count.
why - Succinct answer.
Specialized matrices.
compan - Companion matrix.
gallery - Higham test matrices.
hadamard - Hadamard matrix.
hankel - Hankel matrix.
hilb - Hilbert matrix.
invhilb - Inverse Hilbert matrix.
magic - Magic square.
pascal - Pascal matrix.
rosser - Classic symmetric eigenvalue test problem.
toeplitz - Toeplitz matrix.
vander - Vandermonde matrix.
wilkinson - Wilkinson's eigenvalue test matrix.
help isnumeric
help find