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

lập trình tính toán trong matlap

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 (679.99 KB, 74 trang )

1
TIN HỌC CHUYÊN NGÀNH DÀNH CHO KHOA CƠ ĐIỆN
LẬP TRÌNH TÍNH TOÁN TRONG MATLAB
SỐ TIẾT: 45 (30 LÝ THUYẾT + 15 THỰC HÀNH)
1. Sách, giáo trình chính:
-Lập trình Matlab và ứng dụng, Nguyễn Hoàng Hải - Nguyễn Việt
Anh, NXB Khoa học và kỹ thuật
-Bàigiảng LẬP TRÌNH TÍNH TOÁN TRONG MATLAB - Đỗ Thị Mơ
2. Sách tham khảo
- Matlab for engineers, Adrian Biran - Moshe Breiner, Addision Wesley
Publishing Company.
-Cơ sở Matlab & ứng dụng, Nguyễn Hữu Tình-Lê Tấn Hùng- Phạm Thị
Ngọc Yến-Nguyễ Thị Lan Hương, NXB Khoa học và kỹ thuật
- Matlab & Simulink, Nguyễn phùng Quang, NXB Khoa học và kỹ thuật
3. Giáo viên: Đỗ Thị Mơ -Bộ môn Công nghệ phần mềm
Email:
Chương 1: Giớithiệu chung
1. Không gian làm việccủaMatlab
Cửasố lệnh củaMatlabcódấumời(dấunhức) là dấu>>. Tại
đây ta có thể gõ vào các lệnh củaMatlabhoặc gõ các biến.
Những lệnh hoặcbiến đượclưu trong không gian làm việccủa
Matlab và có thểđượcgọilạikhitacần. Dùng các mũitên(↓↑ )
để chọncáclệnh, có thể cắt, copy, dán và sửachữa dòng lệnh.
Ví du:
>> X=2
X=
2
>> A=’XIN CHAO’
A=
XIN CHAO
Nếu ta không nhớ tên biến, ta có thể yêu cầu Matlab cho danh


sách các biến bằng cách đánh lệnh who từ dấu nhắc lệnh.
>>
w
ho
2
2. Biến
* Tên biến: Tên biến là một dãy kí tự đượcbắt đầu bằng chữ
cái, có độ dài tối đa là 31 kí tự, bao gồmcácchữ cái, chữ số và
dấu gạch dưới ( _ ), có phân biệtchữ hoa và chữ thường.
Ví dụ : x ; a12 ; b_a
Có thể gán giá trị cho tên biến bằng cách viết:
Tên_biến = biểuthức
Ví dụ :
>> x=20
>>a12=4
>>A12= ‘ABCD’
* Matlab có các biến đặcbiệt được cho trong bảng sau:
1−
Số lớnnhấtcóthểđượccủasố thựcrealmax
Số nhỏ nhấtcóthểđượccủasố thựcrealmin
Số các đốisố hàm đưaranarout
Số các đốisốđưavàohàmđượcsử dụngNargin
i=j=
i hoặcj
Dùng để chỉ số không xác định như kếtqẩucủa0/0NAN hoặcnan
Để chỉ số vô cùng như kếtquả của1/0Inf
Số của phép toán số
thựcFlops
Số nhỏ nhất, nếucộng thêm 1 sẽđượcsố nhỏ nhấtlớnhơn1Eps
π = 3.1415

Pi
Tên biếnmặc định dùng để trả về kếtquảAns
Giá trị
Các biến đặc
biệt
3
Các biến đặcbiệt ở trên có sẵngiátrị, nếu ta thay đổigiátrị củanóthìgiátrị
ban đầusẽ mấtchođếnkhitakhởi động lại Matlab thì nó mớitrở lạigiátrị
ban đầu. Không nên thay đổigiátrị củacácbiến đặcbiệt.
Ví dụ:
>> i
ans =
0 + 1.0000i
>> j
ans =
0 + 1.0000i
>> i*i
ans =
-1
>> pi
ans =
3.1416
>> eps
ans =
2.2204e-016
>> realmin
ans =
2.2251e-308
>> realmax
ans =

1.7977e+308
3. Xoá các biếntrongkhônggianlàmviệc
Để xoá các biếntadùnglệnh clear , có các cách sau:
-Xoámộtbiến clear tên_biến
>> clear x
- Xoá nhiềubiến clear tên_biếm1 tên_biến2
>> clear a b c
-Xoámộtnhómbiến tên trùng nhau mộtsố kí tự: clear a* % xoá các
biếncótênbắt đầulàa.
4
-Xoátấtcả các biến trong không gian làm việc: clear
Dùng lệnh trên tấtcả các biếnbị xoá không khôi phục được, do
vậytaphảithậntrọng khi dùng nó.
4. Câu gải thích và sự chấm câu
* Câu giảithích: Câugiảithíchđượcviếtsaudấu%
>> a=100 % a nhậngiátrị 100
* Có thể viết nhiềulệnh trên một dòng, chúng đượcngăncách
bởidấuphẩyhặcdấuchấmphẩy. Dấuphẩylà yêucầuhiển
thị kếtqủa trên màn hình, còn dấuchấmphẩylàkhônghiểnthị
kếtquả trên màn hình.Ví dụ:
>> A=2,B='abcde',x=456.32;y='mnopq'
A =
2
B =
abcde
y =
mnopq
* Dùng dấu ba chấm ( . . . ) viết sau phép toán để chỉ câu lệnh được
tiếp tục ở hàng dưới. Không dùng dấu ba chấm cho các trường hợp khác, hay
cho câu giải thích.

>> x=10,y=20
x =
10
y =
20
>> z=x+
y
z =
30
5. Các phép toán số học
Các phép tính số họccủa Matlab được cho trong bảng sau :
2^3^Phép luỹ thừa
4/2=2 hoặc 2\4=2/ ( chia trái) ,\ (chia phải) Phép chia
3*5*Phép nhân
8-2-Phép trừ
5+4+Phép cộng
Ví dụKí hiệu
Phép tính
5
Các phép tính trên có mức độ ưu tiên như sau :
1. Phép luỹ thừa.
2. Phép nhân, phép chia
3. Phép công, phép trừ.
>> x=2+10/5+4^2-6*2
x =
8
6. Số phức
Một trong các ưu thế củaMatlablàlàmviệcvớisố phức. Số phứccủaMatlab
được định nghĩa theo nhiều cách.
* Cách 1 : Chèn kí tự i hoặc j vào phần ảo.

>> c1=1+3i
c1 =
1.0000 + 3.0000i
>> c1=2-4j
c1 =
2.0000 - 4.0000i
* Cách 2 : Dùng căn bậchaicủasố âm.
>> c2=3+sqrt(-1)
c2 =
3.0000 + 1.0000i
>> c2=4-sqrt(-4)
c2 =
4.0000 - 2.0000i
* Cách 3 : Dùng biểuthức*i hoặc*j
>> c3=2-sin(1)*j
c3 =
2.0000 - 0.8415i
>> c3=3+cos(1)*i
c3 =
3.0000 + 0.5403i
>> c3=4+2*i
c3 =
4.0000 + 2.0000i
>> c3=4+(6/3)*i
c3 =
4.0000 + 2.0000i
6
* Các phép toán đốivớisố phức đềuthaotáctương tự như số thực.
>> a=2+3i
a =

2.0000 + 3.0000i
>> b=1+4i
b =
1.0000 + 4.0000i
>> a+b
ans =
3.0000 + 7.0000i
>> a-b
ans =
1.0000 - 1.0000i
>> a/b
ans =
0.8235 - 0.2941i
>> a*b
ans =
-10.0000 +11.0000i
* Có thể biểudiễnsố phức ở dạng cực ( độ lớn và góc)
M∠θ ≡ M.eiθ = a+bi
Ở trên số phứcbiểudiễnbằng độ lớn M và góc θ, quan hệ
giữa các đạilượng này và phầnthực, phần ảo đượcbiểu
diễndướidạng đạisố:
M: dùng hàm abs để tính độ lớn, M=abs(so phuc).
θ= tan-1(b/a): dùng hàm angle tính góc, θ = angle(so phuc)
a= Mcosθ b= Msinθ
Ví dụ:
>> c=1+2i
c =
1.0000 + 2.0000i
>> M=abs(c)
M =

3.1623
7
>> goc=angle(c) % góc θ tính bằng radian
goc =
1.1071 % radian
>> goc_do=goc*180/pi % chuyển góc θ sang độ
goc_do =
63.4349 % góc tính bằng độ
7. Các hàm toán học thông thường
tang xtan(x)
Cănbậchaicủaxsqrt(x)
sin xsin(x)
Hàm cho dấucủaxsign(x)
Hàm làm tròn về số nguyênround(x)
Phần dư của phép chia x/yrem(x,y)
Hàm trả về phầnthựccủaxreal(x)
log
10
x
log10(x)
Lnxlog(x)
Bộisố chung nhỏ nhấtcủa2 số nguyên x và ylcm(x,y)
Hàm trả về phần ảocủasố phứcimag(x)
Ướcsố chung lớnnhấtcủa2 số nguyên x và ygcd(x,y)
Xấpxỉ âm vô cùngfloor(x)
Xấpxỉ khôngfix(x)
e
x
exp(x)
cosin xcos(x)

Số phức liên hợpconj(x)
Xấpxỉ dương vo cùngceil(x)
arctang củaphầnthựccủax vàyatan(x,y)
arctang xatan(x)
arcsin xasin(x)
Tính góc củasố phứcangle(x)
arccos xacos(x)
Tính argument (độ lơnM) củasố phứcxabs(x)
Ý nghĩaKí hiệuhàm
8
>> x=abs(-2)/2
x=
1
>> x=sqrt(2)/2
x=
0.7071
>> y= sin(x)
y=
0.7854
>>4*atan(1)
ans=
3.1416
y=rem(10,3) % phầndư
y=
1
>>gcd(18,81) % Ướcsố chung lơnnhất
ans=
9
>>lcm(18,81) % bộisố chung lớnnhất
ans=

162
>> x=3/9+sin(3.14*17/180)
x =
0.6256
>> x=3\9+sin(3.14*17/180)
x =
3.2922
>> x=asin(3.14/4)
x =
0.9027
9
Bài tậpchương 1
1. Tính tổng n số tự nhiên đầutiên
S=1+2+3+ + 179
2. Giảiphương trình bậc 2 : 17x
2
+ 125x - 69 = 0
3. Giảihệ phương trình sau:
4. Tính hàm y theo công thứcsaukhix=3:
y= 3x
3
-4x
2
+7x +12 + 2sin 27
o
-
5. Tính hàm y theo công thứcsaukhix=2
y= asin(x) +
Chương 2: Cửasổ lệnh, quảnlýtệp, các cấutrúcđiềukhiển, hàm
1. Cửasố lệnh trong Matlab

1.1 Quản lý không gian làm việccủaMatlab
Các biến đượctạotrongcửasổ lệnh, đượclưu trong không gian làm việc
của Matlab. Ta có thể xem lạihoặcxóacácbiến đó.
* Xem tên biến dùng lệnh who
> who
Your variables are:
a ans b c y
* Để xem chi tiết hơn về các biến ta dùng lệnh whos
>> whos
Name Size Bytes Class
a 1x1 8 double array
ans 0x0 0 char array
b 1x1 8 double array
c 1x1 8 double array
y 1x1 8 double array
Grand total is 4 elements using 32 bytes
10
* Để xóa các biếntadùnglệnh clear
Lệnh này ta đãxétở mục3 chương 1. Các tuỳ chọn khác nhau củalệnh clear
ta có thể xem bằng lệnh help clear.
>> help clear
CLEAR Clear variables and functions from memory.
CLEAR removes all variables from the workspace.
CLEAR VARIABLES does the same thing.
CLEAR GLOBAL removes all global variables.
CLEAR FUNCTIONS removes all compiled M- and MEX-functions.
CLEAR ALL removes all variables, globals, functions and MEX links.
CLEAR ALL at the command prompt also removes the Java packages
import list.
CLEAR IMPORT removes the Java packages import list at the command

prompt. It cannot be used in a function.
CLEAR CLASSES is the same as CLEAR ALL except that class definitions
are also cleared. If any objects exist outside the workspace (say in
userdata or persistent in a locked m-file) a warning will be issued
and the class definition will not be cleared. CLEAR CLASSES must be
used if the number or names of fields in a class are changed.
CLEAR VAR1 VAR2 clears the variables specified. The wildcard
character '*' can be used to clear variables that match a pattern.
For instance, CLEAR X* clears all the variables in the current
workspace that start with X.
If X is global, CLEAR X removes X from the current workspace,
but leaves it accessible to any functions declaring it global.
CLEAR GLOBAL X completely removes the global variable X.
CLEAR FUN clears the function specified. If FUN has been locked
11
by MLOCK it will remain in memory. Use a partial path (see
PARTIALPATH) to distinguish between different overloaded versions of
FUN. For instance, 'clear inline/display' clears only the INLINE
method for DISPLAY, leaving any other implementations in memory.
CLEAR ALL, CLEAR FUN, or CLEAR FUNCTIONS also have the side effect
of
removing debugging breakpoints and reinitializing persistent variables
since the breakpoints for a function and persistent variables are
cleared whenever the m-file changes or is cleared.
Use the functional form of CLEAR, such as CLEAR('name'),
when the variable name or function name is stored in a string.
See also WHO, WHOS, MLOCK, MUNLOCK, PERSISTENT
1.2. Ghi và phụchồidữ liệu
* Ghi dữ liệu: Để ghi các dữ liệu( các biến) vào tệpkiểunhị phân với tên do ta
đặtvàđuôi tệplàMAT, ta có thể dùng lệnh sau:

>> Save Tên_tệphoặcchọncácmục trên thanh Menu:
File / Save Workspace as
Ví dụ: >> save luu1
Các biến trong Matlab đượclưutrongtệp luu1.mat
Có thể ghi mộtsố biếnvàotệp theo lệnh sau:
>> save tên_tệpbiến1 biến2
Ví dụ: >>save luu2 a b c
Các biến a,b,c được ghi trong tệp luu2.mat
* Phụchồidữ
liệu: Để phụchồidữ liệu(cácbiến) trong các tệp đã ghi ta dùng
lệnh: >> Load tên_tệp
Ví dụ: >>Load luu1
12
1.3. Khuôn dạng hiểnthị số
Matlab hiểnthị kếtquả dạng số mặc định: số nguyên và các dạng số khác trừ số
thựchiểnthị theo đúng dạng đưa vào. Dạng số thựchiểnthị vớimặc định là 4 chữ
số sau dấuphẩy.
Để tạokhuôndạngriêngtachọncácmục trong Menu:
File / Preferences khi đósẽ có hộpthoại Preferences như sau:
Chọnmục Command Windows, trong mục Numeric format dùng để định
dạng số có các định dạng sau:
short hiệnsố có 5 chữ số 20.345
long hiệnsố có 16 chữ số 20.123456789123456
Short e hiệnsố có 5 chữ số vớisố mũ e 2.0345e+01
long e hiệnsố có 16 chữ số vớisố mũ e
2.0123456789123456e+1
short g chính xác hơn short hoặcshort e
long g chính xác hơn long hoặc long e
hex số hệ 16 12ABF
bank hai số thập phân 12.45

+hiệndương, âm hoặcbằng không +
rational hiệnradạng phân s
ố nếusố thựcco phầnthập phân ,
ví du a=12.25 thì hiểnthị kếtquả trên màn hình là 48/4
13
2. Script file hay M-file
Trong Matlab ta gõ lệnh vào từ cửasổ lệnh, các lệnh sẽđượcthựchiệnngay, nếu
muôn thựchiệnlạicáclệnh ta lạiphảigõlại, như vậy không tiệnlợi.
Đẻ thuậnlợichoviệcgõcáclệnh và lưutrữ lạicáclệnh Mtlab cho phép mở file dạng
vănbản để ghi các lệnh, file này gọi là Script file hay M_file, phầnmở rộng ( đuôi file)
là m.
* Các lệnh về M-file:
- Mở tệp m-file mới: ch
ọncácmục trong menu: File / new / M-file
- Mở tệp m-file cũ: chọncácmục trong menu: File / Open sau đóchọntêntệp m-file
cầnmở.
- Ghi tệpm-file: chọncácmục trong menu: File / save sau đógõvào têntệp m-file.
- Để chạycáclệnh củaM-file, trên cửasố của script file ta chọncácmục
Debug / Run , nhậpdữ liệutừ cửasổ lệnh (Command windows )
- Matlab cung cấpmộtsố hàm sử dụng trong m-file:
Display(tên_biến) hiểnthị kế
tquả không có tên biến
Echo điềukhiểncửasổ lặplạicáclệnh của script file
Input sử dụng dấunhắc để đưadữ liệuvào
Keyboard trao điềukhiểntạmthời cho bàn phím
Pause dừng lạichođến khi ngườidùngnhấnmột phím bấtkỳ
Pause(n) dừng lại n giây
Waitforbuttonpress dừng lạichođếnkhingười dùng nhấnmột phím bấtkỳ.
Ví dụ 1: tạomộtm-file cótênlàthu1.m chứacáclệnh tính diện tich tam giác
khi biết đường cao và cạnh đáy. Chọncácmục File / new / M-file, tạicửa

sổ Script file ta nhậpvàocáclệnh tính như sau
Sau đóchọn File / save và gõ vào tên tệplàthu1.m
Chọn Debug / Run để chạy hàm, nhậpdữ liệuchochiều cao, cạnh đáy của
tâm giác từ cửasổ lệnh.
Ví dụ 2: tạomột m-file có tên là tinhham.m, nội dung chứacáccâulệnh sau:
14
Sau đóchọn Debug / Run để chạy hàm, nhậpdữ liệu cho a, b, c từ cửasổ
lệnh.
* Mộtsố lệnh quản lý tệp:
-cd hiểnthị thư mụchiệnthời
- cd tên_thư_mục thay đổi thư mục đưa ra
-dir danh sách các file trong thư mụchiệnthời
- edit tên_tệp_m_file mở tệp để sọan thảo
- delete tên_tệp_m_file xoá tệp
-path hiểnth
ị hoặcsửa đường dẫn
- type tên_tệp_m_file hiểnthị nội dung M-file trong cửasổ lệnh
-what hiện danh sách các m-file và MAT-file
3. Các cấutrúcđiềukhiển
3.1. Cấutrúcrẽ nhánh IF End
* Trường hợp đơngiản:
If biểuthức điềukiện
khốilệnh
end
Nếubiểuthức điềukiệnlàđúng thì khốilệnh đượcthựchiện.
Ví dụ:
>> a=10
>> if a>0
x=3*a
end

>> x
x=
30
* Trường hợp có hai điềukiện thay đổi:
if biểuthức điềukiện
khố
ilệnh 1
else
khốilệnh 2
end
Nếubiểuthức điềukiện đúng thì thựchiệnkhốilệnh 1, còn sai thì thựchiệnkhốilệnh 2.
15
Ví dụ: Tìm nghiệmthựccủaphương trình bậc2
function giaiptbac2()
a=input('a=');
b=input('b=');
c=input('c=');
d=b*b-4*a*c
if d<0
k='phuong trinh vo nghiem'
elseif d==0
x1=-b/(2*a)
x2=x1
else
x1=(-b+sqrt(d))/(2*a)
x2=(-b-sqrt(d))/(2*a)
end
* Trường hợpcónhiều điềukiện thay đổi:
if biểuthức điềukiện1
khốilệnh 1

elseif biểuthức điềukiện2
khốilệnh 2
elseif biểuthức điềukiện3
khốilệnh 3

elseif biểuthức điềukiệnn
khốilệnh n
else
khốilệnh n+1
end
Nếubiểuthức điềukiệni đ
úng thì thựchiệnkhốilệnh i ( i từ 1 đếnn),
ngượclại không có biểuthức điềukiện nào đúng thì thựchiệnkhốilệnh
n+1.
16
Ví dụ: Tính tiền điện, giả sử tính theo cách 50 sốđầu500 đồng 1 số, 50 số tiếp theo 700
đồng 1 số, 50 số tiếp theo 1000 đồng 1 số, 50 số tiếp theo 1500 đồng 1 số, các sô
tiếp theo 2000 đồng 1 số
function tinhtiendien()
csd=input('chi so dau =');
csc=input('chi so cuoi =');
sd=csc-csd
if sd<=50
tien=sd*500
elseif sd<=100
tien=50*500+(sd-50)*700
elseif sd<=150
tien=50*500+50*700+(sd-100)*1000
elseif sd<=200
tien=50*500+50*700+50*1000+(sd-150)*1500

else
tien=50*500+50*700+50*1000+50*1500+(sd-200)*2000
end
3.2. Cấu trúc switch case
switch biểuthức điềukiện
case giá trị 1
khốilệnh 1
case giá trị 2
khốilệnh 2
case giá trị 3
khốilệnh 3
. . .
case giá trị n
khốilệnh n
otherwise
khốilệnh n+1
end
Biểuthức điềukiệnlàdạng số hoặcdạng chuỗi. Giá trị i ( i từ 1 đếnn) phảicógiátrị
phù hợpvớibiểuthức điềukiện.
Nế
ubiểuthức điềukiệnbằng giá trị i thì khốilệnh i ( i từ 1 đếnn) đượcthựchiện,
ngượclạinếubiểuthức điềukiện không bằng một giá trị i nào thì khốilệnh n+1
đượcthựchiện.
17
Ví dụ: Hiệnrathời khoá biểu khi ta nhậpvàothứ (là số)
function thoikhoabieu()
t=input('nhap vao thu =');
switch t
case 2
'Tin, Toan, Anh'

case 3
' Sinh, Su, Dia'
case 4
' Hoa, Ly, Anh'
case 5
' Toan, Tin, Ly'
case 6
' Van, Hoa, Dia'
case 7
' Toan, Su, Tin'
otherwise
' Nghi o nha'
end
3.3. Vòng lặp For
Vòng lặp For cho phép mộtkhốilệnh thựchiệnlặplạimộtsố lầncốđịnh. Cú pháp
của vòng lặp For như sau;
For biến=mang
khốilệnh
end
Biếnlầnlượtnhận các giá trị củamảng, mỗilầnnhư vậykhốilệnh đượcthựchiện1
lần. Số lầnlặpcủakhốilệnh sẽ bằng số phầntử
củamảng.
Ví dụ 1 : s= 1+2+3+4+ . . . +10
s=0;
for i=1:10
s=s+i;
end
s
Ví dụ 2: Tính p= n !=1*2*3* *n
n=input(‘ Nhap vao n: ‘)

p=1;
for i=1:n
p=p*i;
end
p
18
3.4. Vòng lặp While
Vòng lặp while thựchiệnlặplạikhốilệnh vớisố lầnlặp không biết trước. Cú
pháp củavònglặp này như sau :
While biểuthức điềukiện
khốilệnh
end
Khi biểuthức điềukiệncònđúng thì khốilệnh đượcthựchiện, còn biểu
thức điềukiện sai kêt thúc vòng lặp.
Ví dụ : Tính q= 1+1/2+ 1/3 + + 1/n
n= input(‘nhap vao n : ‘)
q=0; i=1;
while i<=n
q=q+1/i;
i=i+1;
end
q
4. Hàm m-File
* Matlab đãxâydựng nhiều hàm, ngườisử dụng chỉ việcgọirađể sử dụng, ở chương 1 ta đã
xét mộtsố hàm toán học.
* Matlab cung cấpcấutrúcđể ngườisử dụng có thể xây dựng các hàm củamìnhdướidạng M-
file. Cấutrúcmột hàm M-file như sau:
Function Tên_biến= Tên_hàm(các tham số vào)
% Các câu chú thich
khốilệnh

Tên_biến= biểuthức
[return]
Các quy định và các tính chấtvới hàm M-file:
- Tên_hàm và tên M-file phảilàmột
- Trong thân hàm có lệnh gán giá trị củabiểuthứcchotênbiến.
- Trong hàm có thể chứa các hàm khác nhưng các hàm con trong hàm đóchỉ đượcgọichỉ
đượcgọi trong chính nó.
-Mỗi hàm có một không gian làm việc riêng tách biệtsovớimôi trường matlab. Các biến được
tạo ra trong hàm chỉ nằm trong không gian làm việccủa hàm đóvà đượcgiải phóng khi hàm
kết thúc.
- Các dòng chú thích sẽ đượchiện ra khi dùng lệnh Help.
-Cácthamsố vàovàra khi một hàm đượcgọichỉ có tác dụng bên
trong hàm đó. Biến Nargin chứa các tham sốđư
a vào, nargout chứa các giá trịđưara.
19
-Nếucáchàmmuốn dùng chung các biếnthìcácbiến đóphải khai báo là
biếntoàncục: Global tên_biến
-Tronghàmcóthể gặp dòng lệnh Return, cho phép kếtthúcmộthàmmà
không cầnphải thi hành hếtcáclệnh củahàmđó.
- Hàm error củaMatlabcho hiểnthị chuỗikítự trên cửasổ lệnh và dừng
thựchiện hàm. Hàm này thường được dùng để cảnh báo việcsử dụng hàm
không đúng. Ví dụ hàm phải đưa vào 3 tham số, nếu đậ ít hơ
n sẽ có lỗi:
if nargin <3
error('Phai dua vao du 3 tham so')
end
* Lờigọi hàm : Trong các hàm khác hoặctạicửasổ lệnh sử dụng hàm phải
có lờigọihàm. Lờigọihàmviếtnhư sau :
Tên_biến=Tên_hàm(các tham số thựcsự)
Các tham số thựcsự chứagiátrị và tương ứng với các tham số trong hàm.

Ví dụ : Xây dựng hàm tính diệntíchcủa tam giác biết3 cạnh a,b,c.
Ví dụ : Xây dựng hàm tính diệntíchcủa tam giác biết3 cạnh a,b,c.
function y=dttg(a,b,c);
%Ham tinh dien tich tam giac biet 3 canh a,b,c
%Nhap vao gia tri 3 canh tam giac ( dieu kien cac canh duong va
% 1 canh phai nho hon tong 2 canh)
if nargin <3
error('Phai dua vao du 3 tham so')
end
p=(a+b+c)/2;
y=sqrt(p*(p-a)*(p-b)*(p-c));
Lờigọi hàm như sau:
a=2;
b=2;
c=3;
t=dttg(a,b,c)
q=dttg(a,b) % loi goi sai
20
5. Các phép tính logic, quan hệ, xâu kí tự, thờigian
5.1. Các toán tử quan hệ
khác~=
bằng==
lớn hơn hoặcbằng>=
lớn hơn>
nhỏ hơn hoặcbằng<=
nhỏ hơn<
ý nghĩaToán tử quan hệ
Kếtquả của toán tử quan hệ cho giá trị 1 (đúng : true) hoặcgiátrị
0 (sai :false).
Ví dụ :

>> a=4
>> b=6
>> a==b
ans = 0
>> a~=b
ans = 1
>> a<b
ans =
1
5.2. Toán tử Logic
Kếtqủacủa toán tử logic là 1 (true) hoặc0 (false)
Ví dụ :
>> a=5
>> b=-2
>> (a>0)&(b<0)
ans =
1
NOT~
OR|
AND&
Ý nghĩaToán tử logic
21
>> (a<0) |(b>0)
ans =
0
>> ~(a>b)
ans =
0
5.3. Xâu kí tự
Xâu kí tự trong matlab là mảng các kí tự trong bảng mã ASCII.

Xâu kí tự đượcviết trong dấunháy đơn ‘ ’
Ví dụ : t=’ABCD’ ; q= ‘Ha noi’
* Hàm double cho mã ASCII củaxâu:
>> double(t)
ans =
65 66 67 68
>> double(q)
ans =
72 97 32 110 111 105
* Hàm char chuyểnlại thành xâu :
>> char(q)
ans =
Ha noi
5.4. Thờigian
* Hàm trả về ngày và giờ hiệntại: clock
* Hàm trả về ngày hiệntại : date
* Hàm trả về thứ trong tuần: weekday
* Hàm trả về ngày cuối tháng: eomday(năm, tháng)
* Hàm trả về lịch tháng: calendar(năm, tháng)
22
>> date
ans =
18-Oct-2006
>> eomday(2006,9)
ans =
30
>> calendar(2006,11)
Nov 2006
S M Tu W Th F S
0 0 0 1 2 3 4

5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 0 0
0 0 0 0 0 0 0
Chương 3: Các phép toán vớimảng
1. Mảng đơngiản
1.1. Biểudiễnmảng đơn trong matlab
Để biểudiễnmột dãy các phầntử có tính chấtgiống nhau matlab dùng kiểu
mảng.
Biểudiễnmảng đơnnhư sau:
Tên_biến_mảng=[a1,a2, ,an] hoặc Tên_biến_mảng=[a1 a2 an]
Trong đóai vớii từ 1 đếnn, làphầntử thứ i củamảng, như vậygiữacác
phầntử ngăn cách nhau bớidấuphẩyhoặcdấu cách. Ph
ầntử củamảng có
thể biểudiễnbằng biểuthức.
Ví dụ 1 x biểudiễn1 dẫysố 1, 3, 5 ,7, 9,11 trong matlab ta viếtnhư sau
x=[1,3,5,7,9,11] hoặc x=[1 3 5 7 9 11]
Ví dụ 2:
>> a=2
>> y=[2*a,3+a,4/a]
y =
4 5 2
23
1.2. Địachỉ củamảng
Ở ví dụ 1 mảng x có 6 phầntử, mảng x có 1 hàng 6 cộthay còngọi là vector hàng,
mảng x có độ dài là 6.
* Để truy nhập vào phầntử thứ i của mang ta viếtnhư sau: Tên_biến_mảng(i)
Ví dụ: x(1); x(5); y(2); y(3)
* Để truy nhậpvàotừ phầntử thứ i đếnphầntử thứ j ta viết:

Tên_biến_mảng(i:j)
Ví dụ : x(2:4); y(1:2)
* Để truy nhậpvàotừ phầntử thứ i đếnphầ
ntử cuốitaviết:
Tên_biến_mảng(i:end)
Ví dụ : x(3:end); y(2:end)
* Để truy nhậpvàocácphầntử trong khoảng từ phầntử thứ i đếnphầntử j, vị trí
củaphầntử sau bằng vị trí củaphầntử trướccộng vớisố k ta viết:
Tên_biến_mảng(i:k:j) ví dụ:
>> x(1:2:6)
ans =
1 5 9
>> x(6:-1:1)
ans =
11 9 7 5 3 1
1.3. Cấutrúccủamảng
Có nhiềucáchtạora mộtmảng, sau đây là mộtsố cấutrúccủamảng :
* Vớimảng có số phầntử nhỏ ta có thể nhậpvàotrựctiếp.
* Ta có thể dùng các cấutrúccơ bảnsau để tạomảng :
x=m :n Tạo vector hàng x, phầntử đầucógiátrị là m, phầntử sau bằng
phầntử trước công với1, kếtthúctạiphầntử có giá trị b
ằng hoặcnhỏ hơn
x=m :k :n Tạo vector hàng x, phầntử đầucógiátrị là m, phầntử sau bằng
phầntử trước công vớik, kếtthúctạiphầntử có giá trị bằng hoặcnhỏ hơn
x=linspace(m :n :k) Tạo vector hàng x, phầntử đầucógiátrị là m, kếtthúclà
n, có k phầntử
x=logspace(m :n :k) Tạo vector hàng không gian logarithm x, phầntử đầucó
giá trị là 10m, kết thúc là 10n, có k phầntử Ví dụ :
>>a=2:10
a =

2 3 4 5 6 7 8 9 10
>> b=1:3:15
b =
1 4 7 10 13
24
>> c=linspace(1,5,8)
c =
1.0000 1.5714 2.1429 2.7143 3.2857 3.8571 4.4286 5.0000
>> d=logspace(1,2,5)
d =
10.0000 17.7828 31.6228 56.2341 100.0000
* Đốivớicácmảng mà các phầntử của nó không tuân theo mộtquyluậtnhất định, ta
có thể tạomảng bằng cách ghép các ghép các mảng thành phầnlại. Ví dụ :
>> x1=1:6
x1 =
1 2 3 4 5 6
>> x2=3:2:11
x2 =
3 5 7 9 11
>> x3=[x1 x2]
x3 =
1 2 3 4 5 6 3 5 7 9 11
>> x4=[x1(1:2:6),2, 7, x3(5:9)]
x4 =
1 3 5 2 7 5 6 3 5 7
2. Vector hàng và vector cột
* Vector hàng là mảng 1 hàng và nhiềucột, cách biểudiễn đã xét ở phần trên.
a=[a1,a2, ,an]
* Vector cộtlàmảng 1 cột và nhiều hàng. Các thao tác như vector hàng. Biểudiễn dùng dấu;
ngăncáchgiữa các phầntử.

b=[b1;b2; ;bn]
Ví dụ: b=[1;3;5;7]
b = 1
3
5
7
* Dùng phép chuyểnvị ( kí hiệulàdấu nháy đơn: ‘) để chuyển vector hàng thành vector cột.
Ví dụ:
>> a=[2,4,6,8,10]
a = 2 4 6 8 10
>> b=a'
b = 2
4
6
8
10
25
>> b(2,3)
ans =
7
>> b(2) % phầntử thứ 2
ans =
5
>> b(4) % phầntử thứ 4
ans =
2
>>b(end) % phầntử cuốicùng
ans =
12
>> b(:,2) % cột2

ans =
2
6
10
>> b(3,:) % dòng 3
ans =
9 10 11 12
* Loạibỏ dòng hoặccộtmảng bằng cách gán cho giá trị rỗng [].
Ví dụ:
>> c=[1:2:7;8:2:14;20:-1:17]
c =
1 3 5 7
8 10 12 14
20 19 18 17
>> c(:,4)=[] % xoá cột4
c =
1 3 5
8 10 12
20 19 18
>> c(1,:)=[] % xoá dòng 1
c =
8 10 12
20 19 18
* Tạovectorcộtd từ ma trận c : d=c( :)
>> d=c(:)

×