MATLAB ỨNG DỤNG
THIẾT KẾ –ĐIỀU KHIỂN
Th.S Nguyễn Tấn Phúc.
Email: phucnt@hcmuaf.edu.vn Tel:0126.7102772.
Fb: gv dhnl phuctannguyen
TÀI LIỆU HỌC TẬP
1.SLIDE BÀI GIẢNG . 2.SÁCH MATLAB CƠ SỞ.
ĐÁNH GIÁ HK HÈÙ
1.Thực hành Trên lớp : 10%.
2. kiểm tra : 10%.
2.Thi cuối kỳ : 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
CĂN BẢN
MATLAB CĂN BẢN
I. BIỂU THỨC (EXPRESSION)
Biến số ( variables)
Số (Numbers)
Toán tử ( Operaters)
Hàm ( Functions)
- tối đa 19 ký tự có nghĩa
- phân biệt giữa chữ hoa và chữ thường.
- bắt đầu bằng một từ theo sau là từ hay số hoặc dấu (_).
- biến tòan cục (global) tác dụng trong tòan chương trình.
- biến cục bộ (local) tác dụng trong nội tại hàm (function)
- một số biến đặc biệt: pi, ans,…
Biến (Variables)
Kiểm tra biến (who và whos)
Xóa biến (clear và clear all)
DATA TYPES
Int8,uint8,int16,int32…số nguyên interger.
Single,double: kiểu số thực.
Logical: kiểu true,false.
Char: kiểu ký tự.
String: kiểu ký tự.
Array: a(1),a(0),….
Ví dụ:
Str=‘hello world’;
Str(2)=‘ e’.
DATA TYPES CONVERSION
Char(): chuyển sang kiểu ký tự.
Int2str(): chuyển số sang chuỗi.
Num2str(): chuyển integer sang chuỗi Str2num(): chuổi sang số.
Num2bin(): số sang mã nhị phân.
Dec2bin(): chuyển số sang nhị phân Ischar(): kiểm tra phải ký tự.
Isinteger():kiem tra so nguyen
Islogical():kiem tra bien logic.
Matlab command
Clc: xóa màn hình.
Clear all: xóa tất cả các biến.
Global: khai báo biến toàn cục.
Quit: thoát matlab.
Who: liệt kê tất cả biến hiện có Whos: liệt kê biến , kiểu biến.
INPUT, OUTPUT COMMAND Disp: hiển thị ra comand matlab.
Input: nhận dữ liệu từ command matlab.
sprintf: dinh dang chuoi xuat ra man hinh.
Format : dinh dang dữ liệu . Các kiểu dữ liệu format:
Short,long,short e,long e,rat…
MATLAB CĂN BẢN
1. Số (Numbers)
format (định dạng)
Tất cả những con số đều được lưu kiểu định dạng (format) Dùng hàm format để định dạng kiểu số:
>> 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 CĂN BẢN
2. Toán tử (operaters) (+, -, *, /, \,^,’)
Các biến không cần khai báo trước.
Các ký tự thường và in là phân biệt.
Kết thúc câu lệnh với ‚;‛ không hiển thị kết qủa câu lệnh.
Biến mặc nhiên ‚ans‛ .
Thứ tự tính toan nhu thong thuong:nhân chia trước ,
cộ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. Toán tử (operaters) (+, -, *, /, \,^,’)
To¸n tư logic ý nghÜa
& Vµ vd A&B
| HoỈc vd A|B
~ §¶o vd ~A
Toá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 CĂN BẢN
3. Hàm cơ bả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 TRẬ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].
‚;‛ có nghĩa là chuyển sang hàng kế tiếp.
‚,‛ hay ‚ ‚ phân cách giữa các phầ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 TRẬN TRONG MATLAB
Phép tính Chú thích
+, - Cộng hoặc trừ hai ma trận cùng kích thước
A*B Nhân hai ma trận A và B
A/B Chia hai ma trận (chia phải) A và B A\B Chia trái hai ma trận B và A
A.*B Nhân từng phần tử của hai ma trận A và B A./B Chia từng phần tử của hai ma trận A và B A.\B Chia từng phần tử của hai ma trận B và A
.^ Mũ cho từng phần tử của mả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 TRẬN TRONG MATLAB
ĐỒ HỌA TRONG MATLAB
Đồ họa trong Matlab
Cây thư mục quản lý đối tượng trong Matlab:
Uicontrol Uimenu Uicontextmenu
Image Light Line Patch Rectangle Surface Text Figure
Axes
Bước MATLAB code 1. Chuẩn bị dữ liệu X= 0:0.1:2*pi;
Y= sin(X)=f(x).
2. Chọn cửa sổ và vị trí của đối
tượng đồ họa trong cửa sổ. figure(‘Name’,’Hinh sine’);
subplot(2,2,1);
3. Gọi hàm vẽ đồ thị h = plot(X,Y);
4. Xác định thuộc tính cho hình
như kiểu đường, màu sắc, … set(h, ‘LineStyle’,’-
‘,’Color’,’r’) 5. Xác định các thuộc tính của axis,
axes, lưới vẽ, … axis([-1 6 -1.2 1.2]);
grid on;
6. Chú thích cho đồ thị: labels, legend, text, …
xlabel(‘X’);
ylabel(‘Y=SIN(X)’);
title(‘Đồ thị hình sine’);
7. Xuất kết quả
ĐỒ HỌA TRONG MATLAB
Các lệnh vẽ cơ bản:
Tên hàm Mô tả hàm
plot Vẽ dữ liệu 2D với tỉ lệ tuyến tính cho các trục tọa độ plot3 Vẽ dữ liệu 3D với tỉ lệ tuyến tính cho các trục tọa độ line Vẽ đường thẳng đi qua các điểm dữ liệu
loglog Vẽ với tỉ lệ logarithmic cho các trục tọa độ
semilogx Vẽ với tỉ lệ logarithmic cho trục x và tỉ lệ tuyến tính cho trục y
semilogy Vẽ với tỉ lệ logarithmic cho trục y và tỉ lệ tuyến tính cho trục x
plotyy Vẽ đồ thị với trục y ở bên trái và bên phải
ĐỒ HỌA TRONG MATLAB
Lệnh plot
Cú pháp Mô tả
plot(Y) Vẽ đồ thị với hoành độ là chỉ số
của phần tử, tung độ là giá trị của phần tử tương ứng
plot(X1,Y1,...) Vẽ đồ thị bằng cách sử dụng các đường thẳng nối từng cặp dữ liệu X1(i) và Y1(i)
plot(X1,Y1,LineSpec,...) Vẽ đồ thị và định tính chất cho tất cả các đường thẳng
plot(...,'PropertyName',PropertyValue,...) Vẽ có định tính chất cho các đối tượng
h = plot(...) Trả về giá trị quản lý đối tượng vẽ
ĐỒ HỌ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í hiệu Kiểu đường Ví dụ
-
solid line (Mặc định)--
dashed line:
dotted line-.
dash-dot lineĐỒ HỌA TRONG MATLAB
LineWidth: plot(X,Y,’LineWidth’,2)
Giá trị
LineWidth 1 3 5
Hình
ĐỒ HỌA TRONG MATLAB
Color: plot(X,Y,’Color’,[0.1 0.5 0.7]), plot(X,Y,’Color’,’y’) Cách khai báo giá trị màu cho đối tượng trong Matlab
o Nhập giá trị màu RGB là vector hàng 3 phần tử o Nhập tên của mà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)
ĐỒ HỌA TRONG MATLAB
Marker: plot(X,Y,’o’) Một số loại Marker:
Kí hiệu Ý nghĩa
+ Dấu cộng o Hình tròn
* Dấu hoa thị
. Điểm
x Dấu chéo nhau s Hình vuông d Hình thoi
^ Tam giác trên v Tam giác dưới
> Tam giác bên phải
< Tam giác bên trái p Sao năm cạnh h Sao sáu cạnh
Kí hiệu Ý nghĩa MarkerEdgeColor Định giá trị màu
cho đường viền của Marker MarkerFaceColor Định giá trị màu
cho bề mặt của Marker
MarkerSize Định độ 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+')
ĐỒ HỌA TRONG MATLAB
Một số lệnh phụ trợ trong đồ họa
Lệnh Giá trị Mô tả
grid on, off Bật hay tắt lưới vẽ
hold on, off Giữ lại tất cả các đối
tượng vẽ
axes Tạo hệ trục tọa độ
axis [Xmin Xmax Ymin Ymax] Định giá trị giới hạn cho các trục tọa độ Xlabel, Ylabel Chuỗi kí tự Ghi chú các trục tọa
độ
Legend Chuỗi kí tự Ghi chú các dữ liệu
Title Chuỗi kí tự Định tiêu đề cho hình
vẽ
cla Xoá tất cả đối tượng
trên axes
ĐỒ HỌA TRONG MATLAB
Lệnh Line
Cú pháp Mô tả
line(X,Y) Vẽ đoạn thẳng đi qua các
điểm dữ liệu trong mặt phẳng OXY
line(X,Y,Z) Vẽ đoạn thẳng đi qua các
điểm dữ liệu trong mặt phẳng OXYZ
line(X,Y,Z,'PropertyName',PropertyValue,...) Định giá trị cho các thuộc tính của đối tượng
h = line(...) Trả về giá trị của biến quản
lý đối tượng
ĐỒ HỌA TRONG MATLAB
Lệ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
ĐỒ HỌA TRONG MATLAB
PH Ầ N II- LẬP TRÌNH TRONG
MATLAB
LẬP TRÌNH VỚI MATLAB
Lập trình với Matlab
Scripts
Là hình thức đơn giản nhất của M-file, nó không có thông số vào và ra. Là tập hợp các lệnh và hàm của Matlab. Tất cả các biến tạo ra trong Scripts đều có thể sử dụng sau khi Scripts kết thúc.
--- M-file: vidu.m
x= 0:0.01:2*pi;
y=sin(x);
plot(x,y)
function
Là Scripts tuy nhiên có thêm đối số vào (input arguments) và đối số đầu ra (output argument). Tất cả các biến hoạt động trong một Workspace riêng. Biến trong function chỉ là biến cục bộ.
--- M-file: doido.m
function rad = doido(do) rad=do*pi/180;
Matlab cho phép lập trình theo hai hình thức: SCRIPTS và function
MATLAB CĂN BẢN
8. Lập trình với Matlab
Hình thức khai báo hàm
- Từ khoá function bắt buộc phải khai báo.
- Thông số đầu ra: nếu có nhiều giá trị trả về, các thông số này được đặt trong dấu ‚[ ]‛. Nếu không có giá trị trả về ta có thể để trống hay để dấu [].
- Tên hàm
-Thông số đầu vào được khai báo trong dấu () - Biến toàn cục và địa phương
Ví dụ1 : lập trình 1 hàm cộng , luu file cong.m de tinh tổng 2 số.
function tong = cong(x,y) Tong = x+y;
End.
Vidu 2: Lập hàm tính tố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 CĂN BẢN
8. Cấu trúc điều kiện
Cấu trúc điều kiện: if
if (biểu thức logic) nhóm lệnh end
if (biểu thức logic) nhóm lệnh 1 else
nhóm lệnh 2 end
Toán tử Ý nghĩa
< Nhỏ hơn
<= Nhỏ hơn hoặc bằng
> Lớn hơn
>= Lớn hơn hoặc bằng
== Bằng nhau
~= Không bằng
MATLAB CĂN BẢN
8. Cấu trúc điều kiện
Cấu trúc điều kiện: if…end
if (biểu thức logic) nhóm lệnh 1 elseif
nhóm lệnh 2 else
nhóm lệnh 3 end
Ví dụ:
Tìm nghiệm phương trình bậc 2 nhập và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 CĂN BẢN
8. Cấu trúc điều kiện
Cấu trúc điều kiện: switch … case
switch (biểu thức điều kiện) case (giá trị 1 biểu thức)
nhóm lệnh 1 otherwise
nhóm lệnh 2 end
Ví dụ: tạo một menu lựa chọ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 CĂN BẢN
8. Cấu trúc lặp có điều kiện
Cấu trúc lặp có điều kiện: while
while (biểu thức điều kiện) nhóm lệnh
end
Ví dụ: yêu cầu nhập vào giá trị cho biến x.
việc nhập chỉ kết thúc khi x có giá 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;
disp('tong '); end disp(tong);
MATLAB CĂN BẢN
9. Cấu trúc lặp
Cấu trúc lặp: for
for biến = biểu thức nhóm lệnh end
1.Viết chương trình nhập số n và tính tổng từ 1 đế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- TẠO GIAO DIỆ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….