Giáo trình Matlab cơ bản - Chương 1: Matlab cơ bản

Chương 1: MATLAB cơ bản  
Ð1. Khởi động MATLAB  
1. Khởi động MATLAB: MATLAB (Matrix laboratory) là phần mềm dùng để  
giải một loạt các bài toán kĩ thuật, đặc biệt là các bài toán liên quan đến ma  
trận.MATLAB cung cấp các toolboxes, tức các hàm mở rộng môi trường MATLAB  
để giải quyết các vấn đề đặc biệt như xử lí tín hiệu số, hệ thống điều khiển,mạng  
neuron, fuzzy logic, mô phỏng v.v.  
Ðể khởi động MATLAB ta nhấn đúp vào icon của nó trên màn hình.  
2.Ðánh lệnh trong cửa sổ lệnh : Khi ta đánh lệnh vào cửa sổ lệnh, nó sẽ được  
thi hành ngay và kết quả hiện lên màn hình. Nếu ta không muốn cho kết quả hiện  
lên màn hình thì sau lệnh ta đặt thêm dấu ; . Nếu lệnh quá dài, không vừa một  
dòng dòng có thể đánh lệnh trên nhiều dòng và cuối mỗi dòng đặt thêm dấu ... rồi  
xuống dòng. Khi soạn thảo lệnh ta có thể dùng các phím tắt :  
(
(
(
(
Ctrl-P  
Ctrl-N  
Ctrl-B  
Ctrl-F  
gọi lại lệnh trước đó  
gọi lệnh sau  
lùi lại một kí tự  
tiến lên một kí tự  
sang phải một từ  
sang phải một từ  
về đầu dòng  
Ctrl-( Ctrl-R  
Ctrl-( Crtl-L  
home  
end  
esc  
Ctrl-A  
Ctrl-E  
Ctrl-U  
Ctrl-D  
về cuối dòng  
xoá dòng  
xoá kí tự tại chỗ con nháy đứng  
del  
backspace Ctrl-H  
xoá kí tự trước chỗ con nháy đứng  
3. Set path:Khi chạy các chương trình MATLAB ở các thư mục khác thư mục  
hiện hiện hành ta phải đổi thư mục bằng lệnh File | Set Path...  
4. Help và Demo: Phần nay giúp chúng ta hiểu biết các hàm, các lệnh của  
MATLAB và chạy thử các chương trình demo  
Ð2. Các ma trận  
1. Các toán tử: MATLAB không đòi hỏi phải khai báo biến trước khi dùng.  
MATLAB phân biệt chữ hoa và chữ thường.  
MATLAB sử dụng các số thập phân.  
Các toán tử : + , - , * , / , \ (chia trái) , ^ (mũ) , (chuyển vị hay số phức liên hiệp).  
x = 2+3  
a = 5  
b = 2  
a/b  
a\b  
Các toán tử quan hệ :< , <= , > , >= , == , ~=  
Các toán tử logic : & , | (or) , ~ (not)  
Các hằng : pi  
3.14159265  
số ảo  
tương tự i  
sai số 2-52  
i
j
eps  
realmin số thực nhỏ nhất 2-1022  
realmax số thực lớn nhất 21023  
1
inf  
NaN  
vô cùng lớn  
Not a number  
2. Các ma trận :  
a. Nhập ma trận : Ma trận là một mảng các số liệu có m hàng và n cột.  
Trường hợp ma trận chỉ có một phần tử(ma trận 1-1) ta có một số.Ma trận chỉ có  
một cột được gọi là một vectơ. Ta có thể nhập ma trận vào MATLAB bằng nhiều  
cách:  
( nhập một danh sách các phần tử từ bàn phím  
( nạp ma trận từ file số liệu  
( tạo ma trận nhờ các hàm có sẵn trong MATLAB  
( tạo ma trận nhờ hàm tự tạo  
Khi nhập ma trận từ bàn phím ta phải tuân theo các quy định sau :  
( ngăn cách các phần tử của ma trận bằng dấu , hay dấu trống  
( dùng dấu ; để kết thúc một hàng  
( bao các phần tử của ma trận bằng cặp dấu ngoặc vuông [ ]  
Ví dụ : Ta nhập một ma trận  
A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1]  
Bây giờ ta đánh lệnh:  
sum(A)  
ans =  
34 34 34 34  
nghĩa là nó đã lấy tổng các cột vì MATLAB được viết để là việc với các cột. Khi ta  
không chỉ biến chứa kết quả thì MATLAB dùng biến mặc định là ans, viết tắt của  
answer.  
Muốn lấy tổng của các hàng ta cần chuyển vị ma trận bằng cách đánh vào  
lệnh :  
A’  
ans =  
16  
5
9
4
3 10 6 15  
2 11 7 14  
13 8 12  
1
và đây là chuyển vị của ma trận A.  
Ma trận a = [] là ma trận rỗng  
b. Chỉ số : Phần tử ở hàng i cột j của ma trận có kí hiệu là A(i,j). Tuy  
nhiên ta cũng có thể tham chiếu tới phần tử của mảng nhờ một chỉ số, ví dụ A(k).  
Cách nµy th−êng dïng ®Ó tham chiÕu vec t¬ hµng hay cét. Trong tr−êng hîp ma trËn ®Çy ®ñ  
th× nã ®−îc xem lµ ma trËn mét cét dµi t¹o tõ c¸c cét cña ma trËn ban ®Çu. Nh− vËy viÕt A(8)  
cã nghÜa lµ tham chiÕu phÇn tö A(4, 2).  
c. To¸n tö “:” : To¸n tö “:” lµ mét to¸n tö quan träng cña MATLAB. Nã xuÊt hiÖn ë nhiÒu  
d¹ng kh¸c nhau. BiÓu thøc  
1:10  
lµ mét vec t¬ hµng chøa 10 sè nguyªn tõ 1 ®Õn 10  
ans =  
1
2
3
4
5
6
7
8
9 10  
100:-7:50  
t¹o mét d·y sè tõ 100 ®Õn 51, gi¶m 7 mçi lÇn  
ans =  
2
100 93 86 79 72 65 58 51  
0: pi/4: pi  
t¹o mét d·y sè tõ 0 ®Õn pi, c¸ch ®Òu nhau pi/4  
ans =  
0 0.7854 1.5708 2.3562 3.1416  
C¸c biÓu thøc chØ sè tham chiÕu tíi mét phÇn cña ma trËn.ViÕt A(1:k,j) lµ tham chiÕu ®Õn k  
phÇn tö ®Çu tiªn cña cét j.  
Ngoµi ra to¸n tö “:”tham chiÕu tíi tÊt c¶ c¸c phÇn tö cña mét hµng hay mét cét.  
A(:,3)  
ans =  
2
11  
7
14  
vµ  
A(3, :)  
ans =  
9
6
7 12  
ViÕt B = A(:, [1 3 2 4])  
sÏ t¹o ma trËn B tõ ma trËn A b»ng c¸ch ®æi thø tù c¸c cét tõ [1 2 3 4] thµnh [ 1 3 2 4 ]  
B =  
16  
5 11 10  
6 12  
4 14 15  
2
3 13  
8
9
7
1
VÝ dô: Cho c¸c ®iÖn trë 104 , 2×104 , 3.5×104 105 , 2×105 Ω. §iÖn ¸p trªn chóng lÇn l−ît lµ  
,
120, 80, 110, 220, 350 V. T×m dßng ®iÖn vµ c«ng suÊt tiªu t¸n trªn tõng ®iÖn trë  
r = [ 10000, 20000, 35000, 100000, 200000];  
u = [ 120, 80, 110, 200, 350];  
i = v./r  
cs = v.^2/r  
VÝ dô: Mét nguån ®iÖn cã ®iÖn ¸p u, ®iÖn trë trong r1 vµ t¶i cã ®iÖn trë r2. T×m quan hÖ cña  
c¸c ®iÖn trë ®Ó c«ng suÊt trªn t¶i lµ max  
Dßng ®iÖn qua m¹ch lµ :  
u
i =  
r1 + r2  
C«ng suÊt trªn t¶i lµ:  
u2 r2  
(r1 + r2 )2  
p = i2 r2 =  
Muèn c«ng suÊt ®−a ra phô t¶i cùc ®¹i th×:  
r2  
k =  
(r1 + r2 )2  
ph¶i ®¹t gi¸ trÞ cùc ®¹i. VÊn ®Ò lµ ph¶i chän c¸c gi¸ trÞ ®iÖn trë r1 vµ r2 ®Ó cho k max. Gi¶ sö  
ta cã c¸c gi¸ trÞ cã thÓ cã cña r2 lµ 10, 15, 20, 25 vµ 30Ω vµ r1 lµ 10,15,20 vµ 25Ω. Do cã 5  
gi¸ trÞ cña t¶i vµ 4 gi¸ trÞ cña ®iÖn trë trong cña nguån nªn cã tíi 20 tæ hîp cã thÓ. Ta lËp ma  
trËn dïng ma trËn ®Ó tÝnh:  
3
a = [10; 15; 12; 25; 30];  
r2 = [a, a, a, a];  
b = [10, 15, 20 ,25];  
r1 = [b; b; b ;b; b];  
k = r2./((r1+r2).^2);  
Mçi cét trong k t−¬ng −ng víi mét gi¸ trÞ cña r1. VÝ dô gi¸ trÞ 0.0163 ë hµng 2 cét 3 cña k  
t−¬ng øng víi gi¸ trÞ thø hai cña r1 = 15 vµ gÝ trÞ thø 3 cña r2 = 20. Nh− vËy víi gi¸ trÞ cña r1  
= 15 ta cã thÓ xem ë cét t−¬ng øng cña k lµ cét 2 xem gi¸ trÞ nµo cña k lµ max. Gi¸ trÞ ®ã lµ  
0.0167 ë hµng 2 t−¬ng øng víi r1 = 15. NghÜa lµ víi r1 = 15 th× r2 còng ph¶i 15. MATLAB  
lµm viÖc nµy nh− sau:  
[max,hang] = max(r);  
max =  
0.025 0.0167 0.0125 0.0100  
hang =  
1 2 3 4  
Nh− vËy cét 1 t−¬ng øng hµng 1,cét 2 hµng 2 v.v.  
d.T¹o ma trËn b»ng hµm cã s½n : MATLAB cung cÊp mét sè hµm ®Ó t¹o c¸c ma trËn  
c¬ b¶n:  
zeros  
t¹o ra ma trËn mµ c¸c phÇn tö ®Òu lµ zeros  
z = zeros(2, 4)  
z =  
0
0
0
0
0
0
0
0
ones  
t¹o ra ma trËn mµ c¸c phÇn tö ®Òu lµ 1  
x = ones(2, 3)  
x =  
1
1
1
1
1
1
y = 5*ones(2, 2)  
y =  
5
5
5
5
rand  
t¹o ra ma trËn mµ c¸c phÇn tö ngÉu nhiªn ph©n bè ®Òu  
d=rand(4, 4)  
d =  
0.9501 0.8913 0.8214 0.9218  
0.2311 0.7621 0.4447 0.7382  
0.6068 0.4565 0.6154 0.1763  
0.4860 0.0185 0.7919 0.4057  
t¹o ra ma trËn mµ c¸c phÇn tö ngÉu nhiªn ph©n bè trùc giao  
randn  
e = randn(3, 3)  
e =  
- 0.4326 0.2877 1.1892  
- 1.6656 -1.1465 -0.0376  
0.1253 1.1909 0.3273  
4
magic(n) t¹o ra ma trËn cÊp n gåm c¸c sè nguyªn tõ 1 ®Õn n2 víi tæng c¸c hµng b»ng  
tæng c¸c cét.n ph¶i lín h¬n hay b»ng 3.  
pascal(n) t¹o ra ma trËn x¸c ®Þnh d−¬ng mµ c¸c phÇn tö lÊy tõ tam gi¸c Pascal.  
pascal(4)  
ans =  
1
1
1
1
1
2
3
1
3
1
4
6 10  
4 10 20  
eye(n) t¹o ma trËn ®¬n vÞ  
eye(3)  
ans =  
1
0
0
0
0
1
0
0
1
eye(m,n) t¹o ma trËn ®¬n vÞ më r«ng  
eye(3,4)  
ans =  
1
0
0
0
1
0
0
0
1
0
0
0
e. LÖnh load: LÖnh load dïng ®Ó ®äc mét file d÷ liÖu. V× vËy ta cã thÓ t¹o mét file  
chøa ma trËn vµ n¹p vµo. VÝ dô cã file mtran.dat chøa mét ma trËn th× ta n¹p ma trËn nµy  
nh− sau :  
load mtran.dat  
Khi dïng mét tr×nh so¹n th¶o v¨n b¶n ®Ó t¹o ma trËn cÇn chó ý :  
- file chøa ma trËn lµ mét b¶ng h×nh ch÷ nhËt  
- mçi hµng viÕt trªn mét dßng  
- sè phÇn tö ë c¸c hµng ph¶i b»ng nhau  
- c¸c phÇn tö ph¶i c¸ch nhau b»ng dÊu trèng  
f. M-file : M-file lµ mét file text chøa c¸c m· cña MATLAB. §Ó t¹o mét ma trËn ta  
viÕt mét m-file vµ cho MATLAB ®äc file nµy. VÝ dô ta t¹o file solieu.m nh− sau  
A = [  
1 2 3  
2 3 4  
3 4 5 ]  
vµ n¹p vµo MATLAB b»ng c¸ch ®¸nh lÖnh :  
solieu  
g. L¾p ghÐp :Ta cã thÓ l¾p ghÐp(concatenation) c¸c ma trËn cã s½n thµnh mét ma trËn  
míi. VÝ dô :  
a = ones(3, 3)  
a =  
1
1
1
1
1
1
1
1
1
b = 5*ones(3, 3)  
b =  
5
5
5
5
5
5
5
5
5
5
c = [a+2; b]  
c =  
3
3
3
5
5
5
3
3
3
3
5
5
5
3
3
5
5
5
h. Xo¸ hµng vµ cét :Ta cã thÓ xo¸ hµng vµ cét tõ ma trËn b»ng dïng dÊu [].  
VÝ dô :  
b =  
5
5
5
5
5
5
5
5
5
§Ó xo¸ cét thø 2 ta viÕt :  
b(:, 2) = []  
b =  
5
5
5
5
5
5
ViÕt x(1:2:5) = [] nghÜa lµ ta xo¸ c¸c phÇn tö b¾t ®Çu tõ ®Õn phÇn tö thø 5 vµ c¸ch 2 råi s¾p  
xÕp l¹i ma trËn.  
3. C¸c lÖnh xö lÝ ma trËn :  
Céng  
Trõ  
Nh©n  
: X= A + B  
: X= A - B  
: X= A * B  
: X.*A nh©n c¸c phÇn tö t−¬ng øng víi nhau  
: X = A/B lóc ®ã X*B = A  
: X = A\B lóc ®ã A*X = B  
: X=A./B chia c¸c phÇn tö t−¬ng øng víi nhau  
Chia  
Luü thõa : X = A^2  
: X = A.^  
NghÞch ®¶o : X = inv(A)  
§Þnh thøc : d = det(A)  
HÖ ph−¬ng tr×nh AX = B cho nghiÖm X = A\B  
Ph©n tÝch Cholesky : Ph−¬ng ph¸p Cholesky ph©n tÝch ma trËn A x¸c ®Þnh d−¬ng  
thµnh tÝch cña hai ma trËn A = R’*R víi R lµ ma trËn tam gi¸c trªn. Muèn nhËn ®−îc ma  
trËn R ta dïng hµm chol(A).  
Ph©n tÝch LU : Ta ph©n tÝch ma trËn A= L*U trong ®ã L lµ ma trËn tam gi¸c d−íi vµ  
U lµ ma trËn tam gi¸c trªn. Ta viÕt [L,U]= lu(A).  
Ph©n tÝch QR: Ta ph©n tÝch ma trËn A =Q*R víi Q lµ ma trËn trùc giao vµ R lµ ma  
trËn tam gi¸c trªn.  
Sè mò: NÕu cã ma trËn A vu«ng vµ sè p>0 th× A^p lµ tÝch p lÇn cña A :  
Y= A^2  
Gi¸ trÞ riªng vµ vec t¬ riªng: eig(A)  
[d,r] = eig(A)  
Quay ma trËn: b = rot90(a)  
6
a = [2 1 0;-2 5 -1;3 4 6]  
a =  
2
1
0
-2 5 -1  
3
4
6
b = rot90(a)  
b =  
0 -1  
6
1
5
4
3
2 -2  
§¶o ma trËn: fliplr(a) ®¶o ma trËn tõ tr¸i sang ph¶i  
c = fliplr(a)  
c =  
0
1
2
-1 5 -2  
6
4
3
flipud(a) ®¶o ma trËn tõ trªn xuèng d−íi  
d = flipud(a)  
d =  
3
4
6
-2 5 -1  
2
1
0
reshape(a,m,n) ®Þnh d¹ng l¹i ma trËn a víi sè hµng míi m vµ sè cét míi n  
a = [1 2 3 ;5 6 7;8 9 1];  
reshape(a,1,9)  
ans =  
1
5
8
2
6
9
3
7
1
diag(a) lÊy c¸c phÇn tö trªn ®−êng chÐo chÝnh cña ma trËn a vµ l−u vµo mét vec t¬  
diag(a,k) chän ®−êng chÐo tuú theo gi¸ trÞ cña k  
k = 0 - chän ®−êng chÐo chÝnh  
k > 0 - chän ®−êng chÐo thø k trªn ®−êng chÐo chÝnh  
k < 0 - chän ®−êng chÐo thø k d−íi ®−êng chÐo chÝnh  
a =  
1
5
8
2
6
9
3
7
1
v = diag(a,1)  
v =  
2
7
a = diag(v) nÕu v lµ vec t¬ th× a lµ ma trËn vu«ng víi v lµ ®−êng chÐo chÝnh  
b = triu(a) t¹o ra ma trËn b cïng cì víi ma trËn a, chøa c¸c phÇn tö cña ma trËn a n»m  
trªn ®−êng chÐo chÝnh vµ phÝa trªn ®−êng chÐo chÝnh. C¸c phÇn tö kh¸c b»ng 0.  
a = [1 2 3;4 5 6;7 8 9]  
a =  
1
4
7
2
5
8
3
6
9
7
b = triu(a)  
b =  
1
0
0
2
5
0
3
6
9
b = triu(a, k) t¹o ra ma trËn b cïng cì víi ma trËn a, chøa c¸c phÇn tö cña ma trËn a  
ngay trªn ®−êng chÐo vµ phÝa trªn ®−êng chÐo chÝnh. C¸c phÇn tö kh¸c b»ng 0.  
b = tril(a) t¹o ra ma trËn b cïng cì víi ma trËn a, chøa c¸c phÇn tö cña ma trËn a n»m  
d−íi ®−êng chÐo chÝnh. C¸c phÇn tö kh¸c b»ng 0.  
b = tril(a, k) t¹o ra ma trËn b cïng cì víi ma trËn a, chøa c¸c phÇn tö cña ma trËn a  
ngay trªn ®−êng chÐo vµ phÝa d−íi ®−êng chÐo thø k. C¸c phÇn tö kh¸c b»ng 0.  
b = tril(a,-1)  
b =  
0
4
7
0
0
8
0
0
0
5. §a thøc: Mét ®a thøc ®−îc biÓu diÔn trong MATLAB b»ng mét vec t¬ hµng chøa c¸c hÖ  
sè.  
P = x3 - 2x2 + x + 1  
p = [ 1 -2 1 1]  
conv  
nh©n ®a thøc  
deconv  
poly  
polyder  
chia ®a thøc  
t×m ®a thøc ®Æc tÝnh cña mét ma trËn  
®¹o hµm ®a thøc  
polyder(a,b) ®¹o hµm tÝch hai ®a thøc a vµ b  
VÝ dô Cho ®a thøc (3x2 + 6x + 9)(x2 + 2x)  
a = [3 6 9];  
b = [1 2 0];  
k = polyder(a, b)  
k =  
12 36 42 18  
VÝ dô Cho ®a thøc (3x2 + 6x + 9)/(x2 + 2x)  
a = [3 6 9];  
b =[ 1 2 0];  
[n, d]=polyder(a,b)% n lµ tö sè vµ d lµ mÉu sè  
n =  
-18 -18  
d =  
1
4
4
0
0
polyfit  
xÊp xØ b»ng ®a thøc  
x = [ 1 2 3 4 5 ];  
y = [ 5.5 43.1 128 290.7 498.4 ];  
p = polyfit(x,y,3)  
p =  
-0.1917 31.5821 -60.3262 35.3400  
tÝnh trÞ cña ®a thøc  
polyval  
polyvalm  
roots  
tÝnh trÞ ®a thøc mµ c¸c biÕn lµ ma trËn  
t×m nghiÖm cña ®a thøc  
8
§3. LËp tr×nh trong MATLAB  
1. C¸c ph¸t biÓu ®iÒu kiÖn:  
if,else,elseif :Có ph¸p cña if :  
if <biÓu thøc ®iÒu kiÖn>  
<ph¸t biÓu>  
end  
NÕu <biÓu thøc ®iÒu kiÖn> cho kÕt qu¶ ®óng th× phÇn lÖnh trong th©n cña if ®−îc thùc hiÖn.  
C¸c ph¸t biÓu else vµ leseif còng t−¬ng tù.  
VÝ dô: Ta xÐt ch−¬ng trinh test1. m ®Ó ®o¸n tuæi nh− sau:  
disp(‘Xin chao! Han hanh duoc lam quen’);  
x = fix(30*rand);  
disp(‘Tuoi toi trong khoang 0 - 30’);  
gu = input(‘Xin nhap tuoi cua ban: ‘);  
if gu < x  
disp(‘Ban tre hon toi’);  
elseif gu > x  
disp(‘Ban lon hon toi’);  
else  
disp(‘Ban bang tuoi toi’);  
end  
2. switch : Có ph¸p cña switch nh− sau :  
switch <biÓu thøc>  
case n1 : <lÖnh 1>  
case n2 : <lÖnh 2>  
. . . . . . . . . . . . . . .  
case nn : <lÖnh n>  
otherwise : <lÖnh n+1>  
end  
3. while : vßng lÆp while dïng khi kh«ng biÕt tr−íc sè lÇn lÆp. Có ph¸p cña nã nh− sau :  
while <biÓu thøc>  
<ph¸t biÓu>  
end  
VÝ dô: XÐt ch−¬ng tr×nh in ra chuoi “Xin chao” lªn mµ h×nh víi sè lÇn nhËp tõ bµn phÝm  
(test3.m) nh− sau:  
disp('xin chao');  
gu = input('Nhap so lan in: ');  
i = 0;  
while i~=gu  
disp(['Xin chao' i]);  
i = i+1  
end  
4. for : vßng lÆp for dïng khi biÕt tr−íc sè lÇn lÆp. Có ph¸p nh− sau :  
for <chØ sè> = <gi¸ trÞ ®Çu> : <møc t¨ng> : <gi¸ trÞ cuèi>  
VÝ dô: X©y dùng ch−¬ng tr×nh ®o¸n sè (test2.m)  
x = fix(100*rand);  
n = 7;  
t = 1;  
9
for k = 1:7  
num = int2str(n);  
disp(['Ban co quyen du doan ',num,' lan']);  
disp('So can doan nam trong khoang 0 - 100');  
gu = input('Nhap so ma ban doan: ');  
if gu < x  
disp('Ban doan nho hon');  
elseif gu>x  
disp('So ban doan lon hon');  
else  
disp('Ban da doan dung.Xin chuc mung');  
t = 0;  
break;  
end  
n = n-1;  
end  
if t > 0  
disp('Ban khong doan ra roi');  
numx = int2str(x);  
disp(['Do la so: ',numx]);  
end  
5. break : ph¸t biÓu break ®Ó kÕt thóc vßng lÆp for hay while mµ kh«ng quan t©m ®Õn ®iÒu  
kiÖn kÕt thóc vßng lÆp ®· tho¶ m·n hay ch−a.  
§4. C¸c file vµ hµm  
1. Script file: KÞch b¶n lµ M-file ®¬n gi¶n nhÊt, kh«ng cã ®èi sè. Nã rÊt cã Ých khi thi hµnh  
mét lo¹t lÖnh MATLAB theo mét tr×nh tù nhÊt ®Þnh. Ta xÐt vÝ dô hµm fibno ®Ó t¹o ra c¸c sè  
Fibonnaci.  
f=[1 1];  
i=1;  
while(f(i)+f(i+1))<1000  
f(i+2)=f(i)+f(i+1)  
i=i+1;  
end  
plot(f)  
§Ó thùc hiÖn c¸c m· chøa trong file fibno.m tõ cöa sæ lÖnh ta nhËp fibno vµ nhÊn  
enter.  
2. File hµm: Hµm lµ M-file cã chøa c¸c ®èi sè. Ta cã mét vÝ dô vÒ hµm :  
function y=tb(x)  
%Tinh tri trung binh cua cac phan tu  
[m,n]=size(x);  
if m==1  
m=n;  
end  
y=sum(x)/m;  
Tõ vÝ dô trªn ta thÊy mét hµm M-file gåm c¸c phÇn c¬ b¶n sau :  
• Mét dßng ®Þnh nghÜa hµm gåm: function y = tb(x) gåm tõ kho¸ function, ®èi sè tr¶  
vÒ y, tªn hµm tb vµ ®èi sè vµo x.  
10  
• Mét dßng h1 lµ dßng trî gióp ®Çu tiªn.V× ®©y lµ dßng v¨n b¶n nªn nã ph¶i ®Æt sau  
%. Nã xuÊt hiÖn ta nhËp lÖnh lookfor <tªn hµm>  
• PhÇn v¨n b¶n trî gióp ®Ó gióp ng−êi dïng hiÓu t¸c dông cña hµm.  
• Th©n hµm chøa m· MATLAB  
• C¸c lêi gi¶i thÝch dïng ®Ó cho ch−¬ng tr×nh s¸ng râ. Nã ®−îc ®Æt sau dÊu %.  
CÇn chó ý lµ tªn hµm ph¶i b¾t ®Çu b»ng kÝ tù vµ cïng tªn víi file chøa hµm.  
Tõ cöa sæ MATLAB ta ®¸nh lÖnh:  
z = 1:99;  
tb(z)  
Ghi chó:tªn hµm lµ tb th× tªn file còng lµ tb.m  
C¸c biÕn khai b¸o trong mét hµm cña MATLAB lµ biÕn ®Þa ph−¬ng. C¸c hµm kh¸c  
kh«ng nh×n thÊy vµ sö dông ®−îc biÕn nµy. Muèn c¸c hµm kh¸c dïng ®−îc biÕn nµo ®ã cña  
hµm ta cÇn khai b¸o nã lµ global. VÝ dô ta cÇn gi¶i hÖ ph−¬ng tr×nh :  
&
y1 = y1 − αy1y2  
&
y2 = −y2 + βy1y2  
Ta t¹o ra M-file tªn lµ lotka.m  
function yp=lotka(t,y)  
global alpha beta  
yp=[y(1)-alpha*y(1)*y(2);-y(2)+beta*y(1)*y(2)];  
vµ sau ®ã tõ dßng lÖnh ta nhËp c¸c lÖnh sau :  
global alpha beta  
alpha = 0.01;  
beta = 0.02;  
[t.y] = ode23(‘lotka’,[0 10],[1 1]);  
plot(t,y)  
Mét biÕn cã thÓ ®Þnh nghÜa lµ persistent ®Ó gi¸ trÞ cña nã kh«ng thay ®æi tõ lÇn gäi nµy sang  
lÇn gäi kh¸c.C¸c biÕn persistent chØ cã thÓ khai b¸o trong hµm. Chóng tån t¹i trong bé nhí  
cho ®Õn khi hµm bÞ xo¸ hay thay ®æi.  
3. §iÒu khiÓn vµo vµ ra: C¸c lÖnh sau dïng ®Ó sè liÖu ®−a vµo vµ ra  
disp(a)  
hiÓn thÞ néi dung cña m¶ng a hay v¨n b¶n  
a=[1 2 3];  
disp(a)  
t='Xin chao';  
disp(t)  
format  
®iÒu khiÓn khu«n d¹ng sè  
LÖnh  
format  
format short  
format long  
format short e 5 digit floating point  
format long e 15 digit floating point  
KÕt qu¶  
VÝ dô  
Default. Same as short.  
5 digit scaled fixed point  
15 digit scaled fixed point  
3.1416  
3.14159265358979  
3.1416e+00  
3.141592653589793e+00  
format short g Best of 5 digit fixed or floating 3.1416  
format long g Best of 15 digit fixed or floating 3.14159265358979  
format hex  
format bank  
format rat  
format +  
Hexadecimal  
400921fb54442d18  
Fixed dollars and cents  
Ratio of small integers  
+,-, blank  
3.14  
355/113  
+
11  
format  
compact  
format loose  
Suppresses excess line feeds  
Adds line feeds  
input  
nhËp d÷ liÖu  
x = input('Cho tri cua bien x :')  
Cho tri cua bien x :4  
x =  
4
4. C¸c hµm to¸n häc c¬ b¶n:  
exp(x)  
sqrt(x) c¨n bËc hai cña x  
log(x) logarit tù nhiªn  
log10(x) logarit c¬ sè 10  
ex  
abs(x)  
modun cña sè phøc x  
angle(x) argument cña sè phøc a  
conj(x) sè phøc liªn hîp cña x  
imag(x) phÇn ¶o cña x  
real(x) phÇn thùc cña x  
sign(x) dÊu cña x  
cos(x)  
sin(x)  
tan(x)  
acos(x)  
asin(x)  
atan(x)  
cosh(x)  
coth(x)  
sinh(x)  
tanh(x)  
acosh(x)  
acoth(x)  
asinh(x)  
atanh(x)  
5. C¸c phÐp to¸n trªn hµm:  
a. BiÓu diÔn hµm:MATLAB biÓu diÔn c¸c hµm to¸n häc b»ng c¸ch dïng c¸c biÓu  
thøc ®Æt trong M-file. VÝ dô ®Ó kh¶o s¸t hµm :  
1
1
f(x) =  
+
− 6  
(x − 0.3)2 + 0.01 (x − 0.9)2 + 0.04  
ta t¹o ra mét file, ®Æt tªn lµ humps.m cã néi dung :  
function y = humps(x)  
y = 1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6 ;  
C¸ch thø hai ®Ó biÓu diÔn mét hµm to¸n häc trªn dßng lÖnh lµ t¹o ra mét ®èi t−îng inline tõ  
mét biÓu thøc chuçi. VÝ dô ta cã thÓ nhËp tõ dßng lÖnh hµm nh− sau :  
f = inline(‘1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6’);  
ta cã thÓ tÝnh trÞ cña hµm t¹i x= 2 nh− sau : f(2) vµ ®−îc kÕt qu¶ lµ -4.8552  
b. VÏ ®å thÞ cña hµm:Hµm fplot vÏ ®å thÞ hµm to¸n häc gi÷a c¸c gi¸ trÞ ®· cho.  
VÝ dô :  
fplot(‘humps’,[-5 5 ])  
12  
grid on  
c. T×m cùc tiÓu cña hµm: Cho mét hµm to¸n häc mét biÕn, a cã thÓ dïng hµm  
fminbnd cña MATLAB ®Ó t×m cùc tiÓu ®Þa ph−¬ng cña hµm trong kho¶ng ®· cho.  
VÝ dô :  
f = inline('1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6 ');  
x=fminbnd(f,0.3,1)  
x =  
0.6370  
Hµm fminsearch t−¬ng tù hµm fminbnd dïng ®Ó t×m cùc tiÓu ®Þa ph−¬ng cña hµm nhiÒu  
biÕn.  
VÝ dô : ta cã file three_var.m cã néi dung:  
function b = three_var(v)  
x = v(1);  
y = v(2);  
z = v(3);  
b = x.^2+2.5*sin(y)-z^2*x^2*y^2;  
vµ b©y giê t×m cùc tiÓu ®èi víi víi hµm nµy t¹i x = -0.6 , y= -1.2 vµ z = 0.135  
v = [-0.6 -1.2 0.135];  
a = fminsearch('three_var',v)  
a =  
0.0000 -1.5708 0.1803  
d. T×m ®iÓm zero : Hµm fzero dïng ®Ó t×m ®iÓm zero cña hµm mét biÕn. VÝ dô ®Ó t×m  
gi¸ trÞ kh«ng cña hµm l©n cËn gi¸ trÞ -0.2 ta viÕt :  
f = inline('1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6 ');  
a = fzero(f,-0.2)  
Zero found in the interval: [-0.10949, -0.264].  
a =  
-0.1316  
§5. §å ho¹  
1. C¸c lÖnh vÏ : MATLAB cung cÊp mét lo¹t hµm ®Ó vÏ biÓu diÔn c¸c vec t¬ sè liÖu còng  
nh− gi¶i thÝch vµ in c¸c ®−êng cong nµy.  
plot  
plot3  
loglog  
semilogx  
semilogy  
plotyy  
®å häa 2-D víi sè liÖu 2 trôc v« h−íng vµ tuyÕn tÝnh  
®å häa 3-D víi sè liÖu 2 trôc v« h−íng vµ tuyÕn tÝnh  
®å ho¹ víi c¸c trôc logarit  
®å ho¹ víi trôc x logarit vµ trôc y tuyÕn tÝnh  
®å ho¹ víi trôc y logarit vµ trôc x tuyÕn tÝnh  
®å ho¹ víi trôc y cã nh·n ë bªn tr¸i vµ bªn ph¶i  
2. T¹o h×nh vÏ : Hµm plot cã c¸c d¹ng kh¸c nhau phô thuéc vµo c¸c ®èi sè ®−a vµo. VÝ dô  
nÕu y lµ mét vec t¬ th× plot(y) t¹o ra mét ®−êng th¼ng quan hÖ gi÷a c¸c gi¸ trÞ cña y vµ chØ  
sè cña nã. NÕu ta cã 2 vec t¬ x vµ y th× plot(x,y) t¹o ra ®å thÞ quan hÖ gi÷a x vµ y.  
VÝ dô :  
t = [0:pi/100:2*pi]  
y = sin(t);  
plot(t,y)  
grid on  
3. §Æc t¶ kiÓu ®−êng vÏ :Ta cã thÓ dïng c¸c kiÓu ®−êng vÏ kh¸c nhau khi vÏ h×nh. Muèn  
thÕ ta chuyÓn kiÓu ®−êng th¼ng cho hµm plot  
13  
t = [0:pi/100:2*pi]  
y = sin(t);  
plot(t,y,’. ‘) % vÏ b»ng ®−êng chÊm chÊm  
grid on  
4.§Æc t¶ mµu vµ kÝch th−íc ®−êng vÏ : §Ó ®Æc t¶ mµu vµ kÝch th−íc ®−êng vÏ ta dïng c¸c  
tham sè sau:  
LineWidth  
®é réng ®−êng th¼ng,tÝnh b»ng sè ®iÓm  
mµu cña c¸c c¹nh cña khèi ®¸nh dÊu  
mµu cña khèi ®¸nh dÊu  
MarkerEdgeColor  
MarkerFaceColor  
MarkerSize  
kÝch th−íc cña khèi ®¸nh dÊu  
Mµu ®−îc x¸c ®Þnh b»ng c¸c tham sè:  
M·  
r
g
Mµu  
M·  
m
y
Mµu  
magenta  
yellow  
black  
red  
green  
blue  
b
k
c
cyan  
w
white  
C¸c d¹ng ®−êng th¼ng x¸c ®Þnh b»ng:  
M·  
-
KiÓu ®−êng  
®−êng liÒn  
--  
:
-.  
®−êng ®øt nÐt  
®−êng chÊm chÊm  
®−êng chÊm g¹ch  
C¸c d¹ng ®iÓm ®¸nh dÊu x¸c ®Þnh b»ng:  
M·  
+
o
KiÓu ®¸nh dÊu  
dÊu céng  
vßng trßn  
M·  
.
x
KiÓu ®¸nh dÊu  
®iÓm  
ch÷ thËp  
*
dÊu sao  
s
h×nh vu«ng  
d
^
>
p
h¹t kim c−¬ng  
®iÓm tam gi¸c h−íng lªn  
tam gi¸c sang ph¶i  
ngò gi¸c  
v
<
h
®iÓm tam gi¸c h−íng xuèng  
tam gi¸c sang tr¸i  
lôc gi¸c  
VÝ dô :  
x = -pi : pi/10 : pi;  
y = tan(sin(x)) - sin(tan(x));  
plot(x,y,'--rs’,'LineWidth',2,'MarkerEdgeColor','k',...  
'MarkerFaceColor','g','MarkerSize',10)  
sÏ vÏ ®−êng cong y = f(x) cã c¸c ®Æc t¶ sau :  
- ®−êng vÏ lµ ®−êng ®øt nÐt(--)  
- khèi ®¸nh dÊu h×nh vu«ng (s), ®−êng vÏ mµu ®á(r)  
- ®−êng vÏ réng 2 point  
- c¸c c¹nh cña khèi ®¸nh mµu ®en  
- khèi ®¸nh dÊu mµu green  
- kÝch th−íc khèi ®¸nh dÊu 10 point  
14  
5. Thªm ®−êng vÏ vµo ®å thÞ ®· cã : §Ó lµm ®iÒu nµy ta dïng lÖnh hold. Khi ta ®¸nh lÖnh  
hold on th× MATLAB kh«ng xo¸ ®å thÞ ®ang cã. Nã thªm sè liÖu vµo ®å thÞ míi nµy. NÕu  
ph¹m vi gi¸ trÞ cña ®å thÞ míi v−ît qu¸ c¸c gi¸ trÞ cña trôc to¹ ®é cò th× nã sÏ ®Þnh l¹i tØ lÖ  
xÝch.  
6.ChØ vÏ c¸c ®iÓm sè liÖu : §Ó vÏ c¸c ®iÓm ®¸nh dÊu mµ kh«ng nèi chóng l¹i víi nhau ta  
dïng ®Æc t¶ nãi r»ng kh«ng cã c¸c ®−êng nèi gi÷a c¸c ®iÓm ta gäi hµm plot chØ víi ®Æc t¶  
mµu vµ ®iÓm ®¸nh dÊu.  
x = -pi : pi/10 : pi;  
y = tan(sin(x)) - sin(tan(x));  
plot(x,y,'s','MarkerEdgeColor','k')  
7.VÏ c¸c ®iÓm vµ ®−êng: §Ó vÏ c¶ c¸c ®iÓm ®¸nh dÊu vµ ®−êng nèi gi÷a chóng ta cÇn m« t¶  
kiÓu ®−êng vµ kiÓu ®iÓm.  
VÝ dô :  
x = 0:pi/15:4*pi;  
y = exp(2*sin(x));  
plot(x,y,'-r',x,y,'ok')  
vÏ ®−êng cong y = f(x). §−êng nèi liÒn, mµu ®á. §iÓm ®¸nh dÊu ch÷ o cã mµu ®en.  
8.VÏ víi hai trôc y :LÖnh plotyy cho phÐp t¹o mét ®å thÞ cã hai trôc y. Ta còng cã thÓ dïng  
plotyy ®Ó cho gi¸ trÞ trªn hai trôc y cã kiÓu kh¸c nhau nh»m tiÖn so s¸nh.  
VÝ dô :  
t = 0:900;  
A = 1000;  
b = 0.005;  
a = 0.005;  
z2 = sin(b*t);  
z1 = A*exp(-a*t);  
[haxes,hline1,hline2] = plotyy(t,z1,t,z2,'semilogy','plot')  
9.VÏ ®−êng cong víi sè liÖu 3-D : NÕu x,y,z lµ 3 vec t¬ cã cïng ®é dµi th× plot3 sÏ vÏ ®−êng  
cong 3D.  
VÝ dô :  
t = 0:pi/50:10*pi;  
plot3(sin(t),cos(t),t)  
axis square;  
grid on  
10. §Æt c¸c th«ng sè cho trôc :Khi ta t¹o mét h×nh vÏ, MATLAB tù ®éng chän c¸c giíi h¹n  
trªn trôc to¹ ®é vµ kho¶ng c¸ch ®¸nh dÊu dùa trªn sè liÖu dïng ®Ó vÏ.  
Tuy nhiªn ta cã thÓ m« t¶ l¹i ph¹m vi gi¸ trÞ trªn trôc vµ kho¶ng c¸ch ®¸nh dÊu theo ý riªng.  
Ta cã thÓ dïng c¸c lÖnh sau :  
axis  
axes  
get vµ set  
gca  
®Æt l¹i c¸c gi¸ trÞ trªn trôc to¹ ®é  
t¹o mét trôc to¹ ®é míi víi c¸c ®Æc tÝnh ®−îc m« t¶  
cho phÐp x¸c ®Þnh vµ ®Æt c¸c thuéc tÝnh cña trôc to¹ ®é ®ang cã  
trë vÒ trôc to¹ ®é cò  
a. Giíi h¹n cña trôc vµ chia v¹ch trªn trôc :MATLAB chän c¸c giíi h¹n trªn trôc  
to¹ ®é vµ kho¶ng c¸ch ®¸nh dÊu dùa trªn sè liÖu dïng ®Ó vÏ. Dïng lÖnh axis cã thÓ ®Æt l¹i  
giíi h¹n nµy. Có ph¸p cña lÖnh :  
axis[ xmin , xmax , ymin , ymax]  
VÝ dô :  
x = 0:0.025:pi/2;  
plot(x,tan(x),'-ro')  
15  
axis([0 pi/2 0 5])  
MATLAB chia v¹ch trªn trôc dùa trªn ph¹m vi d÷ liÖu vµ chia ®Òu. Ta cã thÓ m« t¶ c¸ch  
chia nhê th«ng sè xtick vµ ytick b»ng mét vec t¬ t¨ng dÇn.  
VÝ dô:  
x = -pi:.1:pi;  
y = sin(x);  
plot(x,y)  
set(gca,'xtick',-pi:pi/2:pi)%gca-get current axis  
set(gca,'xticklabel',{'-pi','-pi/2','0','pi/2','pi'})  
8. Ghi nh·n lªn c¸c trôc to¹ ®é: MATLAB cung cÊp c¸c lÖnh ghi nh·n lªn ®å ho¹ gåm :  
title  
thªm nh·n vµo ®å ho¹  
thªm nh·n vµo trôc x  
thªm nh·n vµo trôc y  
thªm nh·n vµo trôc z  
thªm chó gi¶i vµo ®å thÞ  
hiÓn thÞ chuçi v¨n b¶n ë vÞ trÝ nhÊt ®Þnh  
®Æt v¨n b¶n lªn ®å ho¹ nhê chuét  
xlabel  
ylabel  
zlabel  
legend  
text  
gtext  
\bf - bold font  
\it - italics font  
\sl - oblique font (rarely available)  
\rm - normal font  
C¸c kÝ tù ®Æc biÖt xem trong Text properties.  
Ta dïng c¸c lÖnh xlabel , ylabel , zlabel ®Ó thªm nh·n vµo c¸c trôc to¹ ®é.  
VÝ dô :  
x = -pi:.1:pi;  
y = sin(x);  
plot(x,y)  
xlabel('t = 0 to 2\pi','Fontsize',16)  
ylabel('sin(t)','Fontsize',16)  
title('\it{Gia tri cua sin tu zero ®Õn 2 pi}','Fontsize',16)  
9. Thªm v¨n b¶n vµo ®å ho¹ : Ta cã thÓ thªm v¨n b¶n vµo bÊt k× chç nµo trªn h×nh vÏ nhê  
hµm text .  
VÝ dô  
text(3*pi/4,sin(3*pi/4),'\leftarrowsin(t)=0.707','FontSize',12)  
10. §Þnh vÞ v¨n b¶n trªn h×nh vÏ: Ta cã thÓ sö dông ®èi t−îng v¨n b¶n ®Ó ghi chó c¸c trôc  
ë vÞ trÝ bÊt k×. MATLAB ®Þnh vÞ v¨n b¶n theo ®¬n vÞ d÷ liÖu trªn trôc. VÝ dô ®Ó vÏ hµm y =  
α
t
Ae víi A = 0.25 , t = 0 ®Õn 900 vµ α = 0.005 ta viÕt :  
VÝ dô :  
t = 0:900;  
plot(t,0.25*exp(-0.005*t))  
§Ó thªm ghi chó t¹i ®iÓm t = 300 ta viÕt :  
text(300,.25*exp(-.005*300),’\bullet\leftarrow\fontname{times}0.25{\itt}} att  
{\itt}=300’,”FontSize’,14)  
Tham sè HorizontalAlignment vµ VerticalAlignment ®Þnh vÞ v¨n b¶n so víi c¸c to¹ ®é x, y,  
z ®· cho.  
11. §å ho¹ ®Æc biÖt:  
a. Khèi vµ vïng: §å ho¹ khèi vµ vïng biÓu diÕn sè liÖu lµ vec t¬ hay ma trËn.  
MATLAB cung cÊp c¸c hµm ®åho¹ khèi vµ vïng :  
bar  
hiÓn thÞ c¸c cét cña ma trËn m*n nh− lµ m nhãm, mçi nhãm cã n bar  
16  
barh  
n»m ngang  
bar3  
hiÓn thÞ c¸c cét cña ma trËn m*n nh− lµ m nhãm, mçi nhãm cã n bar  
hiÓn thÞ c¸c cét cña ma trËn m*n nh− lµ m nhãm, mçi nhãm cã n bar  
hiÓn thÞ c¸c cét cña ma trËn m*n nh− lµ m nhãm, mçi nhãm cã n bar  
d¹ng 3D  
bar3h  
d¹ng 3D n»m ngang  
MÆc ®Þnh, mçi phÇn tö cña ma trËn ®−îc biÓu diÔn b»ng mét bar.  
VÝ dô :  
y = [5 2 1  
6 7 3  
8 6 3  
5 5 5  
1 5 8];  
bar(y)  
b. M« t¶ d÷ liÖu trªn trôc : Ta dïng c¸c hµm xlabel vµ ylabel ®Ó m«t¶ c¸c d÷ liÖu  
trªn trôc.  
VÝ dô :  
nhdo = [29 23 27 25 20 23 23 27];  
ngay = 0:5:35;  
bar(ngay,nhdo)  
xlabel('ngay')  
ylabel('Nhiet do (^{o}C)')  
MÆc ®Þnh,ph¹m vi gi¸ trÞ cña trôc y lµ tõ 0 ®Õn 30. §Ó xem nhiÖt ®é trong kho¶ng tõ 15 ®Õn  
30 ta thay ®æi ph¹m vi gi¸ trÞ cña trôc y  
set(gca,'YLim',[15 30],'Layer','top')  
c.XÕp chång ®å thÞ :Ta cã thÓ xÕp chång sè liÖu trªn ®å thÞ thanh b»ng c¸ch t¹o ra  
mét trôc kh¸c trªn cïng mét vÞ trÝ vµ nh− vËy ta cã mét trôc y ®éc lËp víi bé sè liÖu kh¸c.  
VÝ dô :  
TCE = [515 420 370 250 135 120 60 20];  
temp = [29 23 27 25 20 23 23 27];  
days = 0:5:35;  
bar(days,temp)  
xlabel('Day')  
ylabel('Temperature (^{o}C)')  
d.XÕp chång ®−êng th¼ng trªn ®å thÞ thanh: §Ó xÕp chång mét sè liÖu lªn mét ®å  
thÞ thanh, cã trôc thø 2 ë cïng vÞ trÝ nh− trôc thø nhÊt ta viÕt :  
h1 = gca;  
vµ t¹o trôc thø 2 ë vÞ trÝ trôc thø nhÊt tr−íc nhÊt vÏ bé sè liÖu thø 2  
h2 = axes('Position',get(h1,'Position'));  
plot(days,TCE,'LineWidth',3)  
§Ó trôc thø 2 kh«ng g©y trë ng¹i cho trôc thø nhÊt ta viÕt :  
set(h2,'YAxisLocation','right','Color','none','XTickLabel',[])  
set(h2,'XLim',get(h1,'XLim'),'Layer','top')  
§Ó ghi chó lªn ®å thÞ ta viÕt  
text(11,380,'Concentration','Rotation',--55,'FontSize',16)  
ylabel('TCE Concentration (PPM)')  
title('Bioremediation','FontSize',16)  
17  
e. §å ho¹ vïng:Hµm area hiÓn thÞ ®−êng cong t¹o tõ mét vec t¬ hay tõ mét cét cña  
ma trËn. Nã vÏ c¸c gi¸ trÞ cña mét cét cña ma trËn thµnh mét ®−êng cong riªng vµ t« ®Çy  
vïng kh«ng gian gi÷a c¸c ®−êng cong vµ trôc x.  
VÝ dô :  
Y = [5 1 2  
8 3 7  
9 6 8  
5 5 5  
4 2 3];  
area(Y)  
hiÓn thÞ ®å thÞ cã 3 vïng, mçi vïng mét cét. §é cao cña mçi ®å thÞ vïng lµ tæng c¸c phÇn tö  
trong mét hµng. Mçi ®−êng cong sau sö dông ®−êng cong tr−íc lµm c¬ së. §Ó hiÓn thÞ  
®−êng chia l−íi ta dïng lÖnh:  
set(gca,'Layer','top')  
set(gca,'XTick',1:5)  
f.§å thÞ pie :§å thÞ pie hiÓn thÞ theo tØ lÖ phÇn tr¨m cña mét phÇn tö cña mét vec t¬  
hay mét ma trËn so víi tæng c¸c phÇn tö . pie vµ pie3 t¹o ra ®å thÞ 2D vµ 3D.  
VÝ dô :  
X = [19.3 22.1 51.6;  
34.2 70.3 82.4;  
61.4 82.9 90.8;  
50.5 54.9 59.1;  
29.4 36.3 47.0];  
x = sum(X);  
explode = zeros(size(x));  
[c,offset] = max(x);  
explode(offset) = 1;  
h = pie(x,explode)  
Khi tæng c¸c phÇn tö trong ®èi sè thø nhÊt b»ng hay lín h¬n 1, pie vµ pie3 chuÈn ho¸ c¸c gi¸  
trÞ. Nh− vËy cho vec t¬ x,mçi phÇn cã diÖn tÝch x i/sum(x i) víi x i lµ mét phÇn tö cña x. Gi¸  
trÞ ®−îc chuÈn ho¸ m« t¶ phÇn nguyªn cña mçi vïng. Khi tæng c¸c phÇn tö trong ®èi sè thø  
nhÊt nhá h¬n 1, pie vµ pie3 kh«ng chuÈn ho¸ c¸c phÇn tö cña vec t¬ x. Chóng vÏ mét phÇn  
pie.  
VÝ dô ;  
x = [.19 .22 .41];  
pie(x)  
g.Lµm h×nh chuyÓn ®éng :Ta cã thÓ t¹o ra h×nh chuyÓn ®éng b»ng 2 c¸ch :  
• t¹o vµ l−u nhiÒu h×nh kh¸c nhau vµ lÇn l−ît hiÓn thÞ chóng  
• vÏ vµ xo¸ liªn tôc mét ®èi t−îng trªn mµn h×nh,mçi lÇn vÏ l¹i cã sù thay ®æi.  
Víi c¸ch thø nhÊt ta thùc hiÖn h×nh chuyÓn ®éng qua 3 b−íc:  
• dïng hµm moviein ®Ó dµnh bé nhí cho mét ma trËn ®ñ lín nh»m l−u c¸c khung  
h×nh.  
• dïng hµm getframes ®Ó t¹o c¸c khung h×nh.  
• dïng hµm movie ®Ó hiÓn thÞ c¸c khung h×nh.  
Sau ®©y lµ vÝ dô sö dông movie ®Ó quan s¸t hµm fft(eye(n)).Ta t¹o hµm moviem.m nh− sau :  
axis equal  
M=moviein(16,gcf);  
set(gca,'NextPlot','replacechildren')  
18  
h=uicontrol('style','slider','position',[100 10 500 20],'Min',1,'Max',16)  
for j=1:16  
plot(fft(eye(j+16)))  
set(h,'Value',j)  
M(:,j)=getframe(gcf);  
end  
clf;  
axes('Position',[0 0 1 1]);  
movie(M,30)  
B−íc ®Çu tiªn ®Ó t¹o h×nh ¶nh chuyÓn ®éng lµ khëi g¸n ma trËn. Tuy nhiªn tr−íc khi gäi  
hµm moviein, ta cÇn t¹o ra c¸c trôc to¹ ®é cã cïng kÝch th−íc víi kÝch th−íc mµ ta muèn  
hiÓn thÞ h×nh. Do trong vÝ dô nµy ta hiÓn thÞ c¸c sè liÖu c¸ch ®Òu trªn vßng trßn ®¬n vÞ nªn ta  
dïng lÖnh axis equal ®Ó x¸c ®Þnh tØ lÖ c¸c trôc. Hµm moviein t¹o ra ma trËn ®ñ lín ®Ó chøa  
16 khung h×nh. Ph¸t biÓu :  
set(gca,'NextPlot','replacechildren')  
ng¨n hµm plot ®−a tØ lÖ c¸c trôc vÒ axis normal mçi khi nã ®−îc gäi. Hµm getframe kh«ng  
®èi sè tr¶ l¹i c¸c ®iÓm ¶nh cña trôc hiÖn hµnh ë h×nh hiÖn cã. Mçi khung h×nh gåm c¸c sè  
liÖu trong mét vec t¬ cét. Hµm getframe(gcf) chôp toµn bé phÇn trong cña mét cöa sæ hiÖn  
hµnh. Sau khi t¹o ra h×nh ¶nh ta cã thÓ ch¹y chóng mét sè lµn nhÊt ®Þnh vÝ dô 30 lÇn nhê  
hµm movie(M,30) .  
Mét ph−¬ng ph¸p n÷a ®Ó t¹o h×nh chuyÓn ®éng lµ vÏ vµ xo¸, nghÜa lµ vÏ mét ®èi t−îng ®å  
ho¹ råi thay ®æi vÞ trÝ cña nã b»ng c¸ch thay ®æi to¹ ®é x,y vµ z mét l−îng nhá nhê mét vßng  
lÆp. Ta cã thÓ t¹o ra c¸c hiÖu øng kh¸c nhau nhê c¸c c¸ch xo¸ h×nh kh¸c nhau. Chóng gåm:  
• none  
• background  
• xor  
MATLAB kh«ng xo¸ ®èi t−îng khi nã di chuyÓn  
MATLAB xo¸ ®èi t−îng b»ng c¸ch vÏ nã cã mµu nÒn  
MATLAB chØ xo¸ ®èi t−îng  
VÝ dô : Ta t¹o ra M-file cã tªn lµ moviem2.m nh− sau :  
A = [ -8/3 0 0; 0 -10 10; 0 28 -1 ];  
y = [35 -10 -7]';  
h = 0.01;  
p = plot3(y(1),y(2),y(3),'.', ...  
'EraseMode','none','MarkerSize',5); % Set EraseMode to none  
axis([0 50 -25 25 -25 25])  
hold on  
for i=1:4000  
A(1,3) = y(2);  
A(3,1) = -y(2);  
ydot = A*y;  
y = y + h*ydot;  
set(p,'XData',y(1),'YData',y(2),'ZData',y(3)) % Change coordinates  
drawnow  
i = i+1;  
end  
12. §å ho¹ 3D:  
a.C¸c lÖnh c¬ b¶n :LÖnh mesh vµ surf t¹o ra mÆt 3D tõ ma trËn sè liÖu. Gäi ma trËn  
sè liÖu lµ z mµ mçi phÇn tö cña nã z(i,j) x¸c ®Þnh tung ®é cña mÆt th× mesh(z) t¹o ra mét l−íi  
cã mµu thÓ hiÖn mÆt z cßn surf(z) t¹o ra mét mÆt cã mµu z.  
b. §å thÞ c¸c hµm hai biÕn: B−íc thø nhÊt ®Ó thÓ hiÖn hµm 2 biÕn z = f(x,y)  
19  
lµ t¹o ma trËn x vµ y chøa c¸c to¹ ®é trong miÒn x¸c ®Þnh cña hµm. Hµm meshgrid sÏ biÕn  
®æi vïng x¸c ®Þnh bëi 2 vec t¬ x vµ y thµnh ma trËn x vµ y. Sau ®ã ta dïng ma trËn nµy ®Ó  
®¸nh gi¸ hµm.  
VÝ dô : ta kh¶o s¸t hµm sin(r)/r. §Ó tÝnh hµm trong kho¶ng -8 vµ 8 theo x vµ y ta chØ cÇn  
chuyÓn mét vec t¬ ®èi sè cho meshgrid :  
[x,y] = meshgrid(-8:.5:8);  
r = sqrt(x.^2+y.^2)+0.005;  
ma trËn r chøa kho¶ng c¸ch tõ t©m cña ma trËn. TiÕp theo ta dïng hµm mesh ®Ó vÏ hµm.  
z = sin(r)./r;  
mesh(z)  
c.§å thÞ ®−êng ®¼ng møc: C¸c hµm contour t¹o, hiÓn thÞ vµ ghi chó c¸c ®−êng ®¼ng  
møc cña mét hay nhiÒu ma trËn. Chóng gåm :  
clabel  
contour  
t¹o c¸c nh·n sö dông ma trËn contour vµ hiÓn thÞ nh·n  
hiÓn thÞ c¸c ®−êng ®¼ng møc t¹o bëi mét gi¸ trÞ cho tr−íc cña ma trËn  
Z.  
contour3  
contourf  
contourc  
hiÓn thÞ c¸c mÆt ®¼ng møc t¹o bëi mét gi¸ trÞ cho tr−íc cña ma trËn Z.  
hiÓn thÞ ®å thÞ contour 2D vµ t« mµu vïng gi÷a 2 c¸c ®−êng  
hµm cÊp thÊp ®Ó tÝnh ma trËn contour  
Hµm meshc hiÓn thÞ contour vµ l−íi vµ surfc hiÓn thÞ mÆt contour.  
VÝ dô :  
[X,Y,Z] = peaks;  
contour(X,Y,Z,20)  
Mçi contour cã mét gi¸ trÞ g¾n víi nã. Hµm clabel dïng gi¸ trÞ nµy ®Ó hiÓn thÞ nh·n ®−êng  
®ång møc 2D. Ma trËn contour chøa gi¸ trÞ clabel dïng cho c¸c ®−êng contour 2D. Ma trËn  
nµy ®−îc x¸c ®Þnh bëi contour,contour3 vµ contourf.  
VÝ dô : §Ó hiÓn thÞ 10 ®−êng ®¼ng møc cña hµm peak ta viÕt :  
Z = peaks;  
[C,h] = contour(Z,10);  
clabel(C,h)  
title({'Contour Labeled Using','clabel(C,h)'})  
Hµm contourf hiÓn thÞ ®å thÞ ®−êng ®¼ng møc trªn mét mÆt ph¼ng vµ t« mµu vïng cßn l¹i  
gi÷a c¸c ®−êng ®¼ng møc. §Ó kiÓm so¸t mµu t« ta dïng hµm caxis.  
VÝ dô :  
Z = peaks;  
[C,h] = contourf(Z,10);  
caxis([-20 20])  
title({'Filled Contour Plot Using','contourf(Z,10)'})  
C¸c hµm contour(z,n) vµ contour(z,v) cho phÐp ta chØ râ sè l−îng møc contour hay mét møc  
contour cÇn vÏ nµo ®ã víi z lµ ma trËn sè liÖu, n lµ sè ®−êng contour vµ v lµ vec t¬ c¸c møc  
contour. MATLAB kh«ng ph©n biÖt gi÷a ®¹i l−îng vec t¬ mét phÇn tö hay ®¹i l−îng v«  
h−íng. Nh− vËy nÕu v lµ vec t¬ mét phÇn tö m« t¶ mét contour ®¬n ë mét møc hµm contour  
sÏ coi nã lµ sè l−îng ®−êng contour chø kh«ng ph¶i lµ møc contour. Nh− vËy,contour(z,v)  
còng nh− contour(z,n). §Ó hiÓn thÞ mét ®−êng ®¼ng møc ta cÇn cho v lµ mét vec t¬ cã 2 phÇn  
tö víi c¶ hai phÇn tö b»ng møc mong muèn.V Ý dô ®Ó t¹o ra mét ®−êng ®¼ng møc 3D cña  
hµm peaks  
VÝ dô :  
xrange = -3:.125:3;  
yrange = xrange;  
[X,Y] = meshgrid(xrange,yrange);  
20  
Tải về để xem bản đầy đủ
pdf 26 trang myanh 21161 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Matlab cơ bản - Chương 1: Matlab cơ bản", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_matlab_co_ban_chuong_1_matlab_co_ban.pdf