Trang 3 2/11/20223I.Giới thiệu chung 5 -Các ứng dụng điển hình của Matlab: Trong toán học và tính toán. Phát triển các thuật toán. Thu thập và xử lý dữ liệu. Mô hình hóa, mô phỏng.
Trang 22
I.Giới thiệu chung
3
-1.1 Matlab là gì? Matlab làm được những gì?
MATLAB = MATrix LABoratory – Là sản phẩm phần mềm của The Math
Work ra đời năm 1984 Tham khảo tại địahttp://www.mathworks.com.
Matlab là chương trình phần mềm trợ giúp cho việc tính toán và hiển thị.
Matlab được điều khiển bởi tập các bộ lệnh, tương tác bằng bàn phím trên
cửa sổ điều khiển Đồng thời còn cho phép khả năng lập trình (script file).
Bộ lệnh của Matlab lên đến con số hàng trăm và ngày càng được bổ sung mở
rộng bởi các công cụ ( toolbox ) – Simulink là một toolbox có vai trò đặc biệt
quan trọng Là công cụ mạnh phục vụ mô hình hóa và mô phỏng các hệ
thống kỹ thuật – vật lý trên cơ sở sơ đồ cấu trúc dạng khối.
Các lệnh của matlab rất mạnh và hiệu quả cho phép giải các bài toán khác
nhau và đặc biệt hiệu quả cho các hệ phương trình tuyến tính cũng như thao
tác trên các bài toán ma trận.
Matlab còn rất hữu hiệu trong việc trợ giúp thao tác và truy xuất đồ họa trong
không gian 2D và 3D.
LQC_KTD-DT_TLU
I.Giới thiệu chung
4
- Matlab là một phần mềm có giao diện cực mạnh và có khả năng lập trình để
giải quyết các vấn đề, các bài toán khác nhau của khoa học kỹ thuật như điện,
phản ứng hạt nhân, tự động hóa, nghiên cứu về gien…
Cấu trúc chương trình và cấu trúc các hàm sẵn có trong matlab được mô tả
gần giống với ngôn ngữ lập trình C.
Ưu điểm của Matlab:
Trang 33
I.Giới thiệu chung
5
Trong toán học và tính toán.
Phát triển các thuật toán.
Thu thập và xử lý dữ liệu.
Mô hình hóa, mô phỏng.
Khoa học và công nghệ về đồ họa.
Phát triển các ứng dụng bao gồm việc xây dựng giao diện đồ họa người dùng.
Cấu hình máy yêu cầu:
Windows XP or XP
Service Pack 2
Pentium III, IV, Xeon, Pentium M AMD Athlon, Athlon
XP, Athlon MP
400 Mb 256 Mb
(512Mb recommended) Windows 2000
Trang 44
I.Giới thiệu chung
7
-1.3 Màn hình Matlab và môi trường phát triển:
Command Window – cửa sổ lệnh:
Thực hiện toàn bộ việc nhập dữ liệu và xuất dữ liệu tính toán.
Current Directory– Thư mục hiện thời:
Nhanh chóng nhận biết, chuyển đổi thư mục hiện thời, mở file, tạo thư mục mới…
Workspace– Môi trường thao tác:
Hiển thị tất cả các biến, các hàm với đầy
đủ các thông tin như tên, loại biến/hàm, kích cỡ tính theo byte dữ liệu.
Command History– Cửa sổ quá khứ:
Lưu giữ và hiển thị tất cả các lệnh đã thực hiện.
Editor– Màn hình soạn thảo:
Sử dụng để tạo và sửa đổi M-files.
Trang 5↑ hoặc Ctrl + p Gọi lại lệnh vừa thực hiện trước đó.
→ hoặc Ctrl + f Chuyển con trỏ sang phải 1 ký tự.
← hoặc Ctrl + b Chuyển con trỏ sang trái 1 ký tự.
Ctrl + l hoặc Ctrl + ← Chuyển con trỏ sang trái một từ.
Ctrl + r hoặc Ctrl + → Chuyển con trỏ sang phải một từ.
Ctrl + a hoặc Home Chuyển con trỏ về đầu dòng.
Ctrl + k Xóa con trỏ đến cuối dòng
Trang 6 Chú thích: - o: chứa thông báo hệ điều hành của máy.
- m: số phần tử của ma trận lớn nhất mà máy có thể làm việc được với matlab.
Trang 7 Chú thích: - cd: cho biết thư mục hiện hành.
- directory: đường dẫn đến thư mục muốn làm việc.
- cd : Chuyển đến thư mục cấp cao hơn một bậc.
Trang 8format short Hiển thị 4 con số sau dấu chấm 3.1416
format long Hiển thị 14 con số sau dấu chấm 3.14159265358979
format rat Hiển thị phân số của phần
nguyên nhỏ nhất.
355/133 format + Hiển thị số dương hay âm +
Trang 9 Chú thích: - what: liệt kê các file trong thư mục hiện hành.
- dirname: tên thư mục cần liệt kê.
Trang 1010
I.Các phần tử cơ bản
19
-1.1 Giới hạn của các giá trị tính toán trong Matlab:
Với phần lớn các máy tính, khoảng giá trị cho phép từ 10 -308 đến
10 308
Trong trường hợp giá trị tính toán lớn hơn giới hạn trên (10 308 )
tràn số mũ trên Trong matlab kết quả này được biểu diễn là inf.
Trong trường hợp giá trị tính toán nhỏ hơn giới hạn dưới (10 -308 )
tràn số mũ dưới Trong matlab kết quả này được biểu diễn là 0.
1.2.Các ký tự đặc biệt:
[ ] - Dạng ma trận Dùng để quy ước cho việc biểu diễn hay vào số
liệu cho các biến vector hay ma trận Các phần tử trong biến được
cách nhau bởi dấu space hay dấu “,” nếu trên cùng hàng hoặc cột.
Các cột hay hàng sẽ phân cách nhau bởi dấu “;” hay Enter.
- ( ) – Dạng chỉ số Dành cho các biến của hàm hay các chỉ số các
phần tử trong ma trận khi cần được nhập hay biểu diễn.
, - Phân tách giữ các chỉ số hay các phần tử của ma trận.
; - Phân tách các ma trận, các lệnh, các hàng của ma trận.
>> - Dấu nhắc cho lệnh sau.
… - Thể hiện sự tiếp tục của lệnh ở dòng sau.
% - Phần chú giải dòng lệnh được ghi sau dấu này dùng để hiểu rõ
nghĩa một dòng lệnh chứ ko tham gia vào chương trình.
: - Cách ghi tổng quát ma trận.
\n – Dấu hiệu tạo dòng mới.
LQC_KTD-DT_TLU
Trang 11 pi - Giá trị của π tự động đưa vào biến này
i, j – Sử dụng ký hiệu cho phần ảo số phức.
Inf – Biến này đại diện cho giá trị vô cùng lớn.
NaN – Giá trị vô định, biểu thức không xác định: 0 : 0
ans – Biến này được dùng để chứa các giá trị tính toán của biểu
thức nhưng không ghi vào tên bến.
LQC_KTD-DT_TLU
I.Các phần tử cơ bản
22
-1.4: Biến trong Matlab:
- Không cần khai báo biến trước khi sử dụng biến đó trong Matlab.
- Tên biến bao gồm các chữ cái A-Z, a-z, 0-9, một số ký tự đặc biệt
nhưng phải bắt đầu bằng chữ cái.
- Matlab phân biệt chữ hoa, chữ thường.
- Sử dụng dấu = để gán giá trị cho biến.
VD:
>> a=2011;
>> Name = ‘Tin Hoc Mo K52’;
- Khi không khai báo rõ biến thì các kết quả được gán cho biến mặc
định ans.
- Các lệnh có thể được nhập vào trên cùng một dòng, cách nhau bằng
dấu ; hoặc dấu ,
LQC_KTD-DT_TLU
Trang 12 clear name1, name2,…
Chú thích: - clear: xóa toàn bộ các biến có trong workspace.
- clear name: chỉ xóa biến có tên là name.
Trang 13- x là vector: cho biết chiều dài của vector
- x là ma trận: cho biết chiều dài của ma trận Giá trị thu được
sẽ là m nếu m>n và ngược lại n nếu n>m.
- m = size (A,1) đưa ra giá trị số hàng của ma trận A.
- n = size (A,2) đưa ra giá trị số cột của ma trận A
LQC_KTD-DT_TLU
Trang 15LQC_KTD-DT_TLU
Trang 16 Điều kiện 1 đúng thì thực hiện nhóm lệnh 1, điều kiện 2 đúng
thực hiện nhóm lệnh 2, điều kiện 3 đúng thực hiện nhóm
lệnh 3, không điều kiện nào đúng thực hiện nhóm lệnh 4.
LQC_KTD-DT_TLU
Trang 17Lệnh switch sẽ lần lượt thực hiện các khối lệnh tương ứng với từng
giá trị trong biểu thức điều kiện Biểu thức điều kiện phải có dạng số
Dùng trong trường hợp biết trước số lần lặp.
Biểu thức có thể là một ma trận, một vector hay đại lượng vô
hướng.
Nếu biểu thức là ma trận nhóm lệnh được thi hành lặp đi lặp lại số
lần bằng số cột của ma trận biểu thức Mỗi lần lặp chỉ số sẽ nhận
giá trị là một cột của ma trận.
Trong trường hợp không biết kích thước của ma trận sử dụng hàm
length để xác định số lần muốn lặp.LQC_KTD-DT_TLU
Trang 18 Khi biểu thức điều kiện vẫn đúng thì thực hiện nhóm
lệnh, khi biểu thức điều kiện sai sẽ thoát khỏi vòng lặp.
Vòng lặp while sử dụng khi không biết trước số lần lặp.
Vd:
while (a<=0 | a>12)
a = input(‘Vui long nhap lai thang:');
end
LQC_KTD-DT_TLU
Trang 19 Dùng trong vòng lặp for hoặc while, dùng để thoát khỏi
vòng lặp tại vị trí nó xuất hiện Nếu có nhiều vòng lặp
lồng nhau thì lệnh break có tác dụng nhảy sang vòng
Dùng trong vong lặp for hoặc while, lệnh continue cho
phép bỏ qua các câu lệnh đứng sau nó và chuyển sang
bước lặp kế tiếp trong cùng một vòng lặp.
Trang 2020
VI.Script File
39
-6.1 Giới thiệu về Script file :
Chúng ta có thể tính toán trong Matlab bằng 2 phương pháp:
Vào các lệnh trực tiếp trên cửa sổ lệnh (Command Windows).
Chạy một chương trình Matlab: Gồm các lệnh được soạn thảo
trước trong một Script file (M-file).
Các chương trình thủ tục bao gồm các dòng lệnh theo một thứ tự
nào đó do người sử dụng viết ra lưu trữ trong các file có phần mở
rộng là *.m – file dạng này gọi là Script file.
Script file có thể chứa bất cứ lệnh hoặc hàm hợp lệ nào của
Matlab kể cả hàm do người dùng tự tạo.
Khi gõ tên Script file tại dấu nhắc của Command Window + Enter
ta đạt được kết quả giống như ta vào tất cả các lệnh chứa trong
Script file cùng 1 lúc tại Command Window.
LQC_KTD-DT_TLU
VI.Script File
40
- Giá trị của biến khi chạy 1 Script file được Workspace quản lý (Các
biến được tạo bởi 1 script file là các biến toàn cục).
File được lưu dưới dạng ký tự ASCII và có thể sử dụng các
chương trình soạn thảo nói chung để tạo file *.m
Khi sử dụng nội dung của M-file không được hiển thị lên màn hình.
Một số lệnh hệ thống:
echo (on - off) - lệnh cho phép xem các lệnh có trong *.m files
khi chúng được thực hiện.
type M-name - lệnh cho xem nội dung file ,ngầm định file ở
dạng M-file.
What – lệnh này cho biết tất cả các files M-file và MAT-file có
trong vùng làm việc hiện hành.
Help M-name – Hiển thị phần chú thích của M-file.
LQC_KTD-DT_TLU
Trang 2121
41
- Quá trình làm việc khi gọi một script file có tên là filename:
1 Matlab kiểm tra xem filename có phải là 1 biến trong phiên làm việc
không Nếu đúng nó hiển thị giá trị của biến.
2 Nếu không, Matlab kiểm tra xem filename có phải là một trong những
lệnh được tạo sẵn của Matlab hay không, nếu đúng nó sẽ thực thi
lệnh này.
3 Nếu không Matlab sẽ dò tìm trong thư mục hiện hành xem có tập tin
filename.m hay không, nếu có nó sẽ thi hành tập tin này.
4 Nếu không Matlab sẽ dò tìm tập tin này trong các thư mục đã khai báo
đường dẫn trước với Matlab.
Do đó, khi đặt tên cho script file phải tránh trùng với tên biến đang
hoạt động, tránh trùng với tên lệnh của Matlab Ngoài ra script file
phải nằm ở thư mục hiện hành hoặc nằm trong Matlab search path.
Có 2 loại lỗi thường gặp:
Lỗi do cú pháp sai (Syntax error) như thiếu dấu ngoặc, dấu
phẩy, … hoặc vào tên lệnh sai.
Lỗi do xử lý toán học sai (runtime error) như chia cho số 0
LQC_KTD-DT_TLU
Trang 2222
43
-6.2 Cấu trúc của một Script file:
1 Phần chú thích: Viết các dòng chú thích cho chương trình:
• Tên của chương trình và các từ khoá mô tả chương trình.
• Tên người viết chương trình, ngày viết.
• Định nghĩa các tên biến đầu vào và đầu ra.
• Tên của các hàm tự tạo được sử dụng trong chương trình.
2 Các giá trị đầu vào: Xác định các giá trị đầu vào của chương trình
và tiến hành nhập liệu chuẩn bị cho phần tính toán.
3 Phần tính toán: Sử dụng các cấu trúc vòng lặp, điều kiện, các hàm
Matlab cung cấp….để tính các thông số yêu cầu.
4 Phần trình bày kết quả: Dùng một số hàm của Matlab để hiển thị
- Các ma trận biểu diễn thông tin được lưu trữ trong các file dữ liệu.
Có 2 loại file dữ liệu khác nhau Mat-files và ASCII files.
Mat-files lưu các dữ liệu ở dạng số nhị phân (*.mat).
ASCII file lưu các dữ liệu dưới dạng các ký tự ASCII (*.dat).
Khi muốn lưu các dữ liệu dùng lệnh save cú pháp như sau:
>> save <filename> x,y;
Lưu giá trị các biến x,y vào file có tên là <filename> Ngầm định các
file này có phần mở rộng là *.mat
Để gọi các file này dùng lệnh:
>>load <filename>;
Khi lưu biến vào file dat phải ghi rõ phần mở rộng của file
>> save <filename>.dat;
LQC_KTD-DT_TLU
Trang 2323
VIII Hàm M-File
45
-8.1 Giới thiệu về Hàm M-File (function file):
Các hàm do người sử dụng viết được lưu trữ trong M – File Được
sử dụng giống như các hàm của Matlab.
Các lệnh tính toán bằng function file cũng như các biến trung gian
được tạo ra không được nhìn thấy Tất cả những gì trông thấy chỉ
là các giá trị đầu vào và các giá trị đầu ra (hàm == “hộp đen”)
Một function file gần giống với script file vì chúng đều là các file
văn bản và đều có phần mở rộng là *.m.
Điểm khác nhau giữa script file và function file ở chỗ tất cả các
biến trong 1 function file đều có tính chất cục bộ (nghĩa là giá trị
của biến không được truy xuất bên ngoài không gian tập tin hàm).
LQC_KTD-DT_TLU
VII.Hàm M-File
46
-8.2 Quy tắc viết function file:
Tên hàm và tên file phải trùng nhau.
Hàm được bắt đầu bằng từ function, sau đó lần lượt là các tham số
đầu ra, dấu bằng, tên hàm, các tham số đầu vào được bao trong
ngoặc đơn.
vd: function c = chuvi(r)
Một số dòng đầu tiên nên viết chú thích cho hàm Khi sử dụng lệnh
help với tên hàm, chú thích của hàm sẽ được hiển thị.
Các thông tin trả lại của hàm được lưu vào tham số đầu ra Vì vậy
phải kiểm tra chắc chắn rằng trong hàm có chứa câu lệnh ấn định
giá trị của tham số đầu ra.
Nếu một hàm có nhiều hơn 1 giá trị đầu ra phải viết tất cả các giá trị
trả lại của hàm thành một vector trong dòng khai báo hàm.
Nếu một hàm có nhiều tham số đầu vào cần phải liệt kê chúng khi
khai báo hàm.
vd: function [x1,x2] = giaipt(a,b,c)LQC_KTD-DT_TLU
Trang 2424
VIII.Hàm M-File
47
- Việc thi hành function file sẽ kết thúc khi gặp dòng cuối cùng của file
đó hoặc gặp dòng lệnh return Lệnh return giúp ta kết thúc một hàm
mà không cần phải thi hành hết các lệnh của hàm đó.
Vd: function kq=luythua(a,b)
kq=1;
if (a==1)
return else
for i =1:b kq=kq*a;
end end
Hàm error của Matlab sẽ hiển thị một chuỗi lên cửa sổ lệnh và dừng
thực hiện hàm, trả điều khiển về cho cửa sổ lệnh và bàn phím Hàm
này rất hữu dụng để cảnh báo việc sử dụng hàm không đúng mục
đích.
LQC_KTD-DT_TLU
VII.Hàm M-File
48
- Sử dụng các biến sau để kiểm tra các biến vào ra của hàm:
nargin chứa các tham số đưa vào.
narout chứa các tham số đầu ra.
Một function file có thể chứa nhiều hàm Hàm chính trong function
file được đặt tên trùng với tên của file Các hàm khác được khai
báo thông qua câu lệnh fuction được viết sau hàm đầu tiên Các
hàm con chỉ được sử dụng bởi hàm chính.
Trong trường hợp muốn các biến địa phương trong hàm thành
biến toàn cục có thể khai báo lại :
global ten_bien1 ten_bien2 ten_bien3
Các tên biến cách nhau bằng khoảng trắng Trong trường hợp hàm
xây dựng có nhiều hàm con thì khai báo global phải ở chương
trình chính và function file có liên quan.
LQC_KTD-DT_TLU
Trang 26I.Các phần tử cơ bản
3
-1.1 Giới hạn của các giá trị tính toán trong Matlab:
Với phần lớn các máy tính, khoảng giá trị cho phép từ 10 -308 đến
Các cột hay hàng sẽ phân cách nhau bởi dấu “;” hay Enter.
>> - Dấu nhắc cho lệnh sau.
… - Thể hiện sự tiếp tục của lệnh ở dòng sau.
% - Phần chú giải dòng lệnh được ghi sau dấu này dùng để hiểu rõ nghĩa một dòng lệnh chứ ko tham gia vào chương trình.
: - Cách ghi tổng quát ma trận.
\n – Dấu hiệu tạo dòng mới.
LQC_KTD-DT_TLU
Trang 27 pi - Giá trị của π tự động đưa vào biến này
i, j – Sử dụng ký hiệu cho phần ảo số phức.
Inf – Biến này đại diện cho giá trị vô cùng lớn.
NaN – Giá trị vô định, biểu thức không xác định: 0 : 0
ans – Biến này được dùng để chứa các giá trị tính toán của biểu thức nhưng không ghi vào tên bến.
LQC_KTD-DT_TLU
I.Các phần tử cơ bản
6
-1.4: Biến trong Matlab:
- Không cần khai báo biến trước khi sử dụng biến đó trong Matlab.
- Tên biến bao gồm các chữ cái A-Z, a-z, 0-9, một số ký tự đặc biệt nhưng phải bắt đầu bằng chữ cái.
- Matlab phân biệt chữ hoa, chữ thường.
- Sử dụng dấu = để gán giá trị cho biến.
VD:
>> a=2011;
>> Name = ‘Tin Hoc Mo K52’;
- Khi không khai báo rõ biến thì các kết quả được gán cho biến mặc định ans.
- Các lệnh có thể được nhập vào trên cùng một dòng, cách nhau bằng dấu ; hoặc dấu ,
LQC_KTD-DT_TLU
Trang 28 clear name1, name2,…
Chú thích: - clear: xóa toàn bộ các biến có trong workspace.
- clear name: chỉ xóa biến có tên là name.
Trang 29- x là vector: cho biết chiều dài của vector
- x là ma trận: cho biết chiều dài của ma trận Giá trị thu được
sẽ là m nếu m>n và ngược lại n nếu n>m.
- m = size (A,1) đưa ra giá trị số hàng của ma trận A.
- n = size (A,2) đưa ra giá trị số cột của ma trận A
LQC_KTD-DT_TLU
Trang 31LQC_KTD-DT_TLU
Trang 32Else disp (‘So am!’);
LQC_KTD-DT_TLU
Trang 33end Lệnh switch sẽ lần lượt thực hiện các khối lệnh tương ứng với từng giá trị trong biểu thức điều kiện Biểu thức điều kiện phải có dạng số hoặc dạng chuỗi.
End
Dùng trong trường hợp biết trước số lần lặp.
Biểu thức có thể là một ma trận, một vector hay đại lượng vô hướng.
Nếu biểu thức là ma trận nhóm lệnh được thi hành lặp đi lặp lại số lần bằng số cột của ma trận biểu thức Mỗi lần lặp chỉ số sẽ nhận giá trị là một cột của ma trận.
Trong trường hợp không biết kích thước của ma trận sử dụng hàm length để xác định số lần muốn lặp.LQC_KTD-DT_TLU
Trang 34For i=20: - 1: 1 disp(i) end
Khi biểu thức điều kiện vẫn đúng thì thực hiện nhóm
lệnh, khi biểu thức điều kiện sai sẽ thoát khỏi vòng lặp.
Vòng lặp while sử dụng khi không biết trước số lần lặp.
Vd:
while (a<=0 | a>12)
a = input(‘Vui long nhap lai thang:');
end
LQC_KTD-DT_TLU
Trang 35 Dùng trong vòng lặp for hoặc while, dùng để thoát khỏi
vòng lặp tại vị trí nó xuất hiện Nếu có nhiều vòng lặp lồng nhau thì lệnh break có tác dụng nhảy sang vòng lặp kế tiếp.
Vd:
a = 1;
while (a>=0)
if (rem(a,7) == 0) break;
else disp(a);
Dùng trong vong lặp for hoặc while, lệnh continue cho
phép bỏ qua các câu lệnh đứng sau nó và chuyển sang bước lặp kế tiếp trong cùng một vòng lặp.
Vd:
for n = 1:10
if mod(n,2)==0 continue;
end disp(n);
end
LQC_KTD-DT_TLU
Trang 36VI.Script File
23
-6.1 Giới thiệu về Script file :
Chúng ta có thể tính toán trong Matlab bằng 2 phương pháp:
Vào các lệnh trực tiếp trên cửa sổ lệnh (Command Windows).
Chạy một chương trình Matlab: Gồm các lệnh được soạn thảo
trước trong một Script file (M-file).
Các chương trình thủ tục bao gồm các dòng lệnh theo một thứ tự
nào đó do người sử dụng viết ra lưu trữ trong các file có phần mở rộng là *.m – file dạng này gọi là Script file.
Script file có thể chứa bất cứ lệnh hoặc hàm hợp lệ nào của
Matlab kể cả hàm do người dùng tự tạo.
Khi gõ tên Script file tại dấu nhắc của Command Window + Enter
ta đạt được kết quả giống như ta vào tất cả các lệnh chứa trong Script file cùng 1 lúc tại Command Window.
echo (on - off) - lệnh cho phép xem các lệnh có trong *.m files
khi chúng được thực hiện.
type M-name - lệnh cho xem nội dung file ,ngầm định file ở
dạng M-file.
What – lệnh này cho biết tất cả các files M-file và MAT-file có
trong vùng làm việc hiện hành.
Help M-name – Hiển thị phần chú thích của M-file.
LQC_KTD-DT_TLU
Trang 3725
- Quá trình làm việc khi gọi một script file có tên là filename:
1 Matlab kiểm tra xem filename có phải là 1 biến trong phiên làm việc không Nếu đúng nó hiển thị giá trị của biến.
2 Nếu không, Matlab kiểm tra xem filename có phải là một trong những lệnh được tạo sẵn của Matlab hay không, nếu đúng nó sẽ thực thi lệnh này.
3 Nếu không Matlab sẽ dò tìm trong thư mục hiện hành xem có tập tin filename.m hay không, nếu có nó sẽ thi hành tập tin này.
4 Nếu không Matlab sẽ dò tìm tập tin này trong các thư mục đã khai báo đường dẫn trước với Matlab.
Do đó, khi đặt tên cho script file phải tránh trùng với tên biến đang hoạt động, tránh trùng với tên lệnh của Matlab Ngoài ra script file phải nằm ở thư mục hiện hành hoặc nằm trong Matlab search path.
Có 2 loại lỗi thường gặp:
Lỗi do cú pháp sai (Syntax error) như thiếu dấu ngoặc, dấu
phẩy, … hoặc vào tên lệnh sai.
Lỗi do xử lý toán học sai (runtime error) như chia cho số 0
LQC_KTD-DT_TLU
Trang 3827
-6.2 Cấu trúc của một Script file:
1 Phần chú thích: Viết các dòng chú thích cho chương trình:
• Tên của chương trình và các từ khoá mô tả chương trình.
• Tên người viết chương trình, ngày viết.
• Định nghĩa các tên biến đầu vào và đầu ra.
• Tên của các hàm tự tạo được sử dụng trong chương trình.
2 Các giá trị đầu vào: Xác định các giá trị đầu vào của chương trình
và tiến hành nhập liệu chuẩn bị cho phần tính toán.
3 Phần tính toán: Sử dụng các cấu trúc vòng lặp, điều kiện, các hàm Matlab cung cấp….để tính các thông số yêu cầu.
4 Phần trình bày kết quả: Dùng một số hàm của Matlab để hiển thị kết quả tính toán ra màn hình.
VI.Script File
LQC_KTD-DT_TLU
VII.File dữ liệu trong Matlab
28
- Các ma trận biểu diễn thông tin được lưu trữ trong các file dữ liệu.
Có 2 loại file dữ liệu khác nhau Mat-files và ASCII files.
Mat-files lưu các dữ liệu ở dạng số nhị phân (*.mat).
ASCII file lưu các dữ liệu dưới dạng các ký tự ASCII (*.dat).
Khi muốn lưu các dữ liệu dùng lệnh save cú pháp như sau:
>> save <filename> x,y;
Lưu giá trị các biến x,y vào file có tên là <filename> Ngầm định các file này có phần mở rộng là *.mat
Để gọi các file này dùng lệnh:
>>load <filename>;
Khi lưu biến vào file dat phải ghi rõ phần mở rộng của file
>> save <filename>.dat;
LQC_KTD-DT_TLU
Trang 39VIII Hàm M-File
29
-8.1 Giới thiệu về Hàm M-File (function file):
Các hàm do người sử dụng viết được lưu trữ trong M – File Được
sử dụng giống như các hàm của Matlab.
Các lệnh tính toán bằng function file cũng như các biến trung gian
được tạo ra không được nhìn thấy Tất cả những gì trông thấy chỉ
là các giá trị đầu vào và các giá trị đầu ra (hàm == “hộp đen”)
Một function file gần giống với script file vì chúng đều là các file
văn bản và đều có phần mở rộng là *.m.
Điểm khác nhau giữa script file và function file ở chỗ tất cả các
biến trong 1 function file đều có tính chất cục bộ (nghĩa là giá trị của biến không được truy xuất bên ngoài không gian tập tin hàm).
LQC_KTD-DT_TLU
VII.Hàm M-File
30
-8.2 Quy tắc viết function file:
Tên hàm và tên file phải trùng nhau.
Hàm được bắt đầu bằng từ function, sau đó lần lượt là các tham số
đầu ra, dấu bằng, tên hàm, các tham số đầu vào được bao trong ngoặc đơn.
vd: function c = chuvi(r)
Một số dòng đầu tiên nên viết chú thích cho hàm Khi sử dụng lệnh
help với tên hàm, chú thích của hàm sẽ được hiển thị.
Các thông tin trả lại của hàm được lưu vào tham số đầu ra Vì vậy
phải kiểm tra chắc chắn rằng trong hàm có chứa câu lệnh ấn định giá trị của tham số đầu ra.
Nếu một hàm có nhiều hơn 1 giá trị đầu ra phải viết tất cả các giá trị
trả lại của hàm thành một vector trong dòng khai báo hàm.
Nếu một hàm có nhiều tham số đầu vào cần phải liệt kê chúng khi
khai báo hàm.
vd: function [x1,x2] = giaipt(a,b,c)LQC_KTD-DT_TLU
Trang 40VIII.Hàm M-File
31
- Việc thi hành function file sẽ kết thúc khi gặp dòng cuối cùng của file
đó hoặc gặp dòng lệnh return Lệnh return giúp ta kết thúc một hàm
mà không cần phải thi hành hết các lệnh của hàm đó.
Vd: function kq=luythua(a,b)
kq=1;
if (a==1) return else for i =1:b kq=kq*a;
end end
Hàm error của Matlab sẽ hiển thị một chuỗi lên cửa sổ lệnh và dừng
thực hiện hàm, trả điều khiển về cho cửa sổ lệnh và bàn phím Hàm này rất hữu dụng để cảnh báo việc sử dụng hàm không đúng mục đích.
LQC_KTD-DT_TLU
VII.Hàm M-File
32
- Sử dụng các biến sau để kiểm tra các biến vào ra của hàm:
nargin chứa các tham số đưa vào.
narout chứa các tham số đầu ra.
Một function file có thể chứa nhiều hàm Hàm chính trong function
file được đặt tên trùng với tên của file Các hàm khác được khai báo thông qua câu lệnh fuction được viết sau hàm đầu tiên Các hàm con chỉ được sử dụng bởi hàm chính.
Trong trường hợp muốn các biến địa phương trong hàm thành
biến toàn cục có thể khai báo lại :
global ten_bien1 ten_bien2 ten_bien3
Các tên biến cách nhau bằng khoảng trắng Trong trường hợp hàm xây dựng có nhiều hàm con thì khai báo global phải ở chương trình chính và function file có liên quan.
LQC_KTD-DT_TLU