Các hàm trong MATLAB hoạt động trên biến trong không gian làm việc của chúng, hay được gọi là không gian làm việc cục bộ, khác biệt với không gian làm việc truy cập từ dấu nhắc lệnh của MATLAB, được biết đến là không gian làm việc cơ bản.
Khi bạn tạo hàm trong MATLAB, chúng có thể nhận nhiều tham số đầu vào và trả về nhiều tham số đầu ra.
Cú pháp cho một hàm trong MATLAB như sau:
function [kq1, kq2, ..., kqN] = tenhafunc(thamso1, thamso2, ..., thamsoN)
Mẫu
Hàm sau được đặt tên là max_cua_toi và viết trong tệp có tên là max_cua_toi.m. Hàm này nhận 5 số làm tham số và trả về giá trị lớn nhất của chúng.
Tạo một tệp hàm và đặt tên là max_cua_toi.m, nhập đoạn mã sau vào tệp:
Dòng đầu tiên của hàm bắt đầu với từ khóa function, đặt tên của hàm và liệt kê thứ tự của các tham số. Trong ví dụ này, hàm max_cua_toi có 5 tham số đầu vào và 1 tham số đầu ra.
Các dòng chú thích ngay sau lệnh function cung cấp hỗ trợ văn bản. Những dòng này sẽ được hiển thị khi bạn nhập lệnh:
trogiup max_cua_toi
MATLAB sẽ thực hiện các lệnh trên và trả về kết quả như sau:
Chức năng này tính giá trị lớn nhất của
năm số được cung cấp như là đầu vào
Bạn có thể gọi chức năng như sau:
max_cua_toi(34, 78, 89, 23, 11)
MATLAB sẽ thực hiện các lệnh trên và trả về kết quả như sau:
kq = 89
Hàm ẩn danh trong MATLAB
Hàm ẩn danh tương tự như hàm nội tuyến trong các ngôn ngữ lập trình truyền thống, được định nghĩa ngay tại dòng lệnh trong MATLAB. Hàm ẩn danh trong MATLAB bao gồm một biểu thức MATLAB và đối số đầu vào và đầu ra tùy chọn.
Bạn có thể định nghĩa hàm ẩn danh ngay tại dòng lệnh trong MATLAB hoặc trong một hàm hoặc script.
Bằng cách này, bạn có thể tạo các hàm đơn giản mà không cần tạo các tệp riêng cho chúng.
Cú pháp để tạo hàm ẩn danh từ một biểu thức trong MATLAB như sau:
ham_an_danh = @(danhsach_thamso)bieu_thuc
Ví dụ
Trong ví dụ này, tạo một hàm ẩn danh có tên là mũ, hàm này nhận 2 số làm đầu vào và trả về kết quả là số thứ nhất lấy số mũ là số thứ hai.
Tạo file script và nhập đoạn mã dưới đây vào:
Khi thực hiện file, nó sẽ trả về kết quả như sau:
Hàm Chính và Hàm Phụ trong MATLAB
Khác với hàm ẩn danh, các hàm khác trong MATLAB cần phải được định nghĩa trong một tệp. Mỗi hàm chứa các hàm chính, xuất hiện ở đầu và các hàm phụ tùy chọn sẽ đi kèm sau hàm chính và được hàm chính sử dụng.
Các hàm chính có thể được gọi từ bên ngoài tệp định nghĩa chúng, hoặc từ dòng lệnh hoặc các hàm khác. Các hàm phụ không thể được gọi từ dòng lệnh hoặc các hàm khác hay bên ngoài tệp hàm.
Các hàm phụ chỉ có thể nhìn thấy hàm chính và các hàm phụ khác trong tệp hàm định nghĩa chúng.
Ví dụ
Tạo một hàm trong MATLAB với tên là quadratic để tính toán kết quả ban đầu của phương trình bậc 2. Hàm này lấy 3 số đầu vào, hệ số bậc 2, hệ số tuyến tính và hằng số, rồi trả về kết quả ban đầu. File hàm quadratic.m sẽ chứa hàm quadratic chính và các hàm phụ disc.
Tạo một tệp hàm mới có tên là quadratic.m và nhập đoạn mã dưới đây:
Gọi hàm từ dòng lệnh như sau:
quadratic(2,4,-4)
Thực thi lệnh và nhận kết quả từ MATLAB:
ans = 0.7321
Hàm lồng trong MATLAB
Có thể định nghĩa hàm trong phần thân của một hàm khác, được gọi là hàm lồng. Hàm lồng trong MATLAB chứa tất cả thành phần của hàm khác.
Hàm lồng trong MATLAB nằm trong phạm vi của hàm khác và chia sẻ quyền truy cập không gian làm việc của hàm chứa.
Cú pháp hàm lồng trong MATLAB có dạng như sau:
Ví dụ
Viết lại hàm quadratic, nhưng trong trường hợp này, hàm disc sẽ là hàm lồng.
Tạo một file hàm quadratic2.m và nhập đoạn mã sau:
Gọi hàm từ dấu nhắc lệnh như sau:
Gọi hàm quadratic2(2,4,-4)
Kết quả khi MATLAB thực thi lệnh và trả về:
ans = 0.73205
Hàm Private trong MATLAB
Hàm private trong MATLAB đóng vai trò như bảo vệ, chỉ được tiết lộ cho một nhóm hạn chế các chức năng. Để giữ thông tin triển khai an toàn, bạn có thể định nghĩa chúng như các hàm riêng tư.
Các hàm private được tổ chức trong thư mục con, mang tên riêng và chỉ hiển thị cho hàm trong thư mục chính.
Ví dụ
Chúng ta sẽ thay đổi hàm quadratic từ ví dụ trước, với hàm disc giờ đây là một hàm private.
Tạo một thư mục con, đặt tên là private, nằm trong thư mục làm việc hiện tại. Lưu trữ file hàm disc.m trong thư mục này.
Tạo hàm quadratic3.m trong thư mục làm việc và nhập đoạn mã dưới đây vào:
Hãy thử gọi hàm từ dấu nhắc lệnh như sau:
quadratic3(2,4,-4)
Kết quả sau khi chạy lệnh sẽ là:
ans = 0.73205
Biến Toàn Cục trong MATLAB
Biến toàn cục trong MATLAB có thể được chia sẻ giữa nhiều hàm. Để làm điều này, bạn chỉ cần khai báo biến là biến toàn cục trong mọi hàm.
Để truy cập biến từ không gian làm việc cơ bản, bạn cần khai báo biến tại dòng lệnh.
Để khai báo biến global, bạn cần thực hiện điều này trước khi biến được sử dụng trong hàm. Một cách tốt để phân biệt biến global là sử dụng chữ in hoa cho tên biến.
Một Ví Dụ
Hãy tạo một file hàm và đặt tên là average.m, sau đó nhập đoạn mã dưới đây vào:
Tạo một tập tin script và nhập đoạn mã dưới đây:
Khi chạy tập tin trên, kết quả sẽ là:
av = 35.500
Trong toàn bộ bài viết trên Mytour, chúng ta đã được giới thiệu về hàm trong MATLAB cũng như cách viết hàm. Hãy tham khảo thêm một số bài viết khác trên trang Mytour để hiểu thêm về các toán tử, kiểu dữ liệu, cũng như cách khai báo biến trong MATLAB.