MATLAB ÖÙNG DUÏNG THIEÁT KEÁ ÑIEÀU KHIEÅN ïc...

Preview:

Citation preview

MATLAB ÖÙNG DUÏNG

THIEÁT KEÁ –ÑIEÀU KHIEÅN

Th.S Nguyeãn Taán Phuùc.

Email: phucnt@hcmuaf.edu.vn

Tel:0126.7102772.

Fb: gv dhnl phuctannguyen

TAØI LIEÄU HOÏC TAÄP

1.SLIDE BAØI GIAÛNG .

2.SAÙCH MATLAB CÔ SÔÛ.

ÑAÙNH GIAÙ HK HEØÙ

1.Thöïc haønh Treân lôùp : 10%.

2. kiểm tra : 10%.

2.Thi cuoái kyø : 80%.

Thôøi gian : 19/7 - 10/8/2016.

NỘI DUNG

PHẦN I: MATLAB CĂN BẢN.

PHẦN II: LẬP TRÌNH TRONG

MATLAB.

PHẦN III: GUIDE TRONG MATLAB -

ỨNG DỤNG TRONG ĐIỀU KHIỂN.

PHẦN I- MATLAB

CAÊN BAÛN

MATLAB CAÊN BAÛN

I. BIEÅU THÖÙC (EXPRESSION)

Bieán soá ( variables)

Soá (Numbers)

Toaùn töû ( Operaters)

Haøm ( Functions)

- toái ña 19 kyù töï coù nghóa

- phaân bieät giöõa chöõ hoa vaø chöõ thöôøng.

- baét ñaàu baèng moät töø theo sau laø töø hay soá

hoaëc daáu (_).

- bieán toøan cuïc (global) taùc duïng trong

toøan chöông trình.

- bieán cuïc boä (local) taùc duïng trong noäi taïi

haøm (function)

- moät soá bieán ñaëc bieät: pi, ans,…

Bieán (Variables)

Kieåm tra bieán (who vaø whos)

Xoùa bieán (clear vaø clear all)

DATA TYPES

Int8,uint8,int16,int32…số nguyeân interger.

Single,double: kiểu số thực.

Logical: kieåu true,false.

Char: kieåu kyù töï.

String: kieåu kyù töï.

Array: a(1),a(0),….

Ví duï:

Str=‘hello world’;

Str(2)=‘ e’.

DATA TYPES CONVERSION

Char(): chuyeån sang kieåu kyù töï.

Int2str(): chuyeån soá sang chuoãi.

Num2str(): chuyeån integer sang chuoãi

Str2num(): chuoåi sang soá.

Num2bin(): soá sang maõ nhò phaân.

Dec2bin(): chuyeån soá sang nhò phaân

Ischar(): kieåm tra phaûi kyù töï.

Isinteger():kiem tra so nguyen

Islogical():kiem tra bien logic.

Matlab command

Clc: xoùa maøn hình.

Clear all: xoùa taát caû caùc bieán.

Global: khai baùo bieán toaøn cuïc.

Quit: thoaùt matlab.

Who: lieät keâ taát caû bieán hieän coù

Whos: lieät keâ bieán , kieåu bieán.

INPUT, OUTPUT COMMAND

Disp: hieån thò ra comand matlab.

Input: nhaän döõ lieäu töø command matlab.

sprintf: dinh dang chuoi xuat ra man hinh.

Format : dinh dang döõ lieäu .

Caùc kieåu döõ lieäu format:

Short,long,short e,long e,rat…

MATLAB CAÊN BAÛN

1. Soá (Numbers)

format (ñònh daïng)

Taát caû nhöõng con soá ñeàu ñöôïc löu kieåu ñònh daïng (format)

Duøng haøm format ñeå ñònh daïng kieåu soá:

>> b=3/26;

>> format long; b

b =

0.11538461538462

>> format short e; b

b =

1.1538e-001

>> format bank; b

b =

0.12

>> format short eng; b

b =

115.3846e-003

>> format hex; b

b =

3fbd89d89d89d89e

>> format +; b

b =

+

>> format rat; b

b =

3/26

>> format short; b

b =

0.1154

>> format long eng; b

b =

115.384615384615e-003>>

MATLAB CAÊN BAÛN

2. Toaùn töû (operaters) (+, -, *, /, \,^,’)

Caùc bieán khoâng caàn khai baùo tröôùc.

Caùc kyù töï thöôøng vaø in laø phaân bieät.

Keát thuùc caâu leänh vôùi ‚;‛ khoâng hieån thò keát quûa caâu

leänh.

Bieán maëc nhieân ‚ans‛ .

Thứ tự tính toan nhu thong thuong:nhaân chia tröôùc ,

coäng tröø sau..

To¸n tö quan hÖ ý nghÜa

< Nhá h¬n vd A<B

> Lín h¬n vd A>B

<= Nhá h¬n hoÆc b»ng A<=B

>= Lín h¬n hoÆc b»ng A>=B

== B»ng vd A==B

~= Kh«ng b»ng vd A~=B

2. Toaùn töû (operaters) (+, -, *, /, \,^,’)

To¸n tö logic ý nghÜa

& Vµ vd A&B

| HoÆc vd A|B

~ §¶o vd ~A

Toaùn töû (operaters)

operator Miêu tả

+ Phép cộng

- Trừ

* nhân

.* Nhân ma trận

/ chia

./ Chia phải 2 ma trận

^ Lũy thừa

.^ Lũy thừa ma trận

‘ Tranpose

operators

MATLAB CAÊN BAÛN

3. Haøm cô baûn (basis functions) abs, sqrt, exp, sin,…

Tên hàm ý nghĩa

Sin Hàm sin

Cos Hàm cos

Tan Hàm tan

Asin acsin

Acos accos

Atan arctg

Exp Hàm e mũ

Log Logarit co so e

log10 Logarit co so 10

sqrt(x) Can bac 2

MA TRAÄN TRONG MATLAB

Cách Khai báo ma trận:

A=[2 3;4 5];

B=[2 3 4;4 5 6;6 7 8].

‚;‛ coù nghóa laø chuyeån sang haøng keá tieáp.

‚,‛ hay ‚ ‚ phaân caùch giöõa caùc phaàn töû.

>> t = 1:5

t =

1 2 3 4 5

>> row = A(1,:)

row =

1 2 3

>> col = A(:,1)

col =

1

4

7

>> 1: 0.3:2

ans =

1 1.3000 1.6000 1.9000

MA TRAÄN TRONG MATLAB

Pheùp tính Chuù thích

+, - Coäng hoaëc tröø hai ma traän cuøng kích thöôùc

A*B Nhaân hai ma traän A vaø B

A/B Chia hai ma traän (chia phaûi) A vaø B

A\B Chia traùi hai ma traän B vaø A

A.*B Nhaân töøng phaàn töû cuûa hai ma traän A vaø B

A./B Chia töøng phaàn töû cuûa hai ma traän A vaø B

A.\B Chia töøng phaàn töû cuûa hai ma traän B vaø A

.^ Muõ cho töøng phaàn töû cuûa maûng

>> A=[1 2 3;4 5 6;7 8 9]

A =

1 2 3

4 5 6

7 8 9

>> A(2,3)=10

A =

1 2 3

4 5 10

7 8 9

>> B=A(2,1)

B =

4

>> C=[-4 2 3;1 2 1;2 5 6]

C =

-4 2 3

1 2 1

2 5 6

>> D=[A C]

D =

1 2 3 -4 2 3

4 5 10 1 2 1

7 8 9 2 5 6

>> D(5)

ans =

5

>> D(4,5)

??? Index exceeds matrix dimensions.

>> X=D

X =

1 2 3 -4 2 3

4 5 10 1 2 1

7 8 9 2 5 6

>> X(2,6)

ans =

1

>> X(2,:)

ans =

4 5 10 1 2 1

MA TRAÄN TRONG MATLAB

ÑOÀ HOÏA TRONG MATLAB

Ñoà hoïa trong Matlab

Caây thö muïc quaûn lyù ñoái töôïng trong Matlab:

Uicontrol Uimenu Uicontextmenu

Image Light Line Patch Text Surface Rectangle

Figure

Axes

Böôùc MATLAB code

1. Chuaån bò döõ lieäu X= 0:0.1:2*pi;

Y= sin(X)=f(x).

2. Choïn cöûa soå vaø vò trí cuûa ñoái

töôïng ñoà hoïa trong cöûa soå.

figure(‘Name’,’Hinh sine’);

subplot(2,2,1);

3. Goïi haøm veõ ñoà thò h = plot(X,Y);

4. Xaùc ñònh thuoäc tính cho hình

nhö kieåu ñöôøng, maøu saéc, …

set(h, ‘LineStyle’,’-

‘,’Color’,’r’)

5. Xaùc ñònh caùc thuoäc tính cuûa axis,

axes, löôùi veõ, …

axis([-1 6 -1.2 1.2]);

grid on;

6. Chuù thích cho ñoà thò: labels,

legend, text, …

xlabel(‘X’);

ylabel(‘Y=SIN(X)’);

title(‘Ñoà thò hình sine’);

7. Xuaát keát quaû

ÑOÀ HOÏA TRONG MATLAB

Caùc leänh veõ cô baûn:

Teân haøm Moâ taû haøm

plot Veõ döõ lieäu 2D vôùi tæ leä tuyeán tính cho caùc truïc toïa ñoä

plot3 Veõ döõ lieäu 3D vôùi tæ leä tuyeán tính cho caùc truïc toïa ñoä

line Veõ ñöôøng thaúng ñi qua caùc ñieåm döõ lieäu

loglog Veõ vôùi tæ leä logarithmic cho caùc truïc toïa ñoä

semilogx Veõ vôùi tæ leä logarithmic cho truïc x vaø tæ leä tuyeán tính cho

truïc y

semilogy Veõ vôùi tæ leä logarithmic cho truïc y vaø tæ leä tuyeán tính cho

truïc x

plotyy Veõ ñoà thò vôùi truïc y ôû beân traùi vaø beân phaûi

ÑOÀ HOÏA TRONG MATLAB

Leänh plot

Cuù phaùp Moâ taû

plot(Y)

Veõ ñoà thò vôùi hoaønh ñoä laø chæ soá

cuûa phaàn töû, tung ñoä laø giaù trò cuûa

phaàn töû töông öùng

plot(X1,Y1,...)

Veõ ñoà thò baèng caùch söû duïng caùc

ñöôøng thaúng noái töøng caëp döõ lieäu

X1(i) vaø Y1(i)

plot(X1,Y1,LineSpec,...) Veõ ñoà thò vaø ñònh tính chaát cho taát

caû caùc ñöôøng thaúng

plot(...,'PropertyName',PropertyValue,...) Veõ coù ñònh tính chaát cho caùc ñoái

töôïng

h = plot(...) Traû veà giaù trò quaûn lyù ñoái töôïng veõ

ÑOÀ HOÏA TRONG MATLAB

t = 0:pi/100:2*pi;

y = sin(t);

y2 = sin(t-0.25);

y3 = sin(t-0.5);

plot(t,y,'-',t,y2,'--',t,y3,':')

Kí hieäu Kieåu ñöôøng Ví duï

- solid line (Maëc

ñònh)

-- dashed line

: dotted line

-. dash-dot line

ÑOÀ HOÏA TRONG MATLAB

LineWidth: plot(X,Y,’LineWidth’,2)

Giaù trò

LineWidth

1 3 5

Hình

ÑOÀ HOÏA TRONG MATLAB

Color: plot(X,Y,’Color’,[0.1 0.5 0.7]), plot(X,Y,’Color’,’y’)

Caùch khai baùo giaù trò maøu cho ñoái töôïng trong Matlab

o Nhaäp giaù trò maøu RGB laø vector haøng 3 phaàn töû

o Nhaäp teân cuûa maøu

0 2 4 6 8 10 12 14 0

1

2

3

4

5

6

7

8

x = 0:pi/15:4*pi;

y1 = exp(2*cos(x));

y2 = exp(2*sin(x));

plot(x,y1,'-*r',x,y2,'-.og','linewidth',2)

ÑOÀ HOÏA TRONG MATLAB

Marker: plot(X,Y,’o’)

Moät soá loaïi Marker:

Kí hieäu YÙ nghóa

+ Daáu coäng

o Hình troøn

* Daáu hoa thò

. Ñieåm

x Daáu cheùo nhau

s Hình vuoâng

d Hình thoi

^ Tam giaùc treân

v Tam giaùc döôùi

> Tam giaùc beân phaûi

< Tam giaùc beân traùi

p Sao naêm caïnh

h Sao saùu caïnh

Kí hieäu YÙ nghóa

MarkerEdgeColor

Ñònh giaù trò maøu

cho ñöôøng vieàn

cuûa Marker

MarkerFaceColor

Ñònh giaù trò maøu

cho beà maët cuûa

Marker

MarkerSize Ñònh ñoä lôùn cho

Marker

0 2 4 6 8 10 12 14 0

1

2

3

4

5

6

7

8

x = 0:pi/15:4*pi; y = exp(2*cos(x));

plot(x,y,'r+')

ÑOÀ HOÏA TRONG MATLAB

Moät soá leänh phuï trôï trong ñoà hoïa

Leänh Giaù trò Moâ taû

grid on, off Baät hay taét löôùi veõ

hold on, off Giöõ laïi taát caû caùc ñoái

töôïng veõ

axes Taïo heä truïc toïa ñoä

axis [Xmin Xmax Ymin Ymax] Ñònh giaù trò giôùi haïn

cho caùc truïc toïa ñoä

Xlabel, Ylabel Chuoãi kí töï Ghi chuù caùc truïc toïa

ñoä

Legend Chuoãi kí töï Ghi chuù caùc döõ lieäu

Title Chuoãi kí töï Ñònh tieâu ñeà cho hình

veõ

cla Xoaù taát caû ñoái töôïng

treân axes

ÑOÀ HOÏA TRONG MATLAB

Leänh Line

Cuù phaùp Moâ taû

line(X,Y) Veõ ñoaïn thaúng ñi qua caùc

ñieåm döõ lieäu trong maët

phaúng OXY

line(X,Y,Z) Veõ ñoaïn thaúng ñi qua caùc

ñieåm döõ lieäu trong maët

phaúng OXYZ

line(X,Y,Z,'PropertyName',PropertyValue,...) Ñònh giaù trò cho caùc thuoäc

tính cuûa ñoái töôïng

h = line(...) Traû veà giaù trò cuûa bieán quaûn

lyù ñoái töôïng

ÑOÀ HOÏA TRONG MATLAB

Leänh Line

clear all; clc; close all;

t = 0:pi/20:2*pi;

hline1 = plot(t,sin(t),'g','LineWidth',2);

hline2 = line(t+.6,sin(t),'LineWidth',4,'Color',[.5 .2 .2]);

set(gca,'Children',[hline1 hline2])

0 1 2 3 4 5 6 7 -1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

ÑOÀ HOÏA TRONG MATLAB

PHẦN II- LAÄP

TRÌNH TRONG

MATLAB

LẬP TRÌNH VỚI MATLAB

Laäp trình vôùi Matlab

Scripts

Laø hình thöùc ñôn giaûn nhaát cuûa M-file, noù khoâng coù

thoâng soá vaøo vaø ra. Laø taäp hôïp caùc leänh vaø haøm cuûa

Matlab. Taát caû caùc bieán taïo ra trong Scripts ñeàu coù theå

söû duïng sau khi Scripts keát thuùc.

-----------------------------------------------------------------

M-file: vidu.m

x= 0:0.01:2*pi;

y=sin(x);

plot(x,y)

function

Laø Scripts tuy nhieân coù theâm ñoái soá vaøo (input

arguments) vaø ñoái soá ñaàu ra (output argument). Taát caû

caùc bieán hoaït ñoäng trong moät Workspace rieâng. Bieán

trong function chæ laø bieán cuïc boä.

-----------------------------------------------------------------

M-file: doido.m

function rad = doido(do)

rad=do*pi/180;

Matlab cho pheùp laäp trình theo hai hình thöùc: SCRIPTS vaø function

MATLAB CAÊN BAÛN

8. Laäp trình vôùi Matlab

Hình thöùc khai baùo haøm

- Töø khoaù function baét buoäc phaûi khai baùo.

- Thoâng soá ñaàu ra: neáu coù nhieàu giaù trò traû veà, caùc thoâng soá naøy ñöôïc ñaët trong

daáu ‚[ ]‛. Neáu khoâng coù giaù trò traû veà ta coù theå ñeå troáng hay ñeå daáu [].

- Teân haøm

-Thoâng soá ñaàu vaøo ñöôïc khai baùo trong daáu ()

- Bieán toaøn cuïc vaø ñòa phöông

Ví duï1 : laäp trình 1 haøm coäng , luu file cong.m de tinh

toång 2 soá.

function tong = cong(x,y)

Tong = x+y;

End.

Vidu 2: Lập hàm tính toán nhiều thông số đầu ra tính

công , tru ,nhan, chia cho 2 so x,y

Function [a,b,c,d]= pheptoan(x,y);

MATLAB CAÊN BAÛN

8. Caáu truùc ñieàu kieän

Caáu truùc ñieàu kieän: if

if (bieåu thöùc logic)

nhoùm leänh

end

if (bieåu thöùc logic)

nhoùm leänh 1

else

nhoùm leänh 2

end

Toaùn töû YÙ nghóa

< Nhoû hôn

<= Nhoû hôn hoaëc baèng

> Lôùn hôn

>= Lôùn hôn hoaëc baèng

== Baèng nhau

~= Khoâng baèng

MATLAB CAÊN BAÛN

8. Caáu truùc ñieàu kieän

Caáu truùc ñieàu kieän: if…end

if (bieåu thöùc logic)

nhoùm leänh 1

elseif

nhoùm leänh 2

else

nhoùm leänh 3

end

Ví duï:

Tìm nghieäm phöông trình baäc 2 nhaäp vaøo a,b,c.

%tim nghiem phuong trinh bac 2

% lap trinh th.s nguyen tan phuc

a=input('nhap a ');

b=input('nhap b ');

c=input('nhap c ');

delta=b^2-4*a*c;

if delta<0

disp(' vo nghiem ');

elseif delta ==0

disp(' nghiem ');

disp(-b/(2*a));

else

disp(' nghiem 1 ');

disp((-b+sqrt(delta))/2);

disp(' nghiem 2 ');

disp((-b-sqrt(delta))/2);

end

MATLAB CAÊN BAÛN

8. Caáu truùc ñieàu kieän

Caáu truùc ñieàu kieän: switch … case

switch (bieåu thöùc ñieàu kieän)

case (giaù trò 1 bieåu thöùc)

nhoùm leänh 1

otherwise

nhoùm leänh 2

end

Ví duï: taïo moät menu löïa choïn

chon = input(‘Nhap vao lua chon cua ban, chon= ’)

Switch chon

case 1

disp(‘ menu ve do thi ’);

case 2

disp(‘ menu noi suy da thuc ’);

otherwise

disp(‘thoat khoi chuong trinh ’);

end

MATLAB CAÊN BAÛN

8. Caáu truùc laëp coù ñieàu kieän

Caáu truùc laëp coù ñieàu kieän: while

while (bieåu thöùc ñieàu kieän)

nhoùm leänh

end

Ví duï: yeâu caàu nhaäp vaøo giaù trò cho bieán x.

vieäc nhaäp chæ keát thuùc khi x coù giaù döông

a= input(‘Nhap vao gia tri a: ’)

while a<=0

disp(‘a lon hon khong ’);

a= input(‘Nhap vao gia tri a: ’)

end

Tính toång cuûa chuoãi:

% tính tong chuoi tu o den n..

n=input('nhap n ');

i=0;

tong=0;

while (i<=n)

tong=tong+1/(i^2+1);

i=i+1;

end

disp('tong ');

disp(tong);

MATLAB CAÊN BAÛN

9. Caáu truùc laëp

Caáu truùc laëp: for

for bieán = bieåu thöùc

nhoùm leänh

end

1.Vieát chöông trình nhaäp soá n vaø tính toång

töø 1 ñeán n.

2. Viết chương trình nhập vào n số, in ra số

lớn nhất, số bé nhất.

LÖnh break : T¸c dông ®iÒu khiÓn chương tr×nh nh¶y ra khái

vßng lÆp for.. hay while… gÇn nã nhÊt.

Continue: thực thi tiếp cac lệnh sau vong lặp.

Biến toàn cục : global x,y,z..có gi trị trong tất cả chương

trinh.

Lưu ý: các biến khai báo trong hàm chỉ có giá trị cục bộ trong

hàm ..

PHẦN III- TAÏO GIAO DIEÄN TRONG

MATLAB

---------

GUIDE IN MATLAB

1.MỞ PHẦN MỀM

Mở phần mềm, gõ lệnh sau vào command>>guide

Blank GUI (Default): Hộp thoại GUI trống không có điều khiển unicontrol

nào cả.

* GUI With Unicontol: Hộp thoại GUI với vài unicontrol như button,…,

chương trình có thể chạy ngay.

* GUI With Axes Menu: Hộp thoại với một unicontrol axse và button,

các menu để hiển thị đồ thị.

* Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No.

Create New GUI: Tạo một hộp thoại GUI mới:

Open Existing GUI: mở hộp thoại project có sẵn

• Push Button: giống như nút command button trong VB. Là các nút

bấm như nút OK,Cancel,..

Slider: Thanh trược có một con trược chạy trên đó.

Radio Button: Nút nhỏ hình tròn để lựa chọn (Options)

Các nút điều khiển khác:

Check Box, Edit Text, Static Text, Pop-up Menu, List Box, Axes, Panel,

Button Group, AtiveX Control, Toggle Button.

EDIT BOX

gán giá trị vào edit-box:

Set(handles.editbox,’string’, string )

Pop-up menu

SLIDER

AXES-FIGURE

BASIC GUIDE

MATLAB IN SERVO

CONTROLLERS

MATLAB IN ROBOT

CONTROLLERS

MATLAB IN ROBOT

CONTROLLERS

The end….