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

Bài tập lớn môn matlad và ứng dụng pdf

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 (4.17 MB, 42 trang )

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG



BÀI TẬP LỚN
MÔN: MATLAB VÀ ỨNG DỤNG
ĐỀ TÀI: LẬP TRÌNH GUIDE GIAO DIỆN

Giảng viên hướng dẫn: ĐỒNG SĨ THIÊN CHÂU
Sinh viên thực hiện: NGUYỄN LƯƠNG THÀNH
MSSV: 40900040
Lớp: 09040003

TP.H


Chí Minh ngày 26 /10 /2012


[Type text] Page 1

Lời nói đầu:
Ngày xưa những công cụ tính toán thủ công bằng tay, hoặc những bàn tính cổ điển
để hỗ trợ toán học, giờ đây với sự đổi mới của ngành điện tử, công nghệ thông tin, các công cụ
tính toán hỗ trợ các ngành kĩ thuật hiện đại ra đời, với sự mạnh mẽ và nhanh chóng của các công
cụ phần mềm, các công cụ phần lớn đã thay thế cho việc thực hiện thủ công, giúp kiểm tra kết
quả một cách nhanh chóng, giảm chi phí. Cùng với đó chính là các phần mêm… các công cụ hỗ
trợ kĩ thuật như phần mềm Win cc, Protell, Protues, Mlap, Matlab…. Là những công cụ không
thể thiếu trong ngành kĩ thuật. sau đây mình sẽ giới thiệu phần mềm Matlab, một công cụ hỗ trợ


tính toán và mô phỏng hệ thống hết sức trực quan và chính xác.
Hẵn là phần mềm Matlab hiện nay không còn xa lạ gì với người dùng, nó là một
công cụ hỗ trợ tính toán và mô phỏng thực tế rất mạnh, ngoài các tính năng để thực hiện những
điều đó, Matlab còn hỗ trợ tạo giao diện người dùng (GUI), Chúng ta lần lượt tìm hiểu ứng dụng
từ cơ bản để hiểu rõ được dao diện GUI là gì, làm thế nào để bắt đầu với GUI…
Với đề tài về giao diện GUI chúng ta sẽ đi sâu vào nghiên cứu ứng dụng và phát
triển GUI, phát triển giao diện người dùng.
[Type text] Page 2

Đề tài - bài 1:
Viết giao diện bao gồm những yêu cầu sau:
1) Cho phép chọn thực thi một trong những hàm sau: y=sin(x), y=cos(x), y=tg(x),
y=cotg(x), y=arcsin(x), y=arcos(x), y=arctg(x), y=arccotg(x), y=sinh(x), y=cosh(x),
y=tgh(x), y=cotgh(x)
2) Cho phép chọn nhập/hiển thị theo độ hoặc Radian.
3) Cho phép nhập khoản giá trị của x
4) Hiển thị đồ thì của hàm được chọn theo giá trị của x nhập vào ở câu 3 lên giao diện,
có nút cho phép giữ hoặc xóa hình khi vẽ hàm mới.



[Type text] Page 3

Phụ lục:
PHẦN 1: SƠ LƯỢC VỀ LẬP TRÌNH GIAO DIỆN NGƯỜI DÙNG (GUIDE) TRONG
MATLAB………………………………………………………………………… Trang 04
I. GUI LÀ GÌ?
II. BẮT ĐẦU VỚI GUI!
III. CÁC BƯỚC CẦN THỰC HIỆN TRƯỚC KHI BẮT ĐẦU
PHẦN 2: BẮT ĐẦU THAO TÁC VỚI GUI ………………………………………… Trang 06

I. KHỞI ĐỘNG GUI………………………………………………………….Trang 06
II. MÔ TẢ CHỨC NĂNG CÁC CÔNG CỤ TRONG GIAO DIỆN GUI…….Trang 07
III. CHỈNH SỬA HỘP THOẠI INSPECTOR…………………………………Trang 08
PHẦN 3: THIẾT KẾ GIAO DIỆN (GUI)…………………………………………… Trang 10
I. THIẾT KẾ GIAO DIỆN…………………………………………Trang 10
II. MỘT VÀI THUỘC TÍNH CỦA ĐỐI TƯỢNG TRONG MENU
INSPECTOR…………………………………………………….Trang 11
III. MỘT VÀI CHỨC NĂNG MỞ RỘNG………………………… Trang 14
PHẦN 4 : THỰC THI HÀM TRONG GUIDE……………………………………… Trang 17
I. GIAO DIỆN TRONG MFILE………………………………………… Trang 17
II. MỘT SỐ HÀM TRONG GUI….……………………………………… Trang 18
III. KHÁI NIỆM BIẾN HỆ THỐNG………………………………… Trang 19
PHẦN 5: LẬP TRÌNH CÁC ĐỐI TƯỢNG……………………………………………Trang 20
I. NÚT NHẤN DEGREE TRONG BẢNG SELECT INPUT…… Trang 20
II. NÚT NHẤN DEGREE TRONG BẢNG SELECT INPUT…… Trang 21
III. NÚT NHẤN DẤU = ……………………………………………Trang 21
IV. EDIT TEXT NHÂP X………………………………………… Trang 24
V. NÚT NHẤN PLOT …………………………………………… Trang 26
VI. CHECK BOX HOLD ON VÀ GRID ON……………………….Trang 29
VII. NÚT NHẤN DEFAULT…………………………………………Trng 29
VIII. CHECKBOX COLOR ON………………………………………Trang 29
IX. NÚT EXIT……………………………………………………….Trang 31
PHẦN 6: CÁCH SỬ DỤNG GIAO DIỆN…………………………………………… Trang 32
PHẦN 7: CHƯƠNG TRÌNH:………………………………………………………… Trang 35



[Type text] Page 4



[Type text] Page 5

PHẦN 1: SƠ LƯỢC VỀ LẬP TRÌNH GIAO DIỆN NGƯỜI DÙNG (GUIDE)
TRONG MATLAB


I. GUIDE LÀ GÌ
- GUI (Graphical User Interface) là giao diện đồ họa có điều khiển bởi nhiều thanh công cụ
được người lập trình tạo sẵn, cho tương tác giữa người dùng là giao diện chương trình,
Mỗi chương trình được người lập trình tạp sẵn giao diện thực hiện một vài chức năng
được người lập tình tạo sẵn và giao tiếp với người sử dụng.
- Ứng dụng của Matlab lập trình giao diện rất mạnh và dễ thực hiện, nó có thể tạo ra giao
diện người dùng tương tự VBB, C++…
- GUI bao gồm đầy đủ các chương trình hỗ trợ như thực hiện phép toán LOGIC, mô phỏng
không gian 2D,3D, đọc hiển thị dữ liệu, liên kết đa phương tiện.Giao tiếp với người dùng
thông qua hình ảnh, các nút nhấn thực thi
- Hầu hết GUI chỉ thực hiện (trả lời) lệnh người dùng thông qua các tác động của người
dùng lên giao diện, người sử dụng không cần biết cấu trúc chương trình vẫn có thể thực
hiện được. GUI được thực hiện thông qua các hàm CALLBACK. Khi người dùng tác
động lên giao diện bằng các cách khác nhau, hàm CALLBACK sẽ được gọi để thực thi.
II. BẮT ĐẦU VỚI GUI
- Có 2 phương pháp để lập trình GUI
+ Cách đơn giản nhất là sử dụng công cụ có sẵn trong GUI Matlab để lập trình. Ưu điểm
của cách này là dễ thực hiện và các hàm FUNCTION được GUI tự tạo sẵn.
+ Cách này được lập trình từ siêu tệp Mfile bằng các hàm FUNCTION do người lập trình
tự viết, nó có ưu điểm là tùy biến cao. Tuy nhiên cách này khó hơn và đòi hỏi người lập
trình phải có hiểu biết sâu và trình độ.
- Ở đây với những bài tập đơn giản về giao diện, ta thực hiện cách thứ nhất để lập trình
giao diện với nhưng công cụ được hỗ trợ sẵn trong Matlab
- Khi thao tác trên giao diện chúng ta không thể thay đổi các hàm trong nó.

III. CÁC BƯỚC CẦN THỰC HIỆN TRƯỚC KHI BẮT ĐẦU
- Trước tiên để bắt đầu lập trình ta cần phải xác định mục đích của chương trình là gì?
- Sau đó tiến hành xác định các bước thực hiện để mo phỏng giao diện người dùng sao cho
hợp lí và chính xác
- Bước cuối cùng là viết chương trình và thực thi.







Sơ đồ sau đây mô phỏng trình tự thực hiện vơi GUI:
[Type text] Page 6



Sơ đồ khối mô tả cách thức hoạt động của GUI khi thao tác trên giao diện

- Khi bắt đầu với GUI, GUI tự động tạo ra các mã tập tin được thực thi bởi hàm Callback
function. GUI thao tác trên những kí tự mà người dùng nhập vào vào chuyển sang dạng số
học, nói cách khác, giao diện GUI tương tự như những lệnh thực thi trong Comment
Windowns.
- Tất cả các hàm callback thực thi những lệnh chứa trong nó.
- Chúng ta nên sử dụng chức năng HELP của Matlab để tìm hiểu them tất cả cách hàm thực
thi trong GUI, cách tạo và thao tác với GUI …

[Type text] Page 7

PHẦN 2: BẮT ĐẦU THAO TÁC VỚI GUI

Đây là phiên bản Matlab R2011B, các phiên bản khác cũng có thể thao tác tương tự.
IV. KHỞI ĐỘNG GUI
- Thực hiện khởi động Matlab đến GUI theo hình sau:
+ Khởi động Matlab từ biểu tượng Matlab trên màn hình desktop
+ Trong cửa sổ Comment Windowns gõ lệnh “guide” và enter: ta được giao diện màn
hình như sau:


- Chọn: Dòng “Blank GUI (Default)”: để tao một giao diện gui bắt đầu với giao diện trống.
Các dòng còn lại để khởi động GUI với một giao diện được tạo sẵn.
+ Chú ý: Trong Matlab GUI hỗ trợ sẵn hộp thoại công cụ “Modal Question Dialog” để
tạo ra giao diện với 2 nút tùy chọn “yes no question” để thực thi lệnh. Ta có thể ứng dụng
để tọa lệnh thoát khỏi chương trình bằng nút nhấn Exit.
- Nhấp chọn OK để tạo một giao diện bắt đầu với giao diện trống. ta được hình ảnh giao
diện trong GUI như sau:
- Trước khi tạo giao diện ta lưu File lại, Matlab sẽ tự động lưu 2 file, một file đuôi .m và
một file đuôi .fig. hoặc ta có thể nhấn F5, Matlab sẽ chuyển đường dẫn đến thư mục lưu
file, chọn nơi cần lưu và nhấn Save.
[Type text] Page 8


V. MÔ TẢ CHỨC NĂNG CÁC CÔNG CỤ TRONG GIAO DIỆN GUI

- Trong giao diện trên chúng ta có thể thao tác để tùy biến các thanh công cụ phù hợp với
mục đích sử dụng.
Mô tả chức năng các công cụ cơ bản:
1) Nhấp chuột vào để thay đổi độ rộng của giao diện
2) Là nơi để cân chỉnh các nút, biểu tượng trên giao diện.
3) Là nơi để tạo giao diện con liên kết với giao diện chính.
4) Nút Play (Run) để thực thi chương trình.

- Phía bên trái là nhóm các biểu tượng được Matlab GUI hỗ trỡ sẵn:
+ Push Button: là nút nhấn, khi nhấn vào sẽ thực thi lệnh trong cấu trúc hàm callback của

+ Slider: là thanh trượt cho phép người dùng di chuyển thanh trượt để thục thi lệnh.
+ Radio Button: Nó giống như Check Box nhưng thường được sử dụng để tạo sự lựa
chọn duy nhất, tức là 1 lần chỉ được chọn 1 trong số các nhóm nhiều nút. Khi một ô được
chọn thì các ô còn lại trong nhóm bị bỏ chọn.
+ Check box: Sử dụng để đánh dấu tích (thực thi) vào và có thể check nhiều ô để thực thi
+ Edit Text: là nơi các kí tự được nhập vào từ người dùng, người dùng có thể thay đổi
được
+ Static Text: Là các kí tự được hiển thị thông qua các callback, hoặc thông thường để
viết nhãn cho các biểu tượng, người dùng không thể thay đổi nội dung.
[Type text] Page 9

+ Pop-up Menu: mở ra danh sách các lực chọn khi người dùng nhấp chuột vào. Chỉ chọn
được 1 mục trong danh sách các mục.
+ List Box: hộp thoại danh sách cách mục, cho phép người dùng chọn một hoặc nhiều
mục.
+ Toggle Button: là nút nhấn có 2 điều khiển, khi nhấp chuột và nhả ra, nút nhấn được giữ
và lệnh thực thi, khi nhấp chuột vào lần thứ 2, nút nhấn nhả ra, hủy bỏ lệnh vừa thực thi.
+ Table: tạo ra một bảng tương tự trong Excel.
+ Axes: Đây là giao diện đồ họa hiển thị hình ảnh, nó có nhiều thuộc tính bao gồm: không
gian 2D (theo trục đứng và trục ngang), 3D (hiển thị không gian 3 chiều)
+ Panel: Tạo ra một mảng nhóm các biểu tượng lại với nhau giúp ta dễ kiểm soát và thao
tác khi di chuyển
+ Button Group: quản lí sự lựa chọn của nút Radio Button.
+ Active Control: Quản lí một nhóm các bút hoặc các chương trình liên quan với nhau
trong Active.
VI. GIỚI THIỆU HỘP THOẠI INSPECTOR
- Tất cả các hộp thoại bên trái vừa nêu trên để sử dụng, chúng ta nhấp chọn và kéo thả vào

vùng cần thiết kế, mỗi hộp thoại có các thông số chỉnh riêng, để chỉnh các thông số liên
quan đến hộp thoại nào ta nhấp đôi vào hộp thoại đó (hoặc click chuột phải chọn Property
Inspector) hộp thoại Inspector hiện ra như sau, dùng thanh trượt kéo xuống để xem hết
chức năng:

- Phía bên trái của Menu Inspector là tên thuộc tính, có thể gọi thực thi các thuộc tính này
bằng các lệnh.
- Phía bên trái là giá trị của thuộc tính, giá trị này do người dùng đặt, có thể thay đổi thông
qua các lệnh gọi (callback), hoặc được thiết lập trước.
[Type text] Page 10

 Ở trên là sơ lược cơ bản về giao diện guide người dùng, sau đây sẽ trình bày chi tiết
cách tạo một giao diện thực tế với yêu cầu của bài toán đề ra.

[Type text] Page 11

PHẦN 3: THIẾT KẾ GIAO DIỆN (GUI)



- Trong phần này, giải thích các thông số trong Inspector đồng thời chỉnh sửa trên
từng hộp thoại sẽ được trình bày song song.
I. THIẾT KẾ GIAO DIỆN
- Nhấn tổ hợp phím Ctrl + S để thực hiện lưu file, sau khi chọn đường dẫn để lưu file (Chú
ý không lưu file với các biến đặc biệt hoặc bằng các con số khởi đầu), nhấn save Matlab
sẽ tự động tạo ra 2 file gồm một file .m và một file .fig, trong đó file .m là Mfile chứa các
hàm Matlab đã tạo sẵn hỗ trợ giao diện.
- Lần lượt kéo thả các nút như hình sau:



- Mỗi hộp thoại có Inspector , bằng cách nhâp đúp chuột vào hoặc chuột phải chọn Property
Inspector.
- Sau đây là hình ảnh được đánh số để đánh dấu từng thay đổi một:



[Type text] Page 12



II. MỘT VÀI THUỘC TÍNH CỦA ĐỐI TƯỢNG TRONG MENU INSPECTOR
- Sau đây là bảng mô tả các giá trị và thuộc tính của các hộp thoại trong hình, chúng ta tiến
hành thay đổi các giá trị tương ứng theo bảng sau:
STT Tên thuộc tính Giá trị thuộc tính Giải thích
1
String Select Function
Fontsize 10 Là Fontsize của String
2 String
sin
cos
tan
cotg
arcsin
arccos
arctan
arccotg
sinh
cosh
tanh
cotgh

Giá trị trong mọi ô String đều được hiển thị lên giao
diện, nó thường được dùng để làm nhãn chỉ dẫn.
Nó hiển thị khi được gọi bởi hàm, hoặc được thiết
lập trước từ người lập trình. Hình ảnh chi tiết minh
họa bên dưới (1)
[Type text] Page 13

Tag ham
Tag
là giá tr
ị của thuộc tính. Thuộc tính Tag cực kì
quan trọng, nó là nhãn của một đối tượng, được sử
dụng để gọi thuộc tính của đối tượng thông qua
các hàm để thay đổi giá trị của thuộc tính… giá trị
của Tag có phân biệt chữ in hoa, chữ thường,
không được đặt tên Tag trùng với tên file đã lưu
hay trùng với bất cứ các kí tự đặc biệt nào Mỗi
hộp thoại chỉ có một Tag duy nhất và độc quyền.
Fontsize 15
3
String Input
Fontsize 10
4
String
Tag input
Fontsize 15
5
String Select input
Fontsize 10
6

String Degree
Tag degree
Fontsize 15
7
String Radian
Tag radian
Fontsize 15
8
String =
Tag ok
Fontsize 15
9
String Output
Fontsize 10
10
String
Fontsize 15
Tag kq
11
String Clear all
Fontsize 15
Tag clc
12
String Colors on
Fontsize 15
Tag color
13
String
Enter the range of
x


Fontsize 10
14
String
Fontsize 15
Tag x_input
15 String Options
[Type text] Page 14

Fontsize 10
16
String Plot
Fontsize 15
Tag plotx
Enable off
thuộc tính Enable là thuộc tính cho phép hay không
cho phép đối tượng hoạt động, tương ứng với 2
trạng thái on và off
17
String Hold on
Fontsize 15
Tag hold
18
String Grid on
Fontsize 15
Tag grid
19
Tag axes1
Visible off
thuộc tính Visible Là thuộc tính cho phép chọn hiện

(on) hay ẩn (off) cửa sổ giao diện của nó
20
String Plot(x)
Fontsize 15
Visible off

Tag nhan

21
String Exit
Fontsize 15
Tag exit

- Hình sau mô tả cách thay đổi giá trị trong ô String của Select Function:
[Type text] Page 15


+ Sau khi viết xong, nhấn OK để lưu lại
- Sauk hi chỉnh sửa các thông số ta dùng chuột để di chuyển các hộp thoại, bố trí hộp thoại
theo mong muốn, ta được giao diện như sau:


[Type text] Page 16



III. MỘT VÀI CHỨC NĂNG MỞ RỘNG
- Chú ý, để tạo sự thẳng hàng, cột của các hộp thoại cho đẹp mắt ta làm như sau:
Nhấn giữ phím Ctrl và nhập vào các hộp thoại muốn chỉnh sửa, Trên Menu chọn Align
Objects . Hộp thoại Align hiện ra như sau:


[Type text] Page 17

- Trong hộp thoại trên ta có thể cân chỉnh các nút, nhóm nút sao cho chúng thẳng hàng,
thẳng cột và đều nhau. Sau khi cân chỉnh nhấn nút Apply để lưu thay đổi.
- Bây giờ ta thiết lập thuộc tính chung cho giao diện (toàn bộ vùn thiết kế hay nền giao
diện)
+ Nhấp đúp chuột vào bất cứ vị trí nào trên nền giao diện để vào hộp thoại Inspector
(hoặc trên menu chọn View -> Property Inspector), hộp thoại Inspector hiện ra như sau:
+ Thiết lập Tag là “exit”
- Tiếp tục tùy chọn nâng cao , vào Menu Tools -> GUI Options


Hộp thoại hiện ra như sau :

- Trên hộp thoại Resize behavior chọn dòng số 2 (Proportional), dòng này cho phép người
dùng thay đổi khích thước của giao diện và các đối tượng cũng tự động thay đổi kích
thước phù hợp với nền giao diện, nhấn OK để lưu thay đổi
[Type text] Page 18

PHẦN 4 : THỰC THI HÀM TRONG GUIDE

 Ở phần này từng câu lệnh sẽ được giải thích khi thực thi.
I. GIAO DIỆN TRONG MFILE
- Khi đã cân chỉnh xong toàn bộ giao diện trong GUI, nhấn F5 (hoặc nhân tổ hợp phím
Ctrl + T hoặc nhấp vào biểu tượng trên thanh Menu).
- Khi Run, Matlab sẽ tự chạy file .m và hiển thị doa diện đồ họa lên màn hình. ở đây ta bắt
đầu thao tác với file .m



[Type text] Page 19

- Khi ta chưa thao tác trong Trong file .m xuất hiện như trên hình, trong đó, tất cả các hàm
function đều được Matlab hỗ trợ tạo sẵn các hàm chức năng có liên quan, ta chỉ việc thao
tác trên đó.
- Mỗi sau một hàm bất kì đều có các chú thích bên dưới (sau dấu %), ta có thể xóa toàn bộ
chúng đi đễ dễ nhìn cũng không ảnh hưởng đến các hàm.
- Trong Mfile có sẵn các hàm callback, ta có thể tìm trong Mfile các hàm liên quan để viết
câu lệnh, tuy nhiên, để nhanh hơn chúng ta có thể làm như sau:
+ Quay lại màn hình giao diện GUI vừa thiết kế, nhấp vào hộp thoại muốn thực thi hàm
callback, nhấp chuột phải chọn View Callbacks -> Callback, Như hình sau:

+ Sau đó hàm callback sẽ tự động được gọi và con trỏ chuột sẽ tìm đến vị trí của nó trong
Mfile.
- Bây giờ khi muốn gọi một hàm nào ta cũng có thể thực hiện như trên. Sau đó tiến hành
viết câu lệnh cho nó.
II. MỘT SỐ HÀM TRONG GUI
- Hàm callback được lập trình cho các nút button, checkbox, edit text… nhưng static text
và axes… thì không có hàm callback.
- Mỗi một callback được viết với cấu trúc như sau:
function Tag_Callback(hObject, eventdata, handles)
- Với Tag chính là giá trị của Tag mà ta đã đặt khi tạo giao diện. Các hàm chứa bên trong
callback bao gồm hObject, evendata,handles
+ hObject là hàm truy cập nội bộ của mỗi function riêng lẽ
+ Evendata là hàm xác đinh thuộc tính của function
+ Handles là hàm truy cập liên kết giữa các function, nó bao gồm tất cả các cấu trúc của
người dùng, được sử dụng để truy xuất qua các điều khiển khác.
- Hàm Get cho phép ta gọi thuộc tính của đối tượng.
- Hàm Set cho phép ta đặt giá trị cho thuộc tính của đối tượng
[Type text] Page 20


III. KHÁI NIỆM BIẾN HỆ THỐNG
 Để dễ dàng trong việc tạo sự liên kết giữa các hàm callback với nhau, Matlab GUI hỗ
hợ một biến chung gọi là biến hế thống giúp các hàm callback đều sử dụng được, sau
đây là cách sử dụng:
Trước khi bắt đầu lập trình ta tìm dòng sau trong Mfile và them một dòng mới như sau:
(hình mình họa):

- Giải thích: handles.unit_input lúc này là biến trung gian trong hệ thống, bất cứ hàm
callback nào cũng có thể sử dụng nó, ban đầu ta gán cho nó giá trị =0. Chúng ta phải đặt
nó ở hàm function OpeningFcn (xem hình) để biến này có thể được khởi động ngay khi
chương trình bắt đầu chạy.
Để lấy giá trị của nó ta chỉ việc viết câu lệnh tương tự như sau:
d=handles.unit_input; % gia tri dược lưu vào biến d
- Hai hàm cơ bản nhất ta sẽ thường xuyên sử dụng đến là:
- Biến hệ thống được lưu lại với lệnh:
Handles(hObject,handles)
Đặt lệnh trên ngay khi kết thúc hàm function mà ta đặt biến hệ thống
- Biến hệ thống có thể có nhiều tùy ý nhưng không được trùng tên.
 Ở phần cuối sẽ có ví dụ cụ thể để hiểu rõ sự liên hệ giữa các biến đơn lẻ và biến
hệ thống.





















[Type text] Page 21

PHẦN 5: LẬP TRÌNH CÁC ĐỐI TƯỢNG

I. NÚT NHẤN DEGREE TRONG BẢNG SELECT INPUT
- Thực hiện thao tác như bước vừa nói trên (minh họa trong hình), hàm callback sẽ tự động
gọi:



Lần lượt viết các câu lệnh sau vào bên dưới:
b = str2num(get(handles.input,'string'));
handles.unit_input = b*pi/180;
guidata(hObject, handles)
Giải thích:
Câu lệnh 1: b = str2num(get(handles.input,'string'));
+ b ở đây là một biến được gán.
+ lệnh handles.input: dùng để truy cập đến thuộc tính của ô edit text có Tag là “input”
+ Lệnh Get dùng để lấy giá trị thuộc tính của String , Ở đây giá trị của String được nhập

từ bàn phím, Matlab sẽ hiểu nó là một chuỗi các kí tự.
get(handles.input,'string'))% lấy giá trị của string trong ô input
+ lệnh Str2num (hoặc str2double) là lệnh chuyển chuỗi kí tự thành một số để thực hiện
các phép toán logic
 b = str2num(get(handles.input,'string')); % lấy chuỗi giá trị chứa
% trong ô input và chuyễn chuỗi đó thành số rồi lưu vào biến b.
Câu lệnh 2: handles.unit_input = b*pi/180;
+ lúc này b là một con số, do đó b*pi/180 là phép toán cho phép
+ handles.unit_input : là một biến chung có thể được sử dụng giữa các hàm callback
khác nhau.
 handles.unit_input = b*pi/180;
có nghĩa giá trị của biến handles.unit_input = b*pi/180
Câu lệnh 3: guidata(hObject, handles)
+ Câu lệnh trên để lưu handles (biến) của handles.unit_input vào hệ thống dữ liệu chung.
+ guidata: lưu biến (handles.unit_input)
Vậy sau khi nhập xong như sau:

[Type text] Page 22





 Tóm tắt: Vì yêu cầu để tài là cho phép chọn nhập vào theo Độ hoặc radian nên: khi
nhấn nút Degree, giá trị nhập vào trong ô input được chuyển thành dạng số tiếp theo
thực hiện lệnh tính toán để chuyển từ radian sang độ, nó đã được thay đổi và lưu vào
biến hệ thống handles.unit_input. Như vậy nút Degree lúc này tương ứng với lựa chọn
đầu vào là nhập theo độ (chuyển đổi từ Radian sang độ = Radian*pi/180), chỉ khi nào
nút này được nhấn thì chúng mới được thực thi.
II. NÚT NHẤN RADIAN TRONG BẢNG SELECT INPUT

- Tương tự nút nhấn Degree, gọi callback của nút radian và viết callback cho nó như sau:
function radian_Callback(hObject, eventdata, handles)
handles.unit_input = str2num(get(handles.input,'string'));
guidata(hObject, handles)

Giải thích:
Khi nhấn nút nhấn Radian thì giá trị nhập vào trong ô input được chuyển thành số và lưu
trực tiếp vào biến hệ thống handles.unit_input, tương ứng với lựa chọn nhập hàm vào theo
Radian, tức là giá trị ta nhạp vào bao nhiêu sẽ được giữ nguyên và lưu vào biến
handles.unit_input, chỉ khi nào nút này được nhấn thì chúng mới được thực thi
III. NÚT NHẤN DẤU =
- Tương tự ta gọi đến callback của nó và nhập vào hàm như sau:
function ok_Callback(hObject, eventdata, handles)
d=handles.unit_input
y=get(handles.ham,'Value')
if y==1;
e=sin(d)
elseif y==2;
e=cos(d)
elseif y==3;
e=tan(d);
elseif y==4;
e=cot(d);
elseif y==5;
e=asin(d);
elseif y==6;
e=acos(d);
elseif y==7;
e=atan(d);
elseif y==8;

e=acot(d);
elseif y==9;
[Type text] Page 23

e=sinh(d);
elseif y==10;
e=cosh(d);
elseif y==11;
e=tanh(d);
elseif y==12;
e=coth(d);
end
if and(e<0.000001,e>-0.000001)
set(handles.kq,'string','0');
elseif or(e>1000,e<-1000)
set(handles.kq,'string','Math error');
else
set(handles.kq,'string',num2str(e));
end


Giải thích:
- Ở trên ta thực hiện lệnh vòng lặp if –elseif – end
- Cấu trúc lệnh vòng lặp if –elseif – end như sau:
>> if biểu_thức_logic_1
các_phát_biểu_1
>> elseif biểu_thức_logic_2
các_phát_biểu_2

>> elseif biểu_thức_logic_n

các_phát_biểu_n
>> end


- Ở trong cấu trúc hàm trên thì:
y=get(handles.ham,'Value')==1;
+ Ý nghĩa : lấy giá trị thuộc tính (Value) của ô có Tag là “ham” và so sánh với 1 và gán
vào biến y, ở đây Tag “ham” là Pop-up Menu chứa các hàm lượng giác (xem bảng), thuộc
tính Value của nó được chọn tương ứng với hàng của nó:
Ví dụ ta chọn SIN, thì SIN ở dòng thứ nhất, do đó Value của nó = 1 tương úng với
dòng 1
Hoặc nếu ta chọn COS, khi đó giá trị Value của nó = 2 tương ứng với COS ở dòng
số 2
- Như vậy với đoạn code trên, Biểu thức logic được ta chọn để thực thi phát biểu, mỗi một
biểu thức logic đúng thì nó sẽ thức thi phát biểu ngay sau nó, tương ứng với các hàm
lương giác, thao tác trên biến d.
+ Với ví dụ :
Elseif y==1
e=cos(d);

×