M-File là tập tin chứa các chỉ thị MATLAB do người dùng tạo ra.M-File có thể chứa thủ tục hoặc hàm.. – Hàm có bắt buộc phải có tham số đầu vào và biến đầu ra không?... Các tham số đầu và
Trang 1CAD
Trang 2M-File và Hàm
GUI
GUIDE
2
Trang 4SV đọc phần 8 (M-Files) trong giáo trình.
Cho biết M-File là gì!
4
Trang 5M-File là tập tin chứa các chỉ thị MATLAB do người dùng tạo ra.
M-File có thể chứa thủ tục hoặc hàm.
M-File có thể được soạn thảo bởi bất kỳ trình soạn thảo nào Tạo mới 1 M-File:
File/New/Blank M-File
Trang 6Ví dụ: Tạo file tên là dt5.m chứa thủ tục sau:
1 Nhấn nút nếu soạn thảo trong MATLAB.
2 Gõ tên M-File từ cửa sổ chính MATLAB:
dt5
6
Trang 7SV đọc phần 8.2 Cho biết:
– Liên hệ giữa Hàm và M-File.
– Cú pháp định nghĩa một hàm.
– Ngăn cách giữa các tham số?
– Ngăn cách giữa các biến đầu ra?
– Hàm có bắt buộc phải có tham số đầu vào và biến đầu ra không?
Trang 8Hàm được chứa trong M-File
Tên file nên đặt giống với tên hàm được chứa bên trong.
Cú pháp định nghĩa hàm:
function biendaura = tenham( cacthamso )
%Noi dung ham
8
Trang 9Ví dụ: định nghĩa hàm bình phương rồi lưu vào file
Trang 10Các tham số đầu vào: được bao bởi dấu (), cách nhau bởi dấu
phẩy.
Các biến đầu ra: được bao bởi dấu [], cách nhau bởi dấu phẩy.
function [x,y] =linhtinh (a,b)
%Ham tinh binh phuong cua a va bac ba cua b
x=a*a;
y=b*b*b;
Hàm không bắt buộc phải có tham số đầu vào và biến đầu ra!
10
Trang 11Số lượng tham số đầu vào được lưu trong biến nargin
Ví dụ về hàm có số lượng tham số đầu vào linh hoạt:
Trang 12Các lần thử khi gọi hàm vdnargin:
>> b1=vdnargin %khong tham so
Trang 13BT1: Định nghĩa hàm ezplotdt5 như sau:
Đầu vào: hamso , maunetve , maunen , tieude , Đầu ra: đồ thị của hamso vẽ bằng hàm ezplot với màu nét vẽ, màu nền, tiêu đề lấy từ tham số đầu vào.
Ví dụ khi gọi hàm:
>> ezplotdt5( 'y=sin(x.^2)' , 'b' , [0.8 1 0.8] , 'Bai tap 1' )
Trang 14BT2: Định nghĩa hàm amplot như sau:
Đầu vào: fm , fc
Đầu ra: đồ thị các tín hiệu ym, yc , yam.
Cho biết:
Tín hiệu gốc ym=sin(2πfmt)+1 Sóng mang yc=sin(2πfct)
Tín hiệu AM yam=ym.*yct=[0 π], y=[-2 2]
14
Trang 15BT2: Ví dụ khi gọi hàm:
>> amplot(1, 10)
Trang 16Nguyễn Mỹ 16
Trang 17GUI = Graphical User Interface.
Là một giao diện đồ họa cho phép người dùng tương tác thông qua chuột.
Các thành phần trong giao diện có thể là: cửa sổ, menu, nút nhấn, trục.
Trang 20Các đối tượng đồ họa trong MATLAB:
Trang 23UIControl là các đối tượng hiển thị trên giao diện hỗ trợ cho việc tương tác giữa người dùng với ứng dụng.
Các kiểu khác nhau của uicontrol:
Trang 24Callback: các chỉ thị (thủ tục, hàm) sẽ được thực hiện khi uicontrol nào
Trang 25Text: hiển thị một chuỗi ra giao diện.
Ví dụ:
uicontrol( 'style' ,'text', %kieu text
'string' ,'Dai hoc Tay Do', %chuoi hien thi
'fontsize' ,20,
'fontname' ,'Arial')
Trang 26Pushbutton: hiển thị một nút nhấn.
Ví dụ: kế thừa hàm amplot của BT2
uicontrol( 'style' ,'pushbutton', %kieu pushbutton
'string' ,'Click here',… %chuoi hien thi
'callback' ,'amplot(1,10)') %goi ham khi nhan nut
26
Trang 27Edit box: cho phép người dùng nhập liệu.
Dữ liệu đã nhập được truy xuất thông qua thuộc tính string.
Trang 28Dữ liệu lấy từ edit box sẽ có kiểu chuỗi, vì vậy ta cần chuyển sang kiểu số khi cần tính toán.
Ví dụ:
28
Trang 29Ta nên đặt tag cho các uicontrol quan trọng để
có thể gọi chúng về sau
Đặt tag: thông qua thuộc tính tag .
Gọi đối tượng nào đó thông qua tag: dùng
Trang 30Viết một GUI cho phép người dùng nhập vào 1 con số, sau đó in ra bình phương của số đó ngay trên giao diện.
30
Trang 32Frame: chỉ dùng để gom nhóm các đối tượng khác lại hoặc dùng để trang trí.
32
ĐỌC THÊM
Trang 33Slider : thanh trượt dùng để chọn giá trị số nằm trong khoảng 0 - 1.
Ví dụ:
h=uicontrol('style','slider', 'tag','thanhtruot');
set(h,'callback','disp(get(findobj(''tag'',''thanhtruot''),''value''))');
ĐỌC THÊM
Trang 34Đọc thêm phần 34.2 (UIControls) ,
quyển Basics of MATLAB and Beyonds
của Andrew Knight.
Đọc thêm bài 6 (Tạo giao diện trong MATLAB) , giáo trình Thí nghiệm CAD
của thầy Nguyễn Chí Ngôn.
34
ĐỌC THÊM
Trang 36UIMenu dùng để thêm mục vào thanh menu của cửa sổ figure.
Cú pháp cơ bản: uimenu('label','nhãn')
Ví dụ:
figure; %tao cua so figure
set(gcf,'menubar','none'); %tat thanh menu mac dinh
cha=uimenu('label','File'); %them muc menu
36
Trang 37Tạo một mục menu con trực thuộc menucha:
uimenu(menucha, 'label', 'nhan')
Ví dụ:
figure
set(gcf,'menubar','none')
cha =uimenu('label','File')
uimenu( cha ,'label','New')
uimenu( cha ,'label','Open')
uimenu( cha ,'label','Close','callback','close')
Trang 38Khi click chuột vào mục của menu, hàm được chỉ định bởi thuộc tính callback sẽ được gọi! Nguyên tắc tương tự như uicontrol.
Tham khảo thêm về uimenu tại phần 34.6 (UIMenus) trong giáo trình tiếng Anh!
38
Trang 40Một giải pháp khác để thiết kế giao diện trong MATLAB là sử dụng bộ công cụ GUIDE.
GUIDE = GUI Development Environment.
Thiết kế giao diện nhanh hơn bằng cách kéo thả các thành phần cần thiết vào figure.
Từ cửa sổ chính của MATLAB, ta dùng lệnh guide để bắt đầu thao tác.
40
Trang 41GUIDE hỗ trợ một số mẫu thiết kế có sẵn cho người sử dụng.
Trang 42Từ cửa sổ thiết kế của GUIDE, người dùng chỉ cần kéo thả những gì cần đến:
42
Trang 43Một số giao diện minh họa:
Trang 44BT3: Viết một GUI cho phép người dùng nhập vào a, b, sau đó in ra nghiệm của phương trình ax+b=0 ngay trên giao diện.