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

luận văn công nghệ thông tin nghiên cứu về matlab và ứng dụng vào bài toán tài chính

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 (1.63 MB, 116 trang )

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 1 /116
MỞ ĐẦU
^ ]

Ngày nay, kinh tế nước ta đã phát triển đáng kể. Các công ty, ngân hàng ra
đời ngày càng nhiều, thị trường chứng khoán đang dần sôi động,…Thêm vào
đó, dân số tăng nhanh làm cho vấn đề quản lý tài chính trở nên cần thiết và
quan trọng. Từ đó, yêu cầu phải có công cụ giúp giải quyết các bài toán trong
tài chính thật hiệu quả và đơn giản. Một trong những công cụ rất mạnh đó là
Matlab (Matrix Laboratory).
Để thấy được khả
năng ứng dụng của MatLab vào lĩnh vực tài chính, luận
văn sẽ trình bày tổng quan về Matlab (đặc biệt là hộp công cụ tài chính), giới
thiệu sơ lược các bài toán thông dụng trong tài chính và thiết kế hệ thống giải
một số bài toán tài chính thông qua Matlab.
Nhằm tạo sự giao tiếp thân thiện và thể hiện tính năng giao tiếp của MatLab
với các ngôn ngữ khác, hệ thống được thiết kế giao diện, xử lý trên nền
tảng .NET (cụ thể là ngôn ngữ C#) và sử dụng MatLab để tính toán.
Khả năng tích hợp MatLab với .NET chỉ được hỗ trợ từ MatLab version 7.2
trở lên (Hộp công cụ Matlab Builder for .NET).
Nội dung cụ thể
:
 Giới thiệu các thành phần cơ bản của MabLab bao gồm:
- Khái niệm về MatLab
- Tính toán trên ma trận
- Đồ họa hai chiều
- Không gian 3D
- Lập trình trong MatLab
- Tạo giao diện người sử dụng đồ họa (GUI).


 Giới thiệu một số bài toán cơ bản trong tài chính bao gồm
- Bài toán cơ bản trong hệ thống lãi đơn
- Bài toán cơ bản trong hệ
thống lãi kép
- Bài toán về các khoản tiền thanh toán theo chu kỳ
- Bài toán tính chỉ số
- Bài toán về dự đoán
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 2 /116
 Giới thiệu các hàm về tài chính trong Matlab
- Các hàm về tác vụ tài chính phổ biến
- Các hàm trong hệ thống lãi đơn
- Các hàm về các khoản thanh toán theo chu kỳ
- Các hàm về tác vụ phổ biến của đối tượng FTS
1

- Các hàm về dự báo theo chuỗi thời gian
 Thiết kế hệ thống giải các bài toán tài chính thông qua Matlab.
- Giới thiệu hệ thống
- Phân tích nghiệp vụ
- Thiết kế dữ liệu
- Giao diện
- Thử nghiệm

Bố cục luận văn bao gồm 4 chương
:
 Chương 1 : Giới thiệu tổng quan về Matlab.
 Chương 2 : Giới thiệu một số bài toán trong tài chính.
 Chương 3 : Các hàm về tài chính trong Matlab.

 Chương 4: Thiết kế hệ thống giải các bài toán tài chính thông qua Matlab.




1
Financial Time Series: Chuỗi thời gian tài chính
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 3 /116
Chương 1
GIỚI THIỆU TỔNG QUAN VỀ MATLAB

1.1 Matlab là gì? (Xem chi tiết trong [1] [2], TLTK
2
)
Matlab (Matrix Laboratory) là phần mềm của tập đoàn The Math Works,
Inc. of Natick, Massachusetts – Mỹ, được phân chia thành các lĩnh vực ứng
dụng dựa vào các hộp công cụ (toolbox), đặc biệt là dùng trong tính toán kỹ
thuật. Matlab kết hợp việc tính toán, hiển thị và lập trình trong một môi
trường dễ sử dụng. Ở đó, các vấn đề và giải pháp được trình bày bằng những
ký hiệu toán học quen thuộc.
Nhà phân tích số học Cleve Moler đã xây dựng phiên bản đầu tiên của
Matlab vào những năm 1970 bằng FORTRAN. Sau đó, Matlab được viết
bằng ngôn ngữ C trên cơ sở các thư viện đã có và phát triển thêm nhiều lĩnh
vực ứng dụng khác. Nó đưa ra nhiều tác vụ thực tế được kết hợp với việc giải
quyết các vấn đề số học. Điều này làm giảm bớt thời gian suy nghĩ và khuyến
khích các thử nghiệm. Matlab cung cấp các lệnh mạnh và hiệu qu
ả, giúp hiện
thực những tác vụ phức tạp chỉ bằng một hoặc hai dòng lệnh. Ngoài những

hàm được Matlab cung cấp sẵn, ta cũng có thể tạo ra hàm mới để phục vụ cho
các ứng dụng riêng của mình.
Các ứng dụng tiêu biểu bao gồm:
 Hỗ trợ toán học và tính toán
 Phát triển thuật toán.
 Yêu cầu cung cấp dữ liệu.
 Mô hình, mô phỏng và lấy mẫu.

Phân tích, khảo sát và hiển thị dữ liệu.
 Khoa học và kỹ thuật đồ họa.
 Phát triển ứng dụng với giao diện người dùng đồ họa (GUI).


2
Tài Liệu Tham Khảo
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 4 /116
1.2 Các chức năng của Matlab:
1.2.1 Tính toán trên ma trận:
1.2.1.1 Tạo ma trận:
Để tạo ma trận A kích thước n
xm, từ dòng lệnh (command line) của
Matlab ta nhập như sau:
>> A = [A
11
A
12
… A
1m

; A
21
A
22
… A
2m
;……; A
n1
A
n2
… A
nm
];
Có thể xuống dòng hoặc dùng dấu “;” để ngăn cách các hàng của ma
trận. Các cột cách nhau bởi dấu “,” hoặc khoảng trắng. Nếu một hàng trong
ma trận có quá nhiều phần tử ta dùng dấu “…” và viết các phần tử còn lại ở
dòng kế tiếp.
Ví dụ: >>A = [2 4 5; 3 1 9; 7 2 6]
Kết quả: A =
627
913
542

Ngoài nhập trực tiếp từ dòng lệnh như trên, ta có thể tạo ma trận bằng
cách đọc từ một file dữ liệu đã có (trong Matlab file này có phần mở rộng
là .mat, .dat,…), dùng toán tử “:”
3

hoặc nhập từ bàn phím (dùng lệnh input).
Cách tạo một số ma trận đặc biệt:

Cú pháp Ý nghĩa
M = [] Tạo ma trận rỗng
M = zeros(n,m) Ma trận kích thước nxm với toàn các phần tử là 0
M = ones(n,m) Ma trận kích thước nxm với toàn các phần tử là 1
M = eye(n) Ma trận đường chéo (ma trận vuông cấp n)
M = eye(n,m) Ma trận đường chéo mở rộng (kích thước nxm)
M = magic(n) Ma trận ma phương bậc n
M = rand(n,m) Ma trận kích thước nxm với các số ngẫu nhiên
Bảng 1. 1: Một số ma trận đặc biệt trong Matlab

1.2.1.2 Xử lý ma trận:
 Các phép toán cơ bản:

Trong Matlab, ký hiệu A’ là ma trận chuyển vị của ma trận A.
Các ma trận được cộng , trừ và nhân bằng các ký hiệu toán học thông
thường là +, –, * và /. Đặc biệt Matlab còn cung cấp phép chia phải (dùng
trong giải phương trình tuyến tính) ký hiệu là \.

3
Toán tử “:” biểu diễn cho cả dòng hoặc cả cột của ma trận. Nếu nó nằm giữa 2 số nguyên thì đại diện
cho tất cả các số nguyên ở giữa 2 số nguyên đó. (Xem chi tiết trong [3], TLTK)
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 5 /116
Ví dụ : >>A = [5 7 0 ; 2 1 8] ;
>>B = [6 1 4 ; 5 3 1] ;
>>C = A+B
Kết quả : C =
947
4811


Chú ý : Với phép nhân vô hướng hai ma trận cùng kích thước A và
B phải viết là A.*B thay vì A*B (số hàng ma trận A phải bằng số cột ma
trận B).
 Lấy các giá trị của một ma trận:
(Xem chi tiết trong [4], TLTK)
M(i, j) : là phần tử dòng i cột j của ma trận M.
M(:, j) : là cột thứ j của ma trận M.
M(i:k, :) : biểu diễn các dòng từ i đến k.
M(i:k, j:l) : chọn ma trận con gồm các phần tử thuộc hàng từ i đến k và
từ cột j đến l.
Ví dụ: cho ma trận A =
61289
3251
1742

>>B = A(2:3, 2:3)
B =
128
25

1.2.1.3 Các hàm cơ bản : (Xem chi tiết trong [5], TLTK)
Hàm Ý nghĩa
size(A) Trả vể một vector hàng [m n] chứa kích thước của
mảng A có m hàng, n cột.
length(A) trong đó A là một ma trận, sẽ trả về số lớn nhất trong
hai số m, n
max(A) Nếu A là vector, sẽ trả về phần tử lớn nhất trong A;
Nếu A là một ma trận, sẽ trả về vector hàng chứa các
phần tử lớn nhất của mỗi cột

min(A) Tương tự max(A), nhưng lựa chọn phần tử bé nhất
sum(A) Tính tổng các phần tử trong từng cột của ma trận A,
kết quả chứa trong vector hàng.
sort(A) Sắp xếp mỗi cột của ma trận A theo thứ tự giá trị tăng
dần từ hàng 1 đến hàng cuối
rot90(M) Quay các phần tử trong ma trận M ngược chiều kim
đồng hồ một góc 90 độ.
fliplr(M) Đảo các phần tử trong ma trận M từ trái sang phải.
flipud(M) Đảo các phần tử trong ma trận M từ trên xuống dưới.
reshape(M, n, m) Hàm dùng để định dạng lại số hàng và cột của ma
trận. Kết quả trả về là ma trận mới với số hàng và cột
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 6 /116
khác với M, nhưng số phần tử của 2 ma trận thì bằng
nhau. Với n, m là số hàng và cột tương ứng của ma
trận mới.
diag(M)
diag(M, k)
diag(V)

Lấy các phần tử trên đường chéo chính của M.
Ta có thể chọn đường chéo dựa vào k.
k = 0: chọn đường chéo chính.
k<0: chọn đường chéo thứ k ở dưới đường chéo chính
k>0: chọn đường chéo thứ k ở trên đường chéo chính.
Tạo ma trận vuông với đường chéo chính là vec-tơ V.
triu(M)
triu(M, k)


Tạo ra ma trận mới cùng kích thước và chứa các phần
tử thuộc và nằm phía trên đường chéo chính (hoặc thứ
k) của ma trận M. Các vị trí khác bằng 0.
tril(M)
triu(M, k)

Tạo ra ma trận mới cùng kích thước và chứa các phần
tử thuộc và nằm phía dưới đường chéo chính (hoặc thứ
k) của ma trận M. Các vị trí khác bằng 0.
Bảng 1. 2: Các hàm cơ bản về ma trận

1.2.2 Đồ họa hai chiều trong MatLab:
1.2.2.1 Một số lệnh kiểm soát: (Xem chi tiết trong [3], TLTK)

Lệnh Ý nghĩa
figure(gef) Hiển thị cửa sổ đồ họa hiện hành.
whitebg(ColorSpec) Thay đổi màu nền của màn hình đồ họa.
home Chuyển con trỏ đến vị trí “home”– vị trí phía trên
bên trái màn hình
clc Xóa màn hình lệnh
elf Xóa cửa sổ đồ họa hiện hành
hold on Giữ lại tất cả màn hình đã vẽ. Các lệnh sau sẽ thêm
vào màn hình đồ họa chứ không xóa màn hình cũ.
hold off Bỏ chức năng “hold on”, đây là trạng thái mặc định
của màng hình đồ họa.
ishold Trả về 1 nếu trạng thái của hold là on, ngược lại trả
về 0.
subplot(m,n,p) Chia màn hình đồ họa thành ma trận mxn của
những khung ảnh con với p là khung ảnh hiện hành.
Những khung ảnh con được đánh số theo chiều từ

phải sang trái và từ trên xuống.
grid on/off Bật/tắt chế độ thêm lưới vào khung nhìn trong màn
hình đồ họa.
axis([x
min,
x
max
,y
min
,y
max
]) Đặt giới hạn cho trục x và y của hệ tọa độ hiện
hành.
Bảng 1. 3: Các lệnh kiểm soát



SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 7 /116
1.2.2.2 Các lệnh vẽ cơ bản:
• Lệnh plot: vẽ đồ thị tuyến tính 2D theo cả 2 trục.
Cú pháp Ý nghĩa
plot(Y) Vẽ các cột của Y tương ứng với các chỉ mục của
chúng nếu Y là 1 số thực. Nếu Y là số phức, thì
plot(Y) tương đương plot(real(Y), imag(Y)).
Trong tất cả các trường hợp khác của lệnh plot
thì phần ảo được bỏ qua.
plot(X1,Y1,…,Xn,Yn) Vẽ tất cả các đường được định nghĩa bởi cặp Xn,
Yn. Nếu Xn hoặc Yn là ma trận, vec-tơ được vẽ

là các hàng hoặc các cột của ma trận, phụ thuộc
vào kích thước hàng hoặc cột của vec-tơ có phù
hợp với ma trận hay không.
plot(X1,Y1, 'LineSpec', ) Vẽ tất cả các đường được định nghĩa bởi bộ ba
Xn, Yn và LineSpec. LineSpec là đặc tả xác định
kiểu đường, ký hiệu và màu của đường được vẽ.
(Xem danh sách các LineSpec ở phụ lục)
plot( ,'PName',PValue, ) Thiết lập các thuộc tính với các giá trị thuộc tính
được chỉ định cho tất cả các đối tượng đồ họa
lineseries tạo ra bởi lệnh plot.
plot(axes_handle, ) Vẽ trong hệ tọa độ với ô điều khiển axes_handle
thay cho hệ tọa độ hiện hành.
h = plot(…) Trả về một vec-tơ cột của các ô điều khiển cho
các đối tượng đồ họa lineseries, một ô điều khiển
trên một hàng.
hline = plot(‘v6’,…) Trả về các ô điều khiển cho các đối tượng đường
(line) thay cho đối tượng lineseries.
Bảng 1. 4: Cú pháp lệnh plot

Ví dụ: >>x = -pi:pi/10:pi;
>>y = tan(sin(x)) - sin(tan(x));
>>plot(x,y,' rs','LineWidth',2,
'MarkerEdgeColor','k',
'MarkerFaceColor','g',
'MarkerSize',10)

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 8 /116
Kết quả:


Hình 1. 1: Ví dụ cách dùng lệnh plot

Ngoài ra, còn một số lệnh có cú pháp và ý nghĩa tương tự như lệnh plot:
• Lệnh loglog: vẽ đồ thị với giá trị logarith theo cả hai trục.
• Lệnh semilogx: vẽ đồ thị với giá trị logarith theo trục x và tuyến tính
theo trục y.
• Lệnh semilogy: vẽ đồ thị với giá trị logarith theo trục y và tuyến tính
theo trục x.
• Lệnh plotyy: vẽ đồ thị với nhãn y được dán bên cạnh trái và phải.
1.2.2.3
Văn bản trong màn hình đồ họa :
Matlab hỗ trợ các lệnh để tạo văn bản trên màn hình đồ họa. Ta có thể
gán thêm các nhãn vào các trục tọa độ, hay đặt một chuỗi ký tự vào vị trí
bất kỳ trên đồ thị,…

Lệnh Ý nghĩa
title(‘text’) Đặt tiêu đề với nội dung “text”.
xlable(‘text’) Gán nhãn “text” ở giữa trục x.
ylable(‘text’) Gán nhãn “text” ở giữa trục y.
zlable(‘text’) Gán nhãn “text” ở giữa trục z.
legend(‘s1’,’s2’,…) Thêm chuỗi s1, s2 (trong hộp – box) với vị trí của box
có thể được điều khiển bởi chuột.
text(x,y,’txt’) Hiện chuổi ký tự txt ở vị trí x,y trên màn hình đồ họa.
gtext(‘txt’) Dùng chuột click để đặt chuỗi ký tự txt tại vị trí mong
muốn. Mỗi hàm gtext(…) được click 1 lần.
Bảng 1. 5: Các hàm về văn bản trong màn hình đồ họa

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150


Trang 9 /116
1.2.3 Không gian 3D (3D – Visualization):
1.2.3.1 Tạo hình ảnh 3D:
Để tạo hình ảnh 3D, chúng ta có những bước cơ bản sau:
• Chuẩn bị dữ liệu
• Chọn cửa sổ và vị trí khu vực cần vẽ bên trong cửa sổ
• Gọi chức năng vẽ 3D
• Đặt thuộc tính colormap và shading
• Thêm thuộc tính lighting
• Đặt điểm nhìn
• Đặt trục giới hạn và tick marks
• Set aspect ratio(Đặt tỉ lệ
tương quan)
• Chú thích hình ảnh với nhãn tọa độ, chú giải và chủ đề
• In biểu đồ
1.2.3.2 Các hàm vẽ 3D cơ bản:
Hàm Ý nghĩa
plot3 (x, y, z) Tạo ra một đường 3D với các điểm tọa độ là thành phần của x,
y, z (với x, y, z là 3 vector có cùng độ dài) và sau đó tạo ra thể
hiện đường 2D nằm trên màn hình.
mesh(x, y, z ) Vẽ một khung lưới với màu được xác định bởi z để màu tương
ứng với độ cao của bề mặt. Nếu x, y là vec-tơ thì length(x) = n
và length(y)=m, [m,n] = size(z).
meshc(x, y, z ) Vẽ một hình đường nét ở dưới hình lưới.
surf(x ,y, z ) Tạo ra một bề mặt được tô đậm dần với z là đối số dùng để tô
màu.
Bảng 1. 6: Các hàm vẽ 3D cơ bản

1.2.3.3
Công cụ hiển thị bằng vùng sáng (Lighting as a Visualization Tool)

 Khái niệm về lighting:
Đây là một kỹ thuật dành cho việc tạo khả năng hiện thực khung nhìn
đồ họa. Nó thực hiện mô phỏng khu vực sáng tối xuất hiện trên những đối
tượng dưới độ sáng tự nhiên. Để tạo hiệu ứng lighting, MatLab định nghĩa
đối tượng gọi là light. MatLab áp dụng lighting cho đối tượng bề mặt và
chắp vá.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 10 /116
 Các lệnh lighting:
 Camlight: Tạo hoặc di chuyển một light đối với vị trí máy quay
- Headlight: tạo một light tại vị trí máy quay
- Right(mặc định): tạo một light bên phải và trên xuống từ máy quay
- Left: tạo một light bên trái và trên xuống từ máy quay.
 Lightangle: Tạo hoặc xác định vị trí một light trong tọa độ hình cầu.
 Light: Tạo đối tượng light. Gồm ba thuộc tính quan trọng:
- Color: Thuộ
c tính Color xác định màu của light được định hướng
từ nguồn light. Màu của một đối tượng trong khung nhìn được xác
định bởi màu của đối tượng và nguồn sáng
- Style: Style xác định liệu nguồn sáng là một điểm phát ra từ một vị
trí xác định trong tất cả các hướng hay là một nguồn sáng được đặt
tại vô cực tỏa ra từ một vị trí xác định với những chùm sáng song
song.
- Position: Position xác định v
ị trí nguồn sáng. Trong trường hợp
nguồn sáng tại vô cực, Position định rõ hướng đến nguồn sáng.
 Lighting: Chọn thuật toán lighting để tính hiệu ứng của đối tượng light
trên tất cả các đối tượng surface và patch trong tọa độ hiện tại. Gồm
các thuộc tính:

- none: tắt thuộc tính lighting.
- flat: tạo màu đồng nhất cho mỗi mặt của đối tượng. Chọn phương
pháp này để xem rõ một số
mặt của đối tượng.
- gouraud: tính toán màu tại đỉnh và nội suy màu thông qua các
mặt.Chọn phương pháp này để xem bề mặt cong.
- phong: Nội suy đỉnh qua mỗi mặt và tính toán hệ số phản xạ trên
mỗi pixel. Chọn phương pháp này để xem bề mặt cong. phong
lighting cho kết quả tốt hơn Gouraud nhưng mất nhiều thời gian để
thể hiện.
 Material: Đặt thuộc tính hệ số phản xạ
của đối tượng light
 Các thuộc tính lighting:

 AmbientLightColor: Thuộc tính axes xác định màu nền của khung
nhìn, không định hướng và ảnh hưởng đồng đều đến tất cả đối tượng.
Hiệu ứng độ sáng xung quanh chỉ xuất hiện khi có một đối tượng light
có thể thấy được trong hệ trục.
 AmbientStrength: Thuộc tính patch và surface xác định cường độ
thành phần ánh sáng xung quanh được phản xạ từ đối tượng.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 11 /116
 DiffuseStrength: Thuộc tính patch và surface xác định cường độ thành
phần ánh sáng khuếch tán được phản xạ từ đối tượng.
 SpecularStrength: Thuộc tính patch và surface xác định cường độ
thành phần ánh sáng phản chiếu được phản xạ từ đối tượng.
 SpecularExponent: Thuộc tính patch và surface xác định kích thước
chỗ phản chiếu sáng nhất.
 SpecularColorReflectance: Thuộc tính patch và surface xác định mức

độ ánh sáng phản xạ được tô màu bởi đố
i tượng color hoặc màu nguồn
sáng.
 FaceLighting: Thuộc tính patch và surface xác định phương pháp tính
hiệu ứng ánh sáng trên những bề mặt đối tượng. Nếu chọn thuộc tính
này thì không có thuộc tính lighting flat, phong, gouraud.
 EdgeLighting: Thuộc tính patch và surface xác định phương pháp tính
hiệu ứng ánh sáng trên các đỉnh của đối tượng. Nếu chọn thuộc tính
này thì không có thuộc tính lighting flat, phong, gouraud.
 BackFaceLighting: Thuộc tính patch và surface xác định cách các bề
mặt được chiếu sáng khi đỉnh của chúng cách xa máy quay.Thuộc tính
này hữu ích để
phân biệt bề mặt bên trong và bên ngoài của một đối
tượng.
 FaceColor: Thuộc tính patch và surface xác định màu bề mặt đối
tượng.
 EdgeColor: Thuộc tính patch và surface xác định màu đỉnh đối tượng.
 VertexNormals: Thuộc tính patch và surface chứa những vectơ pháp
tuyến cho mỗi đỉnh. MatLab dùng các vec-tơ đỉnh pháp tuyến để thể
hiện tính toán sự phân bố ánh sáng. MatLab tạo ra dữ liệu này tự động.
 NormalMode: Thuộc tính patch và surface xác đị
nh liệu MalLab có
tính toán lại các vec-tơ nếu ta thay đổi dữ liệu( auto ) hoặc dùng giá trị
hiện tại của thuộc tính VextexNormals(manual). Nếu ta xác định giá
trị VextexNormals, MatLab đặt thuộc tính này là manual.
1.2.3.4 Độ trong suốt (Transparency):
 Đối tượng Transparency:

Tạo đối tượng đồ họa nửa trong suốt là một kỹ thuật hữu ích trong
không gian 3D làm dễ dàng thấy được thông tin của đối tượng trong khi

nó hoàn toàn mờ đục.

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 12 /116
 Hàm Transparency:
 alpha : Đặt, truy vấn thuộc tính Transparency cho những đối tượng
trong tọa độ hiện tại.
- Thuộc tính FaceAlpha: flat, interp, texture, opaque(=1), clear(=0).
- Thuộc tính AlphaData: x, y, z, color, rand
- Thuộc tính AlphaDataMapping: scaled, direct, none.
 alphamap: Xác định hình thái alphamap
- Parameter: default, rampup, rampdown, vup, vdown, increase,
decrease, spin.
 alim: Đặt, truy vấn giới hạn tọa độ alpha
- alimMode: auto, manual.
1.2.4 Lập trình trong Matlab:
1.2.4.1 Cấu trúc dữ liệu:
Cấu trúc dữ liệu đơn giản nhất trong Matlab là ma trận – một hình chữ
nhật hai chiều có khả năng lưu trữ nhiều yếu tố dữ liệu trong một định dạng
dễ truy cập. Các yếu tố này có kiểu là số, ký tự, logic, hoặc các kiểu cấu
trúc khác của Matlab. Matlab dùng ma trận để lưu trữ các số đơn hay chuỗi
số tuyến tính đề
u rất tốt. Trong trường hợp này, kích thước lần lượt là 1-1
hoặc 1-n (với n là chiều dài của chuổi số). Matlab cũng hỗ trợ các cấu trúc
dữ liệu nhiều hơn hai chiều.
1.2.4.2 Kiểu dữ liệu:
Có nhiều kiểu dữ liệu khác nhau được dùng trong Matlab. Có thể xây
dựng các ma trận và mảng của dữ liệu nguyên và thực, ký tự và chuổi,
logic,…Ta cũng có thể tạo ra các kiểu dữ liệu b

ằng cách dùng các lớp
(class) của Matlab. Có mười lăm kiểu dữ liệu cơ bản trong Matlab. Mỗi
kiểu dữ liệu này là một dạng của ma trận hoặc mảng có kích thước từ 0-0
đến mảng n chiều hoặc bất kỳ kích thước nào.

Hình 1. 2 : Kiểu dữ liệu trong Matlab
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 13 /116
 Kiểu logic (logical):
Kiểu dữ liệu logic thể hiện trạng thái true hoặc false bằng cách dùng
lần lượt hai số 1 và 0. Các hàm hay toán tử trả về true hoặc false để cho
biết điều kiện được tìm thấy là đúng hay không. Dữ liệu logic không có
hướng, Matlab hỗ trợ các mảng giá trị logic.
Một cách để tạo mảng logic là nhập giá trị true hoặc false cho mỗi
phần tử của mảng. True trả về mức logic 1 và false trả về m
ức logic 0.
Ví dụ : >>X = [true false false true false]
Kết quả: X = [1 0 0 1 0]
 Kiểu ký tự và chuỗi
(char and string):
Trong Matlab từ ‘string’ được nhắc đến như một mảng các ký tự
Unicode. Matlab thể hiện mỗi ký tự bên trong như giá trị số tương ứng
của nó. Tuy nhiên, nếu không muốn truy cập những giá trị này, thì có thể
dễ dàng làm việc với các ký tự như hiển thị của chúng trên màn hình.
Chúng ta tạo ra dữ liệu ký tự bằng cách ghi các ký tự trong dấu nháy
đơn.
Ví dụ: Tạo biến “Ten” với giá trị là “Nguyen Van A”
>>Ten = ‘Nguyen Van A’
Hay tạo m

ảng ký tự hai chiều như sau:
>>Ten_Lop = [‘Nguyen Van A’; ‘Lop 02CNPM’]
Có thể chuyển đổi qua lại giữa hai kiểu dữ liệu numeric và string.
 Kiểu số
(numeric):
Kiểu dữ liệu số trong Matlab bao gồm các số nguyên (integer) có dấu
và không dấu, single và double.
Cách tạo dữ liệu kiểu số nguyên: >>tên biến = kiểu(giá trị)
Ví dụ: để tạo biến x có giá trị là 123 kiểu integer 16 bit ta viết:
>>x = int16(123);
Riêng với kiểu double không cần viết x = double(123.456). Ta viết
x = 123.456. Vì mặc định, Matlab lưu trữ các giá trị số là kiểu double.
 Mảng các ô (Cell Arrays):

Mảng ô cung cấp một cơ chế lưu trữ cho các loại dữ liệu khác nhau.
Có thể lưu các mảng của kiểu và/hoặc kích thước khác nhau bên trong các
ô của mảng ô. Để truy cập dữ liệu bên trong mảng các ô, ta dùng chỉ mục
ma trận tương tự như các mảng và ma trận trong Matlab. Tuy nhiên, phải
dùng cặp ngoặc {} thay vì () như thông thường.

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 14 /116
Tạo mảng các ô bằng cách sau:
+ Dùng các câu lệnh có sẵn.
+ Chỉ định mảng dùng hàm “cell”, sau đó đưa dữ liệu vào.
 Kiểu cấu trúc (structure):

Cấu trúc là mảng Matlab với tên “data containers” được gọi là trường
(feild). Các trường của một cấu trúc có thể chứa bất kỳ loại dữ liệu nào.

Ta có thể xây dựng cấu trúc bằng hai cách :
+ Dùng các câu lệnh có sẵn.
+ Dùng hàm “struct”.
1.2.4.3 Thành phần lập trình cơ bản:
 Biến trong Matlab:

 Biến (variable) trong Matlab là một ký hiệu được sử dụng để chứa
một giá trị.
 Matlab cung cấp ba kiểu biến cơ bản: biến cục bộ (local variables),
biến toàn cục (global variables) và biến thường trực (persistent
variables).
- Biến cục bộ: Mỗi hàm trong Matlab đều có biến cục bộ riêng của
nó. Các biến được định nghĩa trong một hàm không lưu lại trong bộ
nhớ từ một hàm g
ọi đến hàm kế tiếp, nếu chúng không được định
nghĩa là global hoặc persistent.
- Biến toàn cục: Khi biến trong một hàm có giá trị với tất cả các hàm
khác thì ta phải khai báo biến đó là global. Để khai báo biến global
chỉ cần thêm vào trước tên biến từ khóa “global”.
Cách khai báo
: global <tênbiến1> <tênbiến2> <tênbiến3>…
(Các biến phải cách nhau bởi khoảng trắng, không dùng dấu phẩy).
Một số lệnh liên quan đến biến toàn cục:
 clear global: xóa bỏ các biến toàn cục.
 isglobal(tên_biến): hàm trả về 1 nếu tên_biến là biến toàn cục,
ngược lại trả về 0.
- Biến thường trực: đặc điểm của biến thường trực:
 Ta chỉ có thể
khai báo và dùng chúng bên trong các hàm M-file.
 Chỉ trong hàm mà biến được định nghĩa mới có quyền truy

cập biến đó.
 Matlab không xóa chúng trong bộ nhớ khi thoát khỏi hàm. Vì
vậy giá trị của nó được giữ lại từ một hàm gọi đến hàm kế tiếp.
Cách khai báo
: persistent <tên_biến>
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 15 /116
Khi ta xóa hàm mà biến thường trực được định nghĩa (dùng
lệnh clear <tên hàm> hoặc clear all), hoặc chỉnh sửa M-file cho
hàm đó, thì Matlab sẽ xóa tất cả các biến thường trực được sử dụng
trong hàm.
 Đặt tên biến: Tên biến trong Matlab phải bắt đầu bằng một chữ cái,
tiếp theo là các chữ cái, số, hay dấu gạch dưới. Matlab phân biệt chữ
hoa và thường. Mặc dù tên biến có thể dài tùy thích, nhưng Matlab chỉ
dùng N (được trả v
ề từ hàm namelengthmax) ký tự đầu tiên của tên
biến. Vì vậy, nên đặt tên biến trong khoảng N (N = 63) ký tự để
Matlab có thể phân biệt các biến với nhau.
 Các toán tử
(operators):
- Matlab cung cấp các toán tử dùng trong tính toán số học như sau:
Toán tử Mô tả
+ Cộng
- Trừ
.* Nhân
./ Chia phải
.\ Chia trái
+ Số dương
- Số âm

: Toán tử hai chấm
.^ Lũy thừa
.' Hoán vị (chuyển vị)
' Complex conjugate transpose
* Nhân ma trận
/ Chia phải ma trận
\ Chia trái ma trận
^ Lũy thừa ma trận
Bảng 1. 7: Toán tử trong tính số học

- Toán tử quan hệ:
Toán tử Mô tả
< Nhỏ hơn
<= Nhỏ hơn hoặc bằng
> Lớn hơn
>= Lớn hơn hoặc bằng
== Bằng
~= Không bằng
Bảng 1. 8: Toán tử quan hệ
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 16 /116
- Toán tử logic:
Toán tử Mô tả
& Nếu hai phần tử tương ứng ở hai mảng đều có giá trị là
true thì trả về 1. Ngược lại trả về 0.
| Nếu một trong hai phần tử tương ứng ở hai mảng có giá
trị là true thì trả về 1. Ngược lại trả về 0.
~ Lấy bù từng phần tử của mảng.
xor Trả về một nếu hai phần tử tương ứng ở hai mảng có giá

trị khác nhau. Ngược lại trả về 0.
Bảng 1. 9: Toán tử logic

 Câu lệnh điều kiện:

 Lệnh if: đánh giá biểu thức logic và thực thi nhóm lệnh dựa trên
giá trị của biểu thức. Các lệnh if có thể lồng nhau.
Cú pháp: if <biểu thức logic>
Nhóm lệnh
end
Nếu biểu thức logic đúng thì thực hiện nhóm lệnh. Nếu sai thì
nhảy đến lệnh end.
 Lệnh else:
Cú pháp: if <biểu thức điều kiện>
Nhóm lệnh 1
else
Nhóm lệnh 2
end
Nếu biểu thức logic đúng thì thự
c thi Nhóm lệnh 1. Ngược lại thì
thực thi Nhóm lệnh 2.
 Lệnh elseif:
Cú pháp: if <biểu thức logic 1>
Nhóm lệnh 1
elseif <biểu thức logic 2>
Nhóm lệnh 2
……
elseif <biểu thức logic n>
Nhóm lệnh n
end

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 17 /116
Nếu biểu thức 1 đúng thì thực hiện Nhóm lệnh 1. Biểu thức 2
đúng thì thực hiện nhóm lệnh 2,…,biểu thức n đúng thì thực hiện
nhóm lệnh n. Nếu không có biểu thức nào đúng thì không có nhóm
lệnh nào được thi hành.
 Lệnh switch: thực thi các nhóm lệnh dựa trên giá trị của một biến
hoặc một biểu thức.
Cú pháp:
switch <biểu thức> (vô hướng hoặc chuỗi)
case <giá trị 1>
Nhóm lệnh 1
case <giá trị
2>
Nhóm lệnh 2
….
otherwise
Nhóm lệnh khác
end
Nếu biểu thức có <giá trị 1> thì ‘Nhóm lệnh 1’ được thực thi.
Nếu biểu thức có <giá trị 2> thì ‘Nhóm lệnh 2’ được thực thi….
Nếu biểu thức có giá trị không nằm trong các case thì ‘Nhóm lệnh
khác’ được thực thi.
 Vòng lặp:

 Vòng lặp for: thực thi một lệnh hoặc một nhóm lệnh trong một số
lần được xác định trước.
+ Cú pháp 1: for chỉ số = <giá trị đầu>:<gia số>:<giá trị đích>
Nhóm lệnh

end
Chỉ số = giá trị đầu, nếu chỉ số âm thì không thực hiện vòng lặp.
Nếu chỉ số < giá trị đích thì thực hiện ‘Nhóm lệnh’.
Tăng chỉ số lên một giá trị = gia số
(mặc định là 1). So sánh với
giá trị đích nếu chưa bằng thì thực hiện ‘Nhóm lệnh’. Ngược lại,
kết thúc vòng lặp. Quá trình này lặp lại cho đến khi chỉ số = giá trị
đích.
+ Cú pháp 2: for chỉ số = <biểu thức>
Nhóm lệnh
end
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 18 /116
<Biểu thức> là một ma trận (một vec-tơ hay một đại lượng vô
hướng), ‘Nhóm lệnh’ được thực thi với số lần bằng số cột của ma
trận biểu thức. Trong mỗi bước lặp chỉ số = giá trị của một phần tử
của ma trận.
Nếu biểu thức là ma trận rỗng thì vòng lặp không được thực thi.
 Vòng lặp while: thực hiện m
ột lệnh hoặc một nhóm lệnh lặp đi lặp
lại nhiều lần khi biểu thức là đúng ( bằng 1).
Cú pháp: while <biểu thức>
Nhóm lệnh
end
Nếu <biểu thức> đúng thì thực hiện ‘Nhóm lệnh’. Lặp lại cho
đến khi <biểu thức> sai thì kết thúc vòng lặp.
Nếu biểu thức luôn luôn đúng thì vòng lặp sẽ lặp mãi mãi.
Trong trường hợp này ta dùng Ctrl+C để thoát khỏi vòng lặp.
 Lệnh break: k

ết thúc việc thực thi vòng lặp for hoặc while. Khi
gặp lệnh break thì chương trình sẽ thoát khỏi vòng lặp và tiếp tục
thực thi các lệnh ở bên ngoài vòng lặp. Trong vòng lặp lồng nhau,
break chỉ thoát khỏi vòng lặp ở trong cùng.
 Lệnh continue: chuyển đến lần lặp kế tiếp của còng lặp for hoặc
while. Tại vị trí lệnh continue xuất hiện, nó bỏ qua tất cả các lệnh
phía sau nó trong thân vòng lặp.
1.2.4.4 Lập trình bằ
ng M-file
Khi viết một chương trình trong Matlab và lưu lại thành file, thì file đó
được gọi là M-file (với phần mở rộng là .m). Có hai loại M-file là script và
function.
 Script file

Script là loại đơn giản nhất của M-file bởi vì chúng không có đối số
nhập và xuất. Nó được dùng cho các chuỗi tự động của các lệnh Matlab,
cũng như việc tính toán mà ta phải thực hiện lặp đi lặp lại từ dòng lệnh
(command line).
Có thể dùng các chương trình soạn thảo nói chung để tạo script file.
Nó được lưu dưới dạng các ký tự ASCII.

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 19 /116
Các điểm cần lưu ý: (Xem chi tiết trong [10], TLTK)
 Trong Matlab, các ký tự được viết sau ký hiệu “%” được xem là
chú thích (comment).
 Nếu không muốn hiển thị các kết quả ra màn hình sau khi câu
lệnh được thực thi, ta thêm dấu “;” vào cuối mỗi dòng lệnh.
 Không cần phải khai báo các biến sử dụng trong chương trình.

Matlab tự động nhận biết các biến và giá trị của chung khi ta
đưa vào chương trình.
 Để chạy script file ta chỉ cần gõ tên file (không cần ph
ần mở
rộng) và nhấn phím  (Enter). Khi thực thi nội dung file không
được hiển thị lên màn hình.
Một số lệnh cơ bản dùng trong script file:
Lệnh Ý nghĩa
disp(…) Hiển thị giá trị của biến hoặc hiển thị một chuỗi (nằm
trong cặp nháy đơn),…
input(‘text’) Hiển thị chuỗi ký tự và dấu nhắc chờ nhận một giá trị từ
bàn phím.
keyboard Trao điều khiển tạm thời cho bàn phím.
echo Điều khiển cửa sổ lệnh lặp lại các lệnh của script-file
trong khi thực thi. Được dùng để debug hoặc hiển thị các
lệnh trong M-file khi chúng được thực thi.
type(‘filename’) Hiển thị nội dung của file có tên nằm trong cặp nháy
đơn. Nội dung được hiển thị trong cửa sổ lệnh của
Matlab.
what Cho biết các file M-file và MAT-file có trong vùng làm
việc hiện hành hay không.
mfilename Trả về tên của M-file đang chạy.
pause Dừng lại đến khi người dùng nhấn phím bất kỳ.
pause(n) Dừng lại n giây.
waitforbuttonpress Dừng lại cho đến khi người dùng nhấn chuột hoặc phím.
Bảng 1. 10: Các lệnh cơ bản dùng trong script file

 Hàm (function) và tạo hàm trong Matlab

Function là một chương trình thủ tục (routine), được hiện thực trong

M-file, nhận đối số nhập vào (input) và trả về các đối số xuất (output). Nó
thao tác trên các biến ở bên trong không gian làm việc (workspace) riêng
của mình. Không gian làm việc này riêng biệt với không gian mà ta truy
cập tại dấu nhắc lệnh của Matlab.
Các hàm này cũng được lưu trong M-file và được dùng như các hàm
mà Matlab cung cấp sẵn. M-file có thể chứa nhiều hơn một hàm
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 20 /116
(function), những hàm được thêm vào gọi là hàm con (subfunction). Các
hàm này chỉ nhìn thấy hàm chính hoặc các hàm con khác trong cùng một
file.
Các quy tắc viết hàm trong Matlab: (Xem chi tiết trong [5], TLTK)
 Hàm phải được bắt đầu bằng từ khóa “function”. Tiếp theo là các
tham số đầu ra (được bao trong cặp ngoặc vuông và cách nhau
bởi dấu phẩy), dấu bằng, tên hàm, tham số đầu vào (nằm trong
cặp ngoặc đơn và cách nhau bằng dấu phẩy).
 Nên viết chú thích cho hàm ở các dòng đầu tiên. Khi gõ lệnh help
với tên hàm, thì các chú thích này sẽ
được hiển thị.
 Các giá trị trả về của hàm được lưu trong tham số (ma trận) đầu
ra. Vì vậy, phải chắc chắn rằng trong hàm có chứa câu lệnh xác
định giá trị của tham số đầu ra.
 Các biến (ma trận) cùng tên có thể được sử dụng bởi hàm và
chương trình cần đến nó. Vì các hàm và chương trình được thực
hiện tách biệt nhau. Các giá trị tính toán trong hàm, tham số đầu
ra không chịu tác động của ch
ương trình.
 Các biến đặc biệt nargin và nargout dùng để xác định số tham số
đầu vào và ra được sử dụng trong hàm. Các tham số này chỉ là

biến cục bộ.
Ví dụ: function [tsr1, tsr2,…,tsrn] = tên_hàm(tsv1, tsv2,…,tsvn)
% ghi chú 1…
% ghi chú n
<Nhóm lệnh>
1.2.5 Tạo giao diện người sử dụng đồ họa (Graphic User Interface – GUI)
1.2.5.1 Tạo firgure
Trong MatLab, GUI là figure. Trước khi thêm các thành phần vào figure,
cần tạo một figure xác định. f = figure, f là handle của figure.
Chú ý
: Trước khi tạo các thành phần mà không có figure thì MatLab có
thể tạo figure tự động nhưng ta không biết handle của figure.
Sau đây là các thuộc tính của figure:
 MenuBar: hiển thị bảng chọn của Menu bar.
- Giá trị: none,figure(mặc định).
 Name: Tựa đề hiển thị trong cửa sổ figure. Nếu NumberTitle là on,
chuỗi này được thêm vào số figure.
- Giá trị: string
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 21 /116
 NumberTitle: on( mặc định ), off.
 Position: kích thước của figure GUI và vị trí của nó cân đối với góc
dưới bên trái màn hình.
- [ left, bottom, width, height ]
 Resize: Xác định khả năng người dùng có thể thay đổi kích thước
figure bằng chuột.
- Giá trị: on( mặc định ), off.
 Toolbar: Hiển thị hoặc ẩn thanh công cụ mặc định.
- none: không hiển thị thanh công cụ.

- auto: hiển thị thanh công cụ nhưng nó bị bỏ qua nế
u thanh công cụ
khác thêm vào.
- figure( mặc định ): hiển thị thanh công cụ.
 Units: đơn vị đo lường.
- Giá trị: centimeters, characters, inches, normalized, points,
pixels( mặc định ).
 Visible: Hiển thị figure trên màn hình.
- Giá trị: on( mặc định ), off.
1.2.5.2 Những thành phần cơ bản
 Thành phần ActiveX: Chỉ có giá trị trên Microsoft Windows
- function: actxcontrol
 Axes: cho phép hiển thị hình ảnh
- function: axes
 Button Group: giống như panel nh
ưng dùng để quản lý các radio
button và toggle button.
- function: uibutttongroup
 CheckBox: dùng để chọn lựa một số yêu cầu.
- function : uicontrol
 Edit Text: cho phép nhập hoặc thay đổi chủ đề.
- function: uicontrol
 List Box: hiển thị và cho phép chọn một hoặc nhiều item.
- function: uicontrol
 Panel: sắp xếp các thành phần vào các nhóm. Các thành phần trên
panel di chuyển khi di chuyển panel và vị trí của chúng tương ứng với
panel.
- function: uipanel

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150


Trang 22 /116
 Pop-Up Menu: hiển thị danh sách chọn lựa khi người dùng click vào
mũi tên.
- function: uicontrol
 Push Button: tạo ra một tác động khi nó được click.
- function: uicontrol
 Radio Button: giống check box nhưng radio button chỉ cho phép chọn
duy nhất một yêu cầu trong nhóm yêu cầu. radio button trước sẽ
không được chọn khi có một radio button khác được chọn.
- function: uicontrol
 Slider:
- function: uicontrol
 Static Text: dùng để gán nhãn cho các control khác, cung cấp hướng
dẫn cho người dùng.
-
function: uicontrol
 Toggle Button: tạo ra tác động và nhận biết chúng bật hay tắt. Khi
click vào, nó bị nhấn xuống. Chỉ khi nào ta click một lần nữa nó mới
về trạng thái ban đầu. Nó giống như radiobutton.
- function: uicontrol
1.2.5.3 Thêm điều khiển giao diện người dùng (User Interface Controls)
uich = uicontrol( parent, ‘PropertyName’, ‘PropertyValue’, )
Nếu không xác định parent thì figure hiện tại được xem parent
 Các thuộc tính được dùng phổ biến
- Max: giá trị lớn nhất, phụ thuộc vào thuộc tính Style. Mặc định là 1.
- Min: giá trị lớn nhất, phụ thuộc vào thuộc tính Style. Mặc định là 0.
- Position: kích thước và vị trí của thành phần tương ứng với parent.
- String: Tạo tựa đề
- Style: pushbutton( mặc định ), togglebutton, radiobutton, checkbox,

edit, text, slider, listbox, popupmenu.
- Units: đơ
n vị đo lường. Gồm: pixels( mặc định ), normalized,
inches, centimeters, points, characters.
- Value: phụ thuộc vào thuộc tính Style.
 Check Box:
- Style = ‘checkbox’
- value = 1: chọn, value = 0 : không chọn
 Edit Text:
- Style = ‘edit’
- Max-Min > 1: nhập nhiều hàng
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 23 /116
 List Box:
- Style = ‘listbox’
- value = scalar :số thứ tự của item được chọn.
- Max – Min > 1, value = [ ] :chọn nhiều item.
 Pop-up Menu:
- Style = ‘popupmenu’
- value = số thứ tự của item được chọn.
 Push Button:
- Style = ‘pushbutton’
- Thêm hình ảnh vào push button: gán cho thuộc tính CData của
button một mảng n-m-3 để định nghĩa hình ảnh .
 Radio Button:
- Style = ’radiobutton’
- value = 1: chọn, value = 0: không chọn.
 Slider:
-

Style = ‘slider’
- Max – Min: xác định khoảng giá trị của slider.
- value: min <= value <= max.
- SliderStep = [min_step, max_step].
 min_step: giá trị nhỏ nhất khi thay đổi.
 max_step: giá trị lớn nhất khi thay đổi.
 Static Text:
- Style = ‘text’
 Toogle Button:
- Style = ‘tooglebutton’
- value = 1: chọn, value = 0: không chọn
1.2.5.4 Thêm Panel và Button Groups
 Các thuộc tính được dùng phổ biến
- Parent: Xác định figure, panel, group button là thành phần cha.
- Position: Kích thước và vị trí của thành phần trong parent của nó.
- Title: Dùng để gán nhãn.
- TitlePosition: vị trí của title.
 Các giá trị: lefttop( mặc định ), centertop, righttop, leftbottom,
centerbottom, rightbottom.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150

Trang 24 /116
- Units: Đơn vị đo lường.
 Các giá trị: pixels, normalized( mặc định ), inches,
centimeters, points, characters.
 Panel:
- ph = uipanel(‘PropertyName’, ‘PropertyValue’,….)
 Button Groups:
- bgh = uibuttongroup( ‘PropertyName’, ‘PropertyValue’,….)
1.2.5.5 Thêm Axes

ah = axes(‘PropertyName’, PropertyValue,….)
 Thuộc tính phổ biến:
- HandleVisibility: Xác định handle của nó có nằm trong danh sách
của parent của nó
- Parent: Xác định figure, panel, group button là thành phần cha.
- Position: Kích thước và vị trí của thành phần trong parent của nó.
- Units: Đơn vị đo lường.
 Các giá trị: pixels, normalized( m
ặc định ), inches,
centimeters, points, characters.
1.2.5.6 Thêm ActiveX Controls
h = actxcontrol('progid', position, fig_handle) → tạo trình điều khiển tại
vị trí xác định trong cửa sổ figure hiện tại. Cửa sổ này được nhận biết bởi
fig_handle( mặc định là gcf )
1.2.5.7 Các thành phần Aligning
align( HandleList, ‘HorizontalAlignment’, ‘VerticalAlignment’ )
 HandleList: tất cả handle phải có cùng parent
 HorizontalAlignment: None, Left, Center, Right, Distribute, Fixed.
 VerticalAlignment: None, Top, Middle, Bottom, Distribute, Fixed.
1.2.5.8 Thiết lập Tab Oder
 Tab Oder mặc định: là thứ tự khi tạo các thành phần.
Ta không thể tab
đến axes và static text.
 Thay đổi thứ tự TabOder
- uistack(h): thay đổi thứ tự của đối tượng.
- uistack(h, stackopt )
 stackopt = up: di chuyển h lên một vị trí
 stackopt = down: di chuyển h xuống một vị trí
 stackopt = top: di chuyển h đến đỉnh của thứ tự hiện tại.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150


Trang 25 /116
 stackopt = bottom: di chuyển h xuống vị trí dưới cùng của thứ
tự hiện tại.
- uistack( h, ‘up’, n ): di chuyển h lên n bậc.
- uistack(h, ‘down’, n): di chuyển h xuống n bậc.
1.2.5.9 Tạo Menus
 mh = uimenu(parent,'PropertyName',PropertyValue, )
 set(f, ‘MenuBar’, ’figure’): hiển thị menubar. Đây là thuộc tính mặc
định.
 set( f, ‘MenuBar’, ‘none’): không hiển thị menubar.
 Thuộc tính phổ biến:
- Accelerator: Cho phép người dùng chọn menu item bằng cách
Ctrl+Accelerator.
 Giá trị : character
- Checked:
 on: Chọn
 off( mặc định ): Không chọn.
- Enable: cho phép sử dụng
 on( mặc định ): cho phép sử dụng.
 off: item bị mờ, không dùng được.
- HandleVisibility: Xác định handle của nó có nằm trong danh sách
của parent của nó
 on( mặc định):
 off: để ngăn chặn những hoạt động không mong đợi.
- Label:
 String: dùng hiển thị nhãn cho menu
- Position: vị trí menu item trong menu.
- Separator: Đường chia.
 on: Hiển thị.

 off( mặc định ): không hiển thị


×