Trong phần trước chúng ta đã thấy MATLAB như là một môi trường tính toán tương tác. Ngoài chức năng của một môi trường tính toán tương tác, MATLAB còn cho phép xây dựng các chương trình lập trình như các ngôn ngữ lập trình thông dụng với một kho dữ liệu các hàm xây dựng sẵn (built-in functions). Các chương trình MATLAB được lưu giữ với phần tên tệp mở rộng
.m và thường được gọi là các tệp m (m-file). Có hai loại tệpm:
• Chương trình (script): thực hiện một tập hợp các câu lệnh và làm việc với các dữ liệu nằm ở không gian công tác (workspace). Các chương trình (script) không nhận đối số đầu vào và cũng không trả các đối số đầu ra. • Hàm (function): thực hiện một tập hợp các câu lệnh chứa trong nó. Tuy nhiên, các function nhận các đối số đầu vào và cho các đối số đầu ra. Các biến khai bao bên trong function chỉ tồn tại trong function.
Để xem hướng dẫn sử dụng các function từ Command Window nhập vào
help functionName. Ví dụ, để xem cách sử dụng hàm or chúng ta nhập vào
»help or
và nhận được hướng dẫn sau
| Logical OR. A | B is a matrix whose elements are 1’s where either A or B has a non-zero element, and 0’s where both have zero elements. A and B must have the same dimensions unless one is a scalar.
C = OR(A,B) is called for the syntax ’A | B’ when A or B is an object. See also XOR.
Để soạn thảo các script hay các function của MATLAB chúng ta có thể sử dụng bất kỳ một chương trình soạn thảo văn bản nào rồi lưu lại với tên mở rộng .m. Chúng ta cũng có thể sử dụng ngay chương trình soạn thảo của MATLAB (MATLAB Editor). Để xem hay soạn thảo lại một m-file có sẵn chỉ cần sử dụng câu lệnh
» edit fileName
2.5. Lập trình với Matlab 23
» edit
không cần tên tệp.
• Tạo các hàm MATLAB
Để tạo một function trong MATLAB chúng ta cần tạo một script với dòng đầu tiên có cấu trúc
function [Output1,..., OutputM]=functionName(Input1, ...,InputN)
Trong đó{Input1,..., InputN}làNđối số vào và{Output1,..., OutputM}
làM đối số ra. Tên của hàmfunctionName nhất thiết phải giống với tên tệp m
và không trùng với tên các tệp có sẵn.
Ví dụ sau đây hướng dẫn cách viết một function để tính biệt thức ∆ =
a2−4ac của phương trình bậc hai ax2+bx+c= 0
function delta=discriminant(a,b,c)
% Function to calculate the discriminant of a quaratic equation % ax^2 + bx + c = 0
delta=b^2 - 4*a*c;
Giả sử phương trình bậc hai cần tìm nghiệm số là x2+ 4x+ 3 = 0. Các hệ số phương trình là a = 1, b = 4 và c = 3. Sử dụng hàm discriminant.m
vừa tạo chúng ta có thể tính được ngay biệt thức của phương trình này
»delta=discriminant(a,b,c) delta =
4
• Tạo các chương trình MATLAB
Một chương trình MATLAB chứa một tập hợp các câu lệnh. Khi chạy một chương trình MATLAB thì MATLAB tiến hành tất cả các câu lệnh chứa trong nó. Các chương trình MATLAB có thể làm việc với các dữ liệu đang tồn tại ở trongworkspace, hoặc cũng có thể tạo ra các dữ liệu mới để làm việc. Tuy các chương trình MATLAB không trả lại các đối số ra (output argument) nhưng các biến do chương trình tạo ra được lưu lại ở workspace và được sử dụng ở các câu lệnh tiếp theo.
Ví dụ chương trìnhquadEqn.msau đây mô tả một chương trình MATLAB để tính nghiệm của phương trình bậc hai ax2+bx+c= 0
Vi dụ: Chương trình quadEqn.m
% Nhap cac hang so a, b, c
disp(’Chuong trinh tinh nghiem cua phuong trinh bac 2’) a=input(’Nhap vao hang so a=’);
b=input(’Nhap vao hang so b=’); c=input(’Nhap vao hang so c=’); % Tinh biet thuc delta
delta=discriminant(a, b, c)
% Xet biet thuc va tinh nghiem so if delta > 0
x1=(-b + sqrt(delta))/(2*a); x2=(-b - sqrt(delta))/(2*a);
disp([’Hai nghiem cua pt la x1=’ num2str(x1) ’ va x2=’ num2str(x2)]) elseif delta==0
x1=-b/(2*a);
disp([’Phuong trinh co mot nghiem duy nhat x=’ num2str(x1)]) elseif delta < 0
disp(’Phuong trinh vo nghiem! ’) end
Sử dụng chương trình quadEqn.m này tính nghiệm số của phương trình x2+ 4x+ 3 = 0 cho ta kết quả như sau:
» quadEqn
Chuong trinh tinh nghiem cuar phuong trinh bac 2 Nhap vao hang so a=1
Nhap vao hang so b=4 Nhap vao hang so c=3
Hai nghiem cua phuong trinh la x1=-1 va x2=-3
và của phương trình 4x2+ 3x+ 2 là
» quadEqn Chuong trinh tinh nghiem cuar phuong trinh bac 2 Nhap vao hang so a=4
Nhap vao hang so b=3 Nhap vao hang so c=2 Phuong trinh vo nghiem!