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

ÑAÙNH GIAÙ HK HEØÙ

1.SLIDE BAØI GIAÛNG . 2.SAÙCH MATLAB CÔ SÔÛ.

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)

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

 Bieán soá ( variables)  Soá (Numbers)  Toaùn töû ( Operaters)  Haøm ( Functions)

Bieán (Variables)

- 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,…

 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)

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á:

>> format +; b b = + >> format rat; b b = 3/26 >> format short; b b = 0.1154 >> format long eng; b b = 115.384615384615e-003>>

>> 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 (ñònh daïng)

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..

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

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

< Nhá h¬n vd A

> 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

To¸n tö logic

ý nghÜa

&

Vµ vd A&B

|

HoÆc vd A|B

~

§¶o vd ~A

Toaùn töû (operaters)

operators

operator Miêu tả

+ Phép cộng

*

nhân

- Trừ

.* Nhân ma trận

./

Chia phải 2 ma trận

/ chia

^ Lũy thừa

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

‘ Tranpose

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

 ‚;‛ coù nghóa laø chuyeån sang haøng keá tieáp.  ‚,‛ hay ‚ ‚ phaân caùch giöõa caùc phaàn töû.

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].

>> 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

MA TRAÄN TRONG MATLAB

>> 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

ÑOÀ HOÏA TRONG MATLAB

Ñoà hoïa trong Matlab

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

Figure

Axes Uicontrol Uimenu Uicontextmenu

Image Light Line Patch Rectangle Surface Text

ÑOÀ HOÏA TRONG MATLAB

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);

set(h, ‘LineStyle’,’- ‘,’Color’,’r’) 4. Xaùc ñònh thuoäc tính cho hình nhö kieåu ñöôøng, maøu saéc, …

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;

xlabel(‘X’); ylabel(‘Y=SIN(X)’); title(‘Ñoà thò hình sine’);

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

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

plot(Y)

Cuù phaùp Moâ taû

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,...)

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õ ñ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)

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,':')

Ví duï

Kí hieäu Kieåu ñöôøng -

solid line (Maëc ñònh)

dashed line

dotted line

dash-dot line

-- : -.

ÑOÀ HOÏA TRONG MATLAB

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

1

3

5

Giaù trò LineWidth

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

8 7 6 5 4 3 2 1 0 0

2

4

6

8

10 12 14

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’)

Kí hieäu

YÙ nghóa

Moät soá loaïi Marker:

MarkerEdgeColor

Kí hieäu

YÙ nghóa

Ñònh giaù trò maøu cho ñöôøng vieàn cuûa Marker

+

Daáu coäng

MarkerFaceColor

o

Hình troøn

Ñònh giaù trò maøu cho beà maët cuûa Marker

*

Daáu hoa thò

MarkerSize

.

Ñieåm

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

x

Daáu cheùo nhau

s

Hình vuoâng

x = 0:pi/15:4*pi; y = exp(2*cos(x)); plot(x,y,'r+')

d

Hình thoi

8

^

Tam giaùc treân

7

6

v

Tam giaùc döôùi

5

>

Tam giaùc beân phaûi

4

<

Tam giaùc beân traùi

3

2

p

Sao naêm caïnh

1

h

Sao saùu caïnh

0 0

2

4

6

8

10

12

14

ÑOÀ HOÏA TRONG MATLAB

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

Leänh

Giaù trò

Moâ taû

on, off

grid

Baät hay taét löôùi veõ

on, off

hold

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])

1

0.8

0.6

0.4

0.2

0

-0.2

-0.4

-0.6

-0.8

-1 0

1

2

3

4

5

6

7

PHẦN II- LAÄP TRÌNH TRONG MATLAB

LẬP TRÌNH VỚI MATLAB

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

Scripts

function

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)

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 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

Toaùn töû YÙ nghóa

 Caáu truùc ñieàu kieän: if < Nhoû hôn

>

Lôùn hôn

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

==

Baèng nhau

if (bieåu thöùc logic) nhoùm leänh end >= Lôùn hôn hoaëc baèng

~= Khoâng baèng

nhoùm leänh 2

if (bieåu thöùc logic) nhoùm leänh 1 else end

MATLAB CAÊN BAÛN

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

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

nhoùm leänh 2

nhoùm leänh 3

if (bieåu thöùc logic) nhoùm leänh 1 elseif else 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

nhoùm leänh 1

nhoùm leänh 2

switch (bieåu thöùc ñieàu kieän) case (giaù trò 1 bieåu thöùc) otherwise end

disp(‘ menu ve do thi ’);

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

disp(‘ menu noi suy da thuc ’);

disp(‘thoat khoi chuong trinh ’);

chon = input(‘Nhap vao lua chon cua ban, chon= ’) Switch chon case 1 case 2 otherwise 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

a= input(‘Nhap vao gia tri a: ’) while a<=0 disp(‘a lon hon khong ’); a= input(‘Nhap vao gia tri a: ’) 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

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 end

nhoùm leänh

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

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

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.

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 đó.

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

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

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….