Professional Documents
Culture Documents
12/2007
Gi i thi u v MATLAB
Ton h c
Matrix laboratory H th ng tnh ton khoa h c k thu t Ngn ng l p trnh c p cao Th vi n hm phong ph M ph ng, v th , bi u Phn tch d li u Pht tri n ph n m m k thu t Phin b n m i nh t: Matlab 2007.
3
Maple
Mathematica
Yu c u
Cc b c
Matlab Fuzzy Logic Image Processing Neural Network Signal Processing Simulink Symbolic Math
8
Giao di n Matlab
Kh i ng
Thot
Th c thi l nh
9 10
>> 2 + 3
Enter
Cc phm i u khi n
Ch c nng
thi hnh l nh Xo dng l nh hi n hnh g i cc l nh tr c
Phm
Enter
Esc
backspace, delete
home, end
12
Bi n (variable) variable)
Tn bi n: B t u b ng 1 ch ci, ti p theo l ch ci, ch s ho c d u g ch d i _. Cc ch ci phn bi t ch hoa, ch th ng. V d : H p l : x, a_b1, v1 Khng h p l : _a, 1x, abc* Bi n c bi t ans: lu gi tr php ton v a tnh. L nh who v whos: cho bi t thng tin v cc bi n ang hi n h u.
13 14
Bi n (variable) variable)
Khng c n khai bo ki u, s chi u, di bi n. M i khi m t ci tn m i xu t hi n v i php gn, Matlab t o bi n v c p pht b nh cho n. V d : sosv = 110 t o m t bi n tn sosv lu gi tr 110. N u l bi n c, n s thay i n i dung m i n u th c hi n php gn. V d : X=3 X=4
Php ton
x=2
C ng
x+y
Tr
xy
Nhn
x*y
Chia
x/y
Chia ng c
x\y
Lu th a
x^y
Ki u s trong Matlab
H ng s (constant) trong Matlab constant)
pi i, j eps realmin realmax Inf NaN
17
o (i^2 = -1 )
D ng hi n th s
2600/9
>>format ki u
Hi n th
long
bank
rat
a/b (phn s )
N u khng mu n th y k t qu c a cc php tnh trung gian, ta t d u ch m ph y sau bi u th c >> x=-13; y = 5*x, z = x^2+y y= -65 z= 104 >>
19
20
Xo bi n
Matlab cung c p r t phong ph v a d ng cc hm ton h c, t s c p n cao c p. C 2 lo i hm trong Matlab
Hm (function) function)
clear x
Xo m t lc nhi u bi n:
clear a b c
Xo h t t t c cc bi n hi n h u:
clear
21
Built-in fuction: hm s n c. V d : sin(), sqrt(), exp(), M-file function: hm vi t trong cc t p tin .m c a Matlab. V d : am(), fsk(), Chng ta khng th th y source code c a cc hm built-in. Ng c l i, ta c th xem v ch nh s a source code c a cc hm lu trong cc file .m.
22
M t s v d v bi u th c trong Matlab
rho = (1+sqrt(5))/2
rho =
1.6180
a = abs(3+4i)
a=
huge = exp(log(realmax))
huge =
23
1.7977e+308
Xem cch s d ng m t >>help converse hm c tn l converse Tm hm tnh ton trong Help \ Functions m t lnh v c no Categorical List ho c dng ch c nng Search Tm tn hm Help \ Functions Alphabetical List ho c tm trong Index Tm hi u v m t v n Ch ng h n Help \ g Mathematics
24
M t vi hm built-in c b n
log log10 round floor Hm lm trn n s nguyn g n nh t Hm logarit c s 10 Hm logarit neper
Vectors
Vector hng
abs
Tr tuy t i
sqrt
Cn b c 2
sign
Hm d u
conj Lm trn n s nguyn g n nh t nh hn hay b ng s c n lm trn B i ph n th p phn c a s c n lm trn Lm trn n s nguyn g n nh t l n hn hay b ng s c n lm trn Ph n d sau php chia
Lin h p c a 1 s ph c
imag
Ph n o c a 1 s ph c
Ph n th c c a 1 s ph c
angle
Gc pha c a 1 s ph c
cos
Hm cosine
sin
Hm sine
>> v4 = 3*v v4 = 3.0000 9.0000 6.7082 >> v5 = 2*v -3*v3 v5 = -7.0000 -6.0000 -10.5279 >> v + v2 ??? Error using ==> + Matrix dimensions must agree.
tan rem
Hm tangent
exp
Hm ex
>> v = [ 1 3, sqrt(5)] v= 1.0000 3.0000 2.2361 >> length(v) ans = 3 >> v2 = [3+ 4 5] v2 = 75 >> v3 = [3 +4 5] v3 = 345 >> v + v3 ans = 4.0000 7.0000 7.2361
25
26
Vectors
Vectors
M t cch khc t o vector hng l dng d u :
>> 1:4 ans = 1234 >> 3:7 ans = 34567 >> 1:-1 ans = [] >> 0.32:0.1:0.6 ans = 0.3200 0.4200 0.5200 >> -1.4:-0.3:-2 ans = -1.4000 -1.7000 -2.0000
27 28
>> w = [1 2 3], z = [8 9] >>cd = [2*z,-w] w= 123 z= 89 cd = 16 18 -1 -2 -3 >> w(2) = -2, w(3) w= 1 -2 3 ans = 3
Vectors
Chuy n v
Vector c t
>> c3 = 2*c - 3*c2 c3 = -7.0000 -6.0000 -10.5279
>> w, w', c, c' w= 1 -2 3 ans = 1 -2 3 c= 1.0000 3.0000 2.2361 ans = 1.0000 3.0000 2.2361 >> t = w + 2*c' t= 3.0000 4.0000 7.4721
29
>> T = 5*w'-2*c T= 3.0000 -16.0000 10.5279 >> x = [1+3i, 2-2i] ans = 1.0000 + 3.0000i 2.0000 - 2.0000i >> x' ans = 1.0000 - 3.0000i 2.0000 + 2.0000i >> x.' ans = 1.0000 + 3.0000i 2.0000 - 2.0000i
30
V th (Plotting)
V th (Plotting)
V hm s y=sin3x trong o n 0x1 L y m u hm ny b ng 1 s i m l n v k t h p cc i m (x,y) l i b ng cc ng th ng >> N = 10; h = 1/N; x = 0:h:1; Ho c >> x = linspace (0,1,11); >> y = sin(3*pi*x); >> plot(x,y)
31
y = sin 3x v i 0 x 1 s d ng b c h = 0:1
32
V th (Plotting)
>> plot(x,y,r-',x,cos(3*pi*x),b--') >> legend('Sin curve','Cos curve') >> title('Multi-plot ') >> xlabel('x axis'), ylabel('y axis') >> grid
T o l i
Subplot
C a s chia lm mxn c a s nh hn
>> subplot(221), plot(x,y) >> xlabel('x'),ylabel('sin 3 pi x') >> subplot(222), plot(x,cos(3*pi*x)) >> xlabel('x'),ylabel('cos 3 pi x') >> subplot(223), plot(x,sin(6*pi*x)) >> xlabel('x'),ylabel('sin 6 pi x') >> subplot(224), plot(x,cos(6*pi*x)) >> xlabel('x'),ylabel('cos 6 pi x')
35
36
Dot product
M t ma tr n m x n l m t m ng s ch nh t c m hng v n c t.
>> A = [5 7 9 1 -3 -7] A= 579 1 -3 -7 >> B = [-1 2 5; 9 0 5] B= -1 2 5 905 >> C = [0, 1; 3, -2; 4, 2] C= 01 3 -2 42
38
Matrix
u v v l 2 vector cng ki u (hng ho c c t) u . v = [u1v1; u2v2; ; unvn] >> u.*w ans = 20 -11 36 >> u.*v' ans = 200 231 -264 V d : N u ta c n v hm y=x.sinx, ph i dng dot product
37
Kch th c c a ma tr n
123 456
Thm c t
E = [A; C] 10 12 D = [A B] 11 13 D = horzcat(A, B) E = vertcat(A,C) 123 456 789 1 2 3 10 12 C 978 789 4 5 6 11 13 978 897 897
39
Ma tr n c bi t
FOR k = mang
doan_lenh
Vng l p FOR
for k = [1 2; 3 4] sum(k) end 4 6
END m i b c, k l y gi tr l t ng c t c a mang
42
Break
break dng thot ngang vng l p hi n t i V d : cho n l n hn 2, o n l nh sau ki m tra n c ph i l s nguyn t for k = 2 : n-1 nif mod(n,k)==0
disp(n khong nguyen to) break
end
43
end
44
Cu l nh IF ELSE Cu l nh IF
Doan_lenh
ELSEIF bt_logic
else
disp(Pt co 2 nghiem pbiet) (-b-sqrt(delta))/2/a (-b+sqrt(delta))/2/a
Doan_lenh
Cu l nh IF nh gi tr bieu_thuc_logic v th c thi Doan_lenh n u bieu_thuc_logic l true. true. Cc t kho ELSEIF v ELSE l tu ch n. ng v i m t IF l m t END k t thc Doan_lenh cu i cng.
ELSE
Doan_lenh end
45
END
46
Cu l nh IF l ng nhau
File .m
IF bt1
IF bt2
disp(dng) if mod(a,2) ~= 0
END
disp(l )
END
else
disp(ch n)
end
else
47
disp(khng dng)
end
File .m trong Matlab l m t file vn b n ghi cc dng l nh Matlab. C th so n th o cc file.m b ng MATLAB Editor ho c b t k trnh so n th o vn b n no. Lu file c ui l .m G tn file th c thi n i dung cc dng l nh trong file. C 2 lo i file.m: Scripts, Scripts, ch th c thi cc dng l nh, khng c tham s truy n vo hay tr v m t gi tr no c . Functions, Functions, c th nh n tham s truy n vo v tr v gi tr xu t.
48
N i dung
Trong MATLAB s d ng cch bi u di n d i d ng vector ho c ma tr n bi u di n tn hi u >>A=randsrc(2,10,[0,1]) A= 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 >>A=randint(2,10,[0,1]) A= 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 >>A=randint(1,10,2) %ho c randint(1,10) A= 1 0 0 0 1 1 1 1 0 0
49 50
T o ngu n tn hi u s
T o ngu n tn hi u s
T o ngu n tn hi u s
n=30000; %So bit phat nbit=10; %So bit quan sat fb=1000; %Toc do bit fs=50*fb; %Tan so lay mau x=randint(1,n,2); len=fs/fb*nbit; %Tong so mau trong 10 chu ki bit pattern=[ ]; %Khoi tao vector tin hieu for k=1:nbit %Xet tung chu ki bit if x(k)==0 sig=zeros(1,fs/fb); %Tao 50 mau gia tri 0 else sig=ones(1,fs/fb); %Tao 50 mau gia tri 1 end pattern=[pattern sig]; end time=0:(1/fs):(len-1)/fs; %Vector thoi gian plot(time,pattern); title('Random signals'); xlabel('Time in sec');ylabel('Voltage level'); axis([0 len/fs -0.5 1.5]);
51 52
V d : M t ngu n tn hi u pht ra 30.000 bit n c c ng u nhin, t c fb=1000bps, t n s l y m u fs=50*fb v tn hi u ta ph i t o ra nhi u m u tn hi u trong 1 chu k bit. Quan st trong nbit=10 bit u tin 1s c fb bit, 1s c fs samples 1 bit c fs/fb samples nbit c (fs/fb)*nbit samples
T o ngu n tn hi u s
Bi u di n dng cc vector hay ma tr n M i ph n t c a vector l gi tr c a tn hi u t i cc th i i m l y m u xc nh b i vector th i gian t T n s l y m u l fscc ph n t c a vector th i gian cch u nhau 1 kho ng 1/fs Vd: Bi u di n tn hi u x=sin(20t) trong kho ng [0, 0.1s] v i t n s fs=8kHz Trong 1s c 8000 samplesv i 0.1s ta c 0.1*8000=800 m u t=0:1/fs:0.1
53 54
T o ngu n tn hi u tng t
K t qu ch y chng trnh:
n=30000; %So bit phat nbit=10; %So bit quan sat fb=1000; %Toc do lay mau fs=50*fb; %Tan so lay mau x=randint(1,n,2); len=fs/fb*nbit; pattern=[ ]; for k=1:nbit if x(k)==0 sig=zeros(1,fs/fb); else sig=ones(1,fs/fb); end pattern=[pattern sig]; end time=0:(1/fs):(len-1)/fs; plot(time,pattern); title('Random signals'); xlabel('Time in sec');ylabel('Voltage level'); axis([0 len/fs -0.5 1.5]);