Tải bản đầy đủ (.pdf) (28 trang)

Giáo trình Matlap Chương 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (546.9 KB, 28 trang )

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
g i l i l nh tr c đó

Ctrl N
g i l nh sau

Ctrl B
lùi l i m t kí t

Ctrl F
ti n lên m t kí t
Ctrl → Ctrl R


sang ph i m t t
Ctrl ← Crtl L
sang ph i m t t
home Ctrl A
v đ u dòng
end
Ctrl E
v cu i dòng
esc
Ctrl U
xoá dòng
del
Ctrl D
xoá kí t t i ch con nháy đ ng
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
MATLAB phân bi t ch hoa và ch th ng.

c khi dùng.

1


Các phép toán :
+ , , * , / , \ (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
i
s o
j
t ng t i
eps
sai s 2 52
realmin
s th c nh nh t 2 1022
realmax
s th c l n nh t 21023
inf
vô cùng l n
NaN
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:
2


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 =
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à
3



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

A(3, :)
ans =
9 6 7 12
Vi t B = A(:, [1 3 2 4])
ta t o đ c 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 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
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=
4


5
5

5
5

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
randn
t o ra ma tr n mà các ph n t ng u nhiên phân b tr c giao
e = randn(3, 3)
e=
0.4326 0.2877 1.1892
1.6656 1.1465 0.0376

0.1253 1.1909 0.3273
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 4
1 3 6 10
1 4 10 20
rand

eye(n) t o ma tr n đ n v
eye(3)
ans =
1 0 0
0 1 0
0 0 1
eye(m,n) t o ma tr n đ n v m rông
eye(3,4)
ans =
5


1 0 0 0
0 1 0 0
0 0 1 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
ct1_1.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:
ct1_1
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
c = [a+2; b]

c=
3 3 3
3 3 3
6


3 3 3
5 5 5
5 5 5
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
: X= A + B
Tr
: X= A B

Nhân
: X= A * B
: X.*A nhân các ph n t t ng ng v i nhau
Chia
: 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
Lu th a
: X = A^2
: X = A.^2
Ngh ch đ o : X = inv(A)
Đ nh th c
: d = det(A)
§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>
7



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 trình ct1_2. 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>

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 (ct1_3.m) nh sau:
disp( xin chao );
gu = input( Nhap so lan in: );
i = 0;
8


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 (ct1_4.m)
x = fix(100*rand);
n = 7;
t = 1;
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.

9


§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)
Ta l u đo n mã l nh này vào m t file tên là ct1_5.m. Đây chính là m t
script file. Đ th c hi n các mã ch a trong file ct1_5.m t c a s l nh ta nh p
ct1_5 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.
• 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
10


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 :
y& 1 = y1 − αy1 y 2
y& 2 = − y 2 + βy1 y 2

Ta t o ra M file tên là ct1_6.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(‘ct1_6’,[0 10],[1 1]);
plot(t,y)
Đ ti n d ng ta có th l u đo n l nh trên vào M file ct1_7.m.
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
format long e
format short g

K t qu
Default. Same as short.
5 digit scaled fixed point

15 digit scaled fixed point
5 digit floating point
15 digit floating point
Best of 5 digit fixed or floating

Ví d
3.1416
3.14159265358979
3.1416e+00
3.141592653589793e+00
3.1416
11


format long g
format hex
format bank
format rat
format +
format
compact
format loose

Best of 15 digit fixed or floating
Hexadecimal
Fixed dollars and cents
Ratio of small integers
+, , blank

3.14159265358979

400921fb54442d18
3.14
355/113
+

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)
hàm e x
sqrt(x)
căn b c hai c a x
log(x)
logarit t nhiên
log10(x)
logarit c s 10
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 uc ax
cos(x)
sin(x)
tan(x)
acos(x)
asin(x)
atan(x)
cosh(x)
coth(x)
sinh(x)
tanh(x)
12


acosh(x)
acoth(x)
asinh(x)
atanh(x)
5. Các phép toán trên hàm toán h c:
a. Bi u di n hàm toán h c: 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
+
−6
f ( x) =

2
( x − 0.3) + 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 ])
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, ta 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ó hàm three_var.m:
function b = three_var(v)
x = v(1);
y = v(2);

13


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 hàm này b t đ u t 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
đ h a 2 D v i s li u 2 tr c vô h ng và tuy n tính
plot3
đ h a 3 D v i s li u 2 tr c vô h ng và tuy n tính
loglog
đ ho v i các tr c logarit
semilogx đ ho v i tr c x logarit và tr c y tuy n tính
semilogy đ ho v i tr c y logarit và tr c x tuy n tính
plotyy
đ 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 v cho hàm plot.
14


t = [0:pi/100:2*pi];
y = sin(t);
plot(t,y,’. ‘) % v b ng đ
grid on
(l u trong file ct1_8.m)

ng ch m ch m

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
MarkerEdgeColor
màu c a các c nh c a kh i đánh d u
MarkerFaceColor
màu c a kh i đánh d u

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

Màu
r
red
m
magenta
g
green
y
yellow
b
blue
k
black
c
cyan
w
white

Các d ng đ

ng th ng xác đ nh b ng:

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:

Ki u đánh d u

+ d u c ng
.
o vòng tròn
x
*
d u sao
s
d h t kim c ng
v
^ đi m tam giác h ng lên
<
> tam giác sang ph i
h
p ngũ giác

Ki u đánh d u
đi m
ch th p
hình vuông
đi m tam giác h ng xu ng

tam giác sang trái
l c giác

15


Ví d (l u trong ct1_9.m):
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
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.
Ví d :
x = pi : pi/10 : pi;
y = tan(sin(x)) sin(tan(x));
plot(x,y, s , MarkerEdgeColor , k )
(l u trong ct1_10.m)

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 (l u trong ct1_11.m):
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
16


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 );
(l u trong ct1_12.m)
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

(l u trong ct1_13.m)
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
đ t l i các giá tr trên tr c to đ
axes
t o m t tr c to đ m i v i các đ c tính đ c mô t
get và set cho phép xác đ nh và đ t các thu c tính c a tr c to đ đang

gca
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 )
17


axis([0 pi/2 0 5])
(l u trong ct1_14.m)
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:p);
set(gca, xticklabel ,{ pi , pi/2 , 0 , pi/2 , pi })
(l u trong ct1_15.m)
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
xlabel
thêm nhãn vào tr c x
ylabel
thêm nhãn vào tr c y
zlabel
thêm nhãn vào tr c z
legend
thêm chú gi i vào đ th
text
hi n th chu i văn b n v trí nh t đ nh
gtext
đ t văn b n lên đ ho nh chu t
\bf
bold font
\it
italics font
\sl
oblique font (ch nghiêng)
\rm
normal font
Các kí t đ c bi t xem trong String 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)
(l u trong ct1_16.m)
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
18


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 = Aeαt v i A = 0.25 , t = 0 đ n 900 và α = 0.005 ta vi t :
Ví d (l u trong ct1_17.m) :
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{\ite}^( 0.005{\itt}} at,...
{\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
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
có n bar
barh
hi n th các c t c a ma tr n m*n nh là m nhóm, m
có n bar n m ngang
bar3
hi n th các c t c a ma tr n m*n nh là m nhóm, m
có n bar d ng 3D
bar3h
hi n th các c t c a ma tr n m*n nh là m nhóm, m
có n bar 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)
(l u trong ct_18.m). Sau đó nh p l nh bar3(y) ta có đ th 3D.

hay ma
i nhóm
i nhóm
i nhóm
i nhóm

19



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) )
(l u trong ct1_19.m)
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 )
và trên đ th , ph m vi giá tr c a tr c y đã thay đ i.
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 : Kh o sát nh p đ sinh h c liên quan đ n m t đ trichloetylene(TCE)
cho s li u:
TCE = [515 420 370 250 135 120 60 20];
nhdo = [29 23 27 25 20 23 23 27];
ngay = 0:5:35;
bar(ngay,nhdo)
xlabel( Ngay )
ylabel( Nhiet do (^{o}C) )
Đ x p ch ng m t s li u lên m t đ th thanh trên, 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, Mat do , Rotation , 55, FontSize ,16)
ylabel( TCE Mat do (PPM) )
title( Xep chong do thi , FontSize ,16)
20


(l u trong ct1_20.m)
d. Đ 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 (l u trong ct1_21.m):
Y = [5 1 2
837
968
555
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)
grid on
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 (l u trong ct1_22.m):
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 xi / sum( xi )
v i xi 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 :
21


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
ct1_23.m nh sau :
axis equal
M = moviein(16,gcf);
set(gca, NextPlot , replacechildren )
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) .

22


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
MATLAB không xoá đ i t ng khi nó di chuy n
• background
MATLAB xoá đ i t ng b ng cách v nó có màu
n n
• xor
MATLAB ch xoá đ i t ng
Ví d : Ta t o ra M file có tên là ct1_24.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); % dat EraseMode ve 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)) % thay doi toa do
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)
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 :
23


[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)
(l u trong ct1_25.m)
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
t o các nhãn s d ng ma tr n contour và hi n th nhãn
contour
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 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.
contourf hi n th đ th contour 2D và tô màu vùng gi a 2 các đ ng
contourc 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({ Cac contour co nhan , clabel(C,h) })
(l u trong ct1_26.m)
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 (l u trong ct1_27.m):
Z = peaks;
[C,h] = contourf(Z,10);
caxis([ 20 20])
title({ Contour co to mau , contourf(Z,10) })
24


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 (l u trong ct1_28.m):
xrange = 3:.125:3;
yrange = xrange;
[X,Y] = meshgrid(xrange,yrange);
Z = peaks(X,Y);
contour3(X,Y,Z)
Đ hi n th m t m c Z = 1, ta cho v là [1 1]
v = [1 1]
contour3(X,Y,Z,v)
Hàm ginput cho phép ta dùng chu t hay các phím mũi tên đ ch n các đi m
v . Nó tr v to đ c a v trí con tr . Ví d sau s minh ho các dùng hàm
ginput và hàm spline đ t o ra đ ng cong n i suy hai bi n.
Ví d : Ta t o m t M file có tên ct1_29.m nh sau :
disp( Chuot phai tro cac diem tren duong ve )
disp( Chuot trai tro diem cuoi cua duong ve )
axis([0 10 0 10])
hold on
x = [];
y =[];
n = 0;
but = 1;
while but = =1
[xi,yi,but] = ginput(1);
plot(xi,yi, go )

n = n +1;
x(n,1) = xi;
y(n,1) = yi;
end
25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×