
Gi
i thiu sơ lc v ngôn ng
Matlab
(Matrix Laboratory)

Gi
i thi
u sơ l
c v
ngôn ng
Matlab
Gii thiu sơ lc v ngôn ng Matlab
Matlab là mt ngôn ng thông dch, cho phép thc hin nhanh chóng các gii thut, hin
th
d liu (di dng th 2D, 3D, hình nh và thm chí chui các hình nh) và thc hin các
giao ti
p ha d dàng.
Tài liu này giúp làm quen nhanh chóng vi Matlab, khin ngi c cm thy thích thú
trong vi
c tìm hiu thêm.
1 B
t u làm quen
1.1 Chu
n b
Matlab s thông dch các lnh c lu trong tp tin có phn m rng .m (ví d toto.m)
Ngi dùng nên to ra mt th mc làm vic (C:\Temp\ chng hn) lu các
chơng tr
ình ca mình, gi matlab và yêu cu nó thc hin các lnh có trong tp tin chơng
trình
toto.m
1.2 Ch
y Matlab
khi ng Matlab, nhp chut vào biu tng Matlab nu bn dùng HH Windows
ho
c gõ matlab nu HH là Unix.
Khung ca s làm vic ca Matlab hin ra vi du nh!c >>, cho phép ngi dùng gõ vào
các l
nh mà nó s c thc hin sau khi ngi dùng gõ enter.
Phía trên ca s là các thanh menu, cho phép ngi dùng m tp tin, nh ngh"a mt s#
bi
n làm vic và nht là truy xut các tp tin giúp $.
Trc khi làm vic, nên ch% ra th mc làm vic (nơi lu tr các chơng trình ca mình).
Có 2 cách
thc hin iu này:
1. Chn File/Set Path/Browse. thoát ra kh&i ca s này, chn File/Exit Path Brother.
2. T' du nh!c ca Matlab, gõ các lnh: pwd, cd, dir. Các lnh này cho phép ngi dùng di
chuyn n th mc làm vic.
1.3 Ch
y chơng trình
Nu Matlab ang tích cc ti th mc làm vic mong mu#n và trong th mc ó có ch(a
chơng tr
ình di dng tp tin .m, ngi dùng ch% cn gõ tên tp tin (không cn phn m rng)
t
' du nh!c Matlab thc hin các lnh lu trong tp tin ó
Ví d gõ
>> toto
Chú ý:
-
-
-
2
Tên t
p tin không
c có các ký t
lai (ví d
các ký t
d
u, kho
ng tr
!
ng, ...). Matlab s
không nhn bit c chính xác các tên tp tin có ch(a các ký t này.
Không nên dùng các tên quá ơn gin. Ví d nu tp tin có tên max.m, khi gõ max ti
du nh!c, Matlab s không bit ngi dùng mu#n thc hin hàm max (ly s# ln nht
ca mt ma trn) hoc các lnh lu tr trong max.m
Cách ơn gin nht là dùng ký t u tiên c bit cho tên tp tin ca riêng mình (ví d
k_toto.m) hoc dùng tên tp tin b)ng ting Vit ;-)
C
ơ bn v ngôn ng Matlab
2.1 Cá
c ph
n t
u tiên
Lnh cơ bn u tiên cn thc hin là clear. Nó cho phép xóa tt c các bin trong b
nh
ca Matlab.
Vic gõ
>> Var = 3;
s
gán cho bi
n
var
ma tr
n kích th
c 1x1 giá tr
3

Gi
i thi
u sơ l
c v
ngôn ng
Matlab
Nu không gõ du chm ph*y (;) cu#i lnh, giá tr ca var s c hin th sau phép
gán.
Phn còn li ca dòng lnh sau du % s c coi nh chú thích.
kt n#i dòng lnh hin ti vi dòng lnh sau ó, gõ du ... Ví d
A =
[ 1 2 3 ...
4 5 6 ]
tơng ơng v
i
A = [ 1 2 3 4 5 6 ]
2.2 X
lý ma trn
2.2.1 T
ng quát
>> A = [1, 2, 3; 4, 5, 6; 7, 8, 9]
% du phy (hoc khong cách) ngn cách các ct
% du chm phy (;) ngn cách các hàng
cho A =
1
4
7
2
5
8
3
6
9
>> t = 0:0.2:2.8
% tng các thành ph
n c
a vector t t
0
n 2.8
% m
i bưc 0.2
cho t = 0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8
>> signal = sin(t)
% tính hàm sin cho các thành phn ca t
signal = 0 0.19 0.38 0.56 0.71 0.84 0.93 0.98 0.99 0.97 0.90 0.80 0.67 0.51
0.33
>> ZZ = [1 2 5] +i*[8 6 4]
% giá tr ma trn có dng phc
ZZ = 1.0 + 8.0i 2.0 + 6.0i 5.0 + 4.0i
Dùng lnh size nu mu#n bit kích thc mt ma trn
>> size(ZZ)
s
cho
ans = 1 3
2.2.2
% m
t dòng và 3 c
t
L
y các giá tr
c
a m
t ma tr
n
A(i, j) bi
u din phn t dòng i ct j ca ma trn A
>> B = A(2, 3)
B = 6
s
cho
A(:,j) bi
u di
n c
t th
(
j
>> C = A(:,2)
C =
s
cho
2
5
8
A(i:k,:) bi
u din các dòng t' i n k
>> D = A(1:2,:)
D =
cho
1 2 3
4 5 6
A(i:k,j:l) bi
u din ma trn con
>> E = A(2:3,2:3)
E =
2.2.3
cho
5 6
8 9
Xây dng ma trn có kích thc tng
D
u ph
*
y phân cách các c
t và d
u ch
m ph
*
y phân cách các hàng.
>> F = [A C]
F =
s
cho
1 2 3 2

Gi
i thi
u sơ l
c v
ngôn ng
Matlab
4 5 6 5
7 8 9 8
>> G = [A; A(2,:)]
G =
cho
1 2 3
4 5 6
7 8 9
4 5 6
>> Z = []
% ma tr
n r
ng
Có th
b
&
m
t dòng c
a ma tr
n b
)
ng cách sau
>> A(:,2) = []
A =
s
cho
1 3
4 6
7 9
2.3 Nh
p/Xu
t
2.3.1 Nh
p/Xut màn hình
>> x = input(' Nhap gia tri ban dau: ');
2.3.2
Nh
p/Xu
t t
p tin
Nh
p/xut riêng ca Matlab
•
Dng nh phân
% in ra chu
i "Nhap gia tri ban dau: " trên
% màn hình, giá tr
nhp vào s gán cho x
>> save file1 A B C
>> load file1
•
Dng v+n bn
% lưu A, B, C trong t
p tin file1.mat
% n
p A, B, C trong b nh bi các giá tr
% lưu trong t
p tin file1.mat
Ch
%
lu tr
m
t ma tr
n trong m
t t
p tin.
>> save file2.dat A
-ascii
>> load file2.dat
Nh
p/xu
t chu
n
% lưu các giá tr
c
a A trong t
p tin
% file2.dat dư
i dng vn bn
% l
y các giá tr lưu tr trong file2.dat và
% gán nó
cho bin file2
c các giá tr
lu tr
trong t
p tin nh
phân, c
n ph
i dùng các l
nh:
>> fidin = fopen('file3.dat','r');
% m tp tin file3.dat trong thư mc hin hành
% c và gán handle tr v cho fidin
>> data = fread(fidin, 2000, 'uchar');
% c 2000 giá tr ưc lưu như unsigned char
% và gán nó cho data
>> fclose(fidin);
% óng tp tin ưc tr bi fidin (file3.dat)
ghi các giá tr trong mt tp tin nh phân có kh n+ng c bi các công c phn mm
khác, ta c
n dùng các lnh:
>> fidout = fopen('file4.dat','w');
% m tp tin file4.dat ghi (dng nh phân)
>> fwrite(fidout, data, 'uchar');
>> fclose(fidout);
2.4 Hi
n th ha
>> plot(signal)
>> mesh(A)
>> title('Hinh 1')
>> subplot(d1, d2, d)
2.5 G
li (debug)
% ghi các giá tr
data dư
ng d
ng unsigned char
% óng t
p tin
% v
dng sóng signal
% hi
n th ha 3D các giá tr ma trn
% hi
n th chui trên hình ha
% phâ
n chia màn hình thành ma trn d1xd2
% và v
th trong vùng th d

Gi
i thi
u sơ l
c v
ngôn ng
Matlab
Dùng lnh whos bit danh sách và kích thc các bin trong b nh hin ti.
ng'ng tm thi trong mt danh sách các lnh, dùng lnh pause. Chơng trình s c
th
c hin tip khi có mt phím bt k, c gõ.
có th tích cc trong ca s môi trng Matlab (t(c ngi dùng có th gõ lnh) trong
khi chơng tr
ình ang c thc thi, dùng lnh keyboard trong chơng trình. Quá trình thc
hi
n lnh trong chơng trình b ng!t tm thi, cho phép ngi dùng hin th giá tr các bin. Khi
ó d
u nh!c s tr thành K>>. chơng trình tip tc c thc thi, gõ enter trong ca s
l
nh.
d'ng chơng trình, nhn Ctrl-C.
3 Ví d
chơng trình zap.m
clear
% Xóa tt c d liu trong b nh
%
------------------ To các tín hiu ---------------------------------------%
FeSparc=8192;
% Tn s# ly m-u dùng trên các trm làm vic Sun (Sparc)
TeSparc=1/FeSparc;
FreqSig=input('Tan
so tin hieu ?'); % t câu h&i và gán câu tr li cho FreqSig
% (th
4096 = FeSparc/2)
NbEch=4096
% s# m-u c hin th trong ca s làm vic Matlab (không có ;)
t=0:TeSparc:(NbEch
-1)*TeSparc; % to mt vector
Signal=sin(2*pi*FreqSig*t);
% to ra vector Signal
Coef=0.1;
Bruit=Coef*(2*rand(1,NbEch)
-1); % rand: to ma trn mà các thành phn có giá tr ng-u nhiên
SignalBruit=Signal+Bruit;
%
------------------ X lý chui các ký t ----------------------------------%
FreqString=num2str(FreqSig);
% chuyn mt s# thành chui các ký t
CoefString=num2str(Coef);
chaine2=['Nhieu
trang tai ',CoefString,'%']% N#i chui
%Minh h
a vic ng!t lnh b)ng ...
chaine1=['Tin
hieu: hinh sin voi tan so ',FreqString,...
' Hertz']
%
------------------ Hin th ha ----------------------------------------%
subplot(2,2,1);
% Phn chia ca s ha thành ma trn 2x2, và chn vùng 1
plot(Signal);
% Phác ha vector Signal
title('Signal');
% Ta ca ha hin hành
sound(Signal,FeSparc);
% Phát âm thanh ca vector Signal, c ly m-u ti tn s# FeSparc
subplot(2,2,2);
plot(Bruit);
title('Nhieu');
disp('Go
phim bat ky de tiep tuc …');
pause
sound(Bruit,FeSparc);
subplot(2,2,3);
plot(SignalBruit);
title('Tin
hieu + nhieu');
disp('Go
phim bat ky de tiep tuc …');
pause
sound(SignalBruit,FeSparc);
subplot(2,2,4);
te
xt('units','normalized','Position',... % Hin th chui "chaine2"
[0,0.75],'String',chaine2,'Color','r');
text('units','normalized','Position',[0,0.25],'String',chaine1,'Color','g');
axis off
% Xóa trc ta trên hình v hin ti
clear
desiderata=input('Ban
muon nghe mot tap tin am thanh ?','s');
delete(gcf)
% óng ca s ha hin ti
if
(desiderata=='yes')
FichierIn='_rvmaitr.wav';
[Data,freq]=wavread(FichierIn);
% Np tn s# và tín hiu trong tp tin "Gong.mat"
whos
% Hin th d liu mi trong b nh

