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 khố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 tố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
116 trang |
Chia sẻ: huyen82 | Lượt xem: 2964 | Lượt tải: 5
Tóm tắt tài liệu Nghiên cứu về Matlab và ứng dụng vào bài toán tài chính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 tốn thơng dụng trong tài chính và thiết kế hệ thống giải
một số bài tố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 tố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 tố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 tốn cơ bản trong tài chính bao gồm
- Bài tốn cơ bản trong hệ thống lãi đơn
- Bài tốn cơ bản trong hệ thống lãi kép
- Bài tốn về các khoản tiền thanh tốn theo chu kỳ
- Bài tốn tính chỉ số
- Bài tốn về dự đố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 tốn theo chu kỳ
- Các hàm về tác vụ phổ biến của đối tượng FTS1
- 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 tố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 tố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 tố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], TLTK2 )
Matlab (Matrix Laboratory) là phần mềm của tập đồ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 tốn kỹ
thuật. Matlab kết hợp việc tính tố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 tố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. Ngồ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ợ tốn học và tính tốn..
Phát triển thuật tố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 tố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 nxm, từ dịng lệnh (command line) của
Matlab ta nhập như sau:
>> A = [A11 A12… A1m; A21 A22… A2m;……; An1 An2… Anm];
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
Ngồ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 tố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 tồn các phần tử là 0
M = ones(n,m) Ma trận kích thước nxm với tồ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 tố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 tố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 Tố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 số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([xmin,xmax,ymin,ymax]) Đặ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 số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
Ngồ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 tố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 tố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 tố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 ngồ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 tố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 tố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ĩ hồn tồ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 tố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 tồ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 tồ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 …
(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 tồn cục:
clear global: xĩa bỏ các biến tồn cục.
isglobal(tên_biến): hàm trả về 1 nếu tên_biến là biến tồ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 thố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
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 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 tốn tử (operators):
- Matlab cung cấp các tốn tử dùng trong tính tốn số học như sau:
Tốn tử Mơ tả
+ Cộng
- Trừ
.* Nhân
./ Chia phải
.\ Chia trái
+ Số dương
- Số âm
: Tốn tử hai chấm
.^ Lũy thừa
.' Hố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: Tốn tử trong tính số học
- Tốn tử quan hệ:
Tố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: Tố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
- Tốn tử logic:
Tố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: Tố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
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
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
Nhĩm lệnh 1
elseif
Nhĩm lệnh 2
……
elseif
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 (vơ hướng hoặc chuỗi)
case
Nhĩm lệnh 1
case
Nhĩm lệnh 2
….
otherwise
Nhĩm lệnh khác
end
Nếu biểu thức cĩ thì ‘Nhĩm lệnh 1’ được thực thi.
Nếu biểu thức cĩ 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ố = ::
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ố =
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
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
Nhĩm lệnh
end
Nếu đúng thì thực hiện ‘Nhĩm lệnh’. Lặp lại cho
đến khi 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 để thố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ẽ thốt khỏi vịng lặp và tiếp tục
thực thi các lệnh ở bên ngồi vịng lặp. Trong vịng lặp lồng nhau,
break chỉ thố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 tố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 h._.iệ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 tố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
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ị
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 26 /116
1.2.5.10 Tạo Context Menu
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ĩ
on( mặc định )
off: ngăn chặn những hoạt động khơng mong đợi.
- Parent: Parent của Context Menu.
- Position[ 0 0]: Khoảng cách từ gĩc dưới bên trái của parent figure
tới gĩc trên bên trái của context menu. Thuộc tính này chỉ được
dùng khi Visible = on.
- Visible:
on: Hiển thị.
off( mặc định ): Khơng hiển thị.
Tạo Context Menu
- handle = uicontextmenu(‘PropertyName’, PropertyValue,…..)
Thêm Menu item vào Context Menu
- mh = uimenu(handle,'PropertyName',PropertyValue,...)
Giao tiếp với Context Menu : dùng thuộc tính UIContextMenu
- set( parent, ‘UIContextMenu’, handle )
1.2.5.11 Tạo Toolbars
∗ tbh = uitoolbar(h, ‘PropertyName’, PropertyValue,…..)
∗ pth = uipushtool(h, ‘PropertyName’, PropertyValue,…..)
∗ pth = uitoggletool(h, ‘PropertyName’, PropertyValue,…..)
Thuộc tính phổ biến
- CData : Định dạng màu RGB
Giá trị 3D trong khoảng 0.0 đến 1.0
- HandleVisibility : Xác định handle của nĩ nằm trong danh sách
handle của parent.
on( mặc định ):
off : Ngăn chặn những hành động mong muốn.
- Separator : Vẽ đường chia.
Giá tri: on, off.
- State : Tình trạng của dụng cụ.
on: Được chọn, bị nhấn xuống.
off: Khơng chọn
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 27 /116
- TooltipString : dùng để giải thích chức năng của cơng cụ.
Hiển thị Toolbar chuẩn:
- set( fh, ‘Toolbar’, ‘figure’ ): hiển thị thanh cơng cụ chuẩn
- set( fh, ‘Toolbar’, ‘none’ ): khơng hiển thị thanh cơng cụ chuẩn
- set( fh, ‘Toolbar’, ‘auto’ ): Đây là thuộc tính mặc định. Hiển thị
thanh cơng cụ chuẩn nhưng khi tạo mới thanh cơng cụ thì thanh
cơng cụ chuẩn sẽ bị xĩa.
1.2.5.12 Hàm Callback
Các hàm dùng để lập trình các hành vi của các thành phần trong GUI.
Khai báo biến cho các đối số nhập và xuất
- mInputArgs =varagin: Khai báo đối số nhập
- mOutputArgs = {}: Khai báo đối số được trả về
Hàm Callback
- function objectTag_Callback(hObject, eventdata, handles)
hObject: đối tượng gọi hàm callback
eventdata: trống- để sử dụng trong tương lai.
handles: Một cấu trúc chứa các handle của tất cả các thành phần
trong GUI . Nĩ cũng cĩ thể được dùng để chuyển dữ liệu đến các
hàm callback khác hoặc đến dịng lệnh (command line).
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 28 /116
Chương 2
GIỚI THIỆU MỘT SỐ BÀI TỐN TRONG TÀI CHÍNH
2.1 Mở đầu:
Trong đời sống hằng ngày, chúng ta vẫn bắt gặp các hoạt động mua bán,
tài chính diễn ra thường xuyên. Qua đĩ cho thấy việc tính tốn tài chính rất
gần gũi (tùy theo mức độ cơng việc). Đối với các sinh viên kinh tế, bộ mơn
‘Tốn Tài Chính’ rất quan trọng và khơng thể thiếu. Vì nĩ gắn liền với các
mơn học: nghiệp vụ ngân hàng, thị trường đầu tư, thị trường thương mại,
thị trường tài chính, quản lý tài chính.v.v…Nền tảng của các cơng thức
thuộc lĩnh vực tài chính là gì? Nĩ dựa trên tốn học và hệ thống lãi suất.
Và trong thực tế, nĩ cũng là cơng cụ gĩp phần khơng nhỏ cho thành cơng
của các nhà kinh doanh. Vậy tại sao chúng ta khơng dành đơi chút thời
gian để tìm hiểu các vấn đề cơ bản của bộ mơn này?
2.2 Các khái niệm tài chính cơ bản: (Xem chi tiết trong [6], TLTK)
9 Tiền lãi: Là giá trị chênh lệch giữa vốn đầu tư ban đầu và giá trị thu
được sau n chu kỳ đầu tư (cho vay).
9 Lãi đơn: Là tiền lãi phải trả (cho trường hợp vay nợ) hoặc kiếm được
(trong trường hợp tiền được đem đi đầu tư), chỉ tính trên số vốn gốc
ban đầu.
9 Lãi kép: Là tiền lãi khơng chỉ tính trên vốn gốc mà cịn tính trên tiền lãi
sinh ra của chu kỳ sau nếu khơng rút vốn ra trong suốt n chu kỳ.
9 Lãi suất: Tượng trưng cho tiền lãi của một số vốn được ấn định trong
một đoạn thời gian.
9 Hiện giá: Giá trị hiện tại của số lượng tiền tệ dựa trên một mốc thời gian
cụ thể.
9 Giá trị tương lai: Là giá trị của một số lượng tiền tệ tăng trưởng nếu nĩ
được đem đầu tư với một lãi suất nhất định trong một khoảng thời gian
nào đĩ.
9 Chiết khấu: Là hình thức mua bán các thương phiếu chưa đến kỳ đáo
hạn và người ta phải tính lại giá trị của thương phiếu.
9 Các khoản tiền thanh tốn theo chu kỳ: Là những khoản tiền sẽ được
nhận hoặc chi trả cách đều nhau theo thời gian.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 29 /116
2.3 Hệ thống lãi đơn (Xem chi tiết trong [6], TLTK)
2.3.1 Các đối số
In : Tiền lãi của vốn đầu tư sau n chu kỳ
i : Lãi suất của 1 chu kỳ (Lãi suất 1 ngày, 1 tháng, 1 quý, 1 năm)
n : Số chu kỳ đầu tư (số ngày, số tháng, số quý, số năm)
C0 : Vốn đầu tư ban đầu
Cn : Giá trị của vốn đầu tư sau n chu kỳ
A : Mệnh giá thương phiếu
a : Hiện giá sau khi chiết khấu
2.3.2 Tiền lãi
Cơng thức:
Bài tốn:
Cho i = 24% năm. Tính tiền lãi của vốn đầu tư 250.000.000 đ.
1. trong 60 ngày
2. trong 7 tháng
3. trong 2 năm
Giải:
Ta cĩ: Lãi suất của 1 ngày %.% 070
360
24 == ngày
Lãi suất của 1 tháng %% 2
12
24 == tháng
Do đĩ:
10.000.000600.07%0250.000.00I60ngày =××= đ
35.000.00072%0250.000.00I7tháng =××= đ
0đ120.000.00224%0250.000.00I2năn =××=
2.3.3 Lãi suất
Cơng thức:
Bài tốn:
Một hàng hĩa bán trả ngay là 100 triệu đồng được đem bán chịu.
Sau 30 này, số tiền thu được là 102 triệu đồng. Tính lãi suất /ngày.
Giải
Lãi suất bán chịu:
%065.0
300102.000.00
0100.000.000102.000.00i =×
−=
niCI 0n ×=
na
aAi ×
−=
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 30 /116
2.3.4 Lãi suất chiết khấu
Cơng thức:
Bài tốn:
Một thương phiếu cĩ mệnh giá 128000 đồng đáo hạn ngày 22/12
đem đi chiết khấu tại ngày 10/11 cho một số tiền 124775 đồng. Tính
lãi suất chiết khấu.
Giải
Số ngày chiết khấu từ 10/11 đến 22/12 là 42 ngày
Lãi suất chiết khấu cho thương phiếu:
%06.0
42280001
124775128000i =×
−=
2.3.5 Hiện giá sau chiết khấu
Cơng thức:
Bài tốn:
Một thương gia thương lượng một hối phiếu 450.000 đồng hạn kỳ
từ ngày thương lượng đến ngày đáo hạn của hối phiếu là 55 ngày với
lãi suất chiết khấu ngân hàng áp dụng 20% năm. Tính tiền ngân hàng
giữ lại và tiền thương gia nhận được.[6]
Giải:
Tiền chiết khấu ngân hàng giữ lại là A.n.i
13.750
360
20%55450.000E =××= đồng
Tiền thương gia nhận là a = A – E
a = 450.000 – 13.750 = 436.250 đồng
2.3.6 Giá trị hiện tại
Cơng thức:
Bài tốn:
Cho 3 hối phiếu
B1 = 500.000; P1 = 24 ngày
B2 = 850.000; P2 = 36 ngày
B3 = 1.200.000; P3 = 60 ngày
nA
aAi ×
−=
∑∑∑
===
−= n
1k
kk
n
1k
k
n
1k
k inAAa
n)i(1CC n0 ×−=
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 31 /116
Thay 3 hối phiếu trên bằng hối phiếu A duy nhất cĩ n = 42 ngày với
i = 20% năm. Xác định C0.
Giải:
Ta cĩ phương trình tương đương:
)
360
20%6011.200.000(
)
360
20%361850.000()
360
20%241500.000()
360
20%421(C0
×−+
×−+×−=×−
C0 = 2.545.734đ
2.3.7 Giá trị tương lai
Cơng thức:
Bài tốn
Trị giá tại một thời gian bất kỳ của một số vốn là 150.000đ với lãi
suất i = 18% năm. Tính trị giá của vốn này sau thời điểm bất kỳ này là
120 ngày.
Giải:
Trị giá của vốn sau thời điểm bất kỳ là 120 ngày
159.000)
360
18%1201150.000(Cn =×+= đ
2.4 Hệ thống lãi kép (Xem chi tiết trong [6], TLTK)
2.4.1 Các đối số
In: Tiền lãi của vốn đầu tư sau n chu kỳ
i: Lãi suất của 1 chu kỳ (Lãi suất 1 ngày, 1 tháng, 1 quý, 1 năm)
n: Số chu kỳ đầu tư (số ngày, số tháng, số quý, số năm)
C0: Vốn đầu tư ban đầu
Cn: Giá trị của vốn đầu tư sau n chu kỳ
2.4.2 Tiền lãi
Cơng thức
Bài tốn
Tính tiền lãi thu được của số vốn 250 triệu đồng đầu tư theo lãi
kép trong 5 tháng với lãi suất 3% tháng.
Giải:
Áp dụng cơng thức trên, ta tính được tiền lãi sau khi đầu tư
In = C0[( 1 + i )n - 1]
In = 250[ ( 1 + 0.03 )5 - 1]
In = 39.818.518,6
Cn = C0( 1+i.n )
In = C0[(1+i)n - 1]
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 32 /116
2.4.3 Lãi xuất
Cơng thức:
Bài tốn:
Theo một lãi suất nào thì một số vốn sẽ tăng gấp 5 lần sau 8 năm.
Tiền lãi nhập vốn mỗi năm.
Giải:
Lãi suất cần tìm:
22.28%15i
1
C
5Ci
)i1(C5C
8
8
0
0
8
00
=−=
−=
+=
2.4.4 Chiết khấu
Cơng thức:
En: Tiền chiết khấu
Cn: Mệnh giá của của vốn tại ngày đáo hạn
Bài tốn:
Cho biết tiền chiết khấu của một hối phiếu 250tr đồng đáo hạn
sau 3 năm, nếu lãi suất chiết khấu 17% / năm.
Giải:
Tiền chiết khấu cho hối phiếu:
En = Cn[ 1- ( 1 + i ) –n ]
E3 = 250.000.000[ 1- ( 1 + 0.17 )-3 ] = 93.907.361
2.4.5 Giá trị hiện tại
Cơng thức:
Bài tốn
Một doanh nghiệp muốn cĩ một số vốn 15.000 triệu đồng vào
ngày 1/1/93. Cho biết số tiền mà ơng ta bỏ ra đầu tư theo lãi kép vào
ngày 1/1/88 biết i = 25% năm.
Giải:
Từ ngày 1/1/88 đến 1/1/93 là 5 năm do đĩ số tiền phải bỏ ra đầu tư là
C0 = Cn( 1 + i )-n
C0 = 15.000( 1 + 0.25 )-5
C0 = 4.915,2trđ
1
C
Ci n
0
n −=
En = Cn[ 1 – ( 1+i)-n]
C0 = Cn( 1+ i )-n
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 33 /116
2.4.6 Giá trị tương lai
Cơng thức:
Bài tốn:
Tính giá trị của 120 triệu đồng đầu tư theo lãi kép theo lãi suất
4% kỳ 3 tháng. Thời gian đầu tư là 2 năm.
Giải:
Chu kỳ là 3 tháng nên thời gian đầu tư 2 năm cĩ 8 chu kỳ
Cn = C0( 1 + i )n
C8 = 120( 1 + 0.04 )8
C8 = 164,228 trđ
2.5 Các khoản thanh tốn theo chu kỳ
2.5.1 Các đối số
a: Khoản tiền thanh tốn vào cuối kỳ (đầu kỳ)
i: Lãi suất một chu kỳ
n: Số chu kỳ thanh tốn
Vn: Tổng giá trị tương lai của các khoản thanh tốn cuối kỳ tại n
V0: Tổng giá trị hiện tại của các khoản thanh tốn cuối kỳ tại 0
V’n: Tổng giá trị tương lai của các khoản thanh tốn đầu kỳ tại n
V’0: Tổng giá trị hiện tại của các khoản thanh tốn đầu kỳ tại 0
2.5.2 Tổng giá trị tương lai của các khoản thanh tốn cuối kỳ
Cơng thức:
Bài tốn:
Tính tổng giá trị tương lai của 10 khoản thanh tốn. Nếu mỗi
khoản thanh tốn là 250.000đ đĩng vào cuối mỗi quý lãi suất là 6.25%
quý.
Giải
3.334,143
0.0625
10.0625)(1250.000V
10
10 =−+×= đ
Cn = C0( 1+i )n
i
1i)(1aV
n
n
−+×=
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 34 /116
2.5.3 Tổng giá trị hiện tại của các khoản thanh tốn cuối kỳ
Cơng thức:
Bài tốn:
Cho biết số tiền cĩ thể vay được vào đầu năm dưới sự đảm bảo
của 12 kỳ trả gĩp vào cuối mỗi tháng số tiền 20.000đ, lãi suất 2.8%
tháng.
Giải
201.478
0.028
0.028)(1-120.000V
-12
0 =+×= đ
2.5.4 Tổng giá trị tương lai của các khoản thanh tốn đầu kỳ
Cơng thức:
Bài tốn:
Một người cam kết đĩng vào quỹ tiết kiệm ngày 1/1 mỗi năm
một số tiền khơng đổi là 200.000đ từ năm 1990. Cho biết số vốn được
thành lập vào ngày 31/12/99 nếu lãi suất được tính là 22% năm trong
suốt thời gian này.
Giải
409.992.6)22.01(
0.22
10.22)(1200.000V'
10
10 =+−+×= đ
2.5.5 Tổng giá trị hiện tại của các khoản thanh tốn đầu kỳ
Cơng thức:
Bài tốn:
Cho biết số tiền cĩ thể vay được vào đầu năm dưới sự đảm bảo
của 10 kỳ trả gĩp vào đầu mỗi tháng số tiền 50.000đ, lãi suất 1.5%
tháng.
Giải
468.030
0.015
0.015)(1-10.015)(1000.50V'
-10
0 =++= đ
i
i)(1-1aV
-n
0
+×=
i
1i)(1i)a(1V'
n
n
−++=
i
i)(1-1i)(1aV'
-n
0
++=
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 35 /116
2.5.6 Định giá các khoản tiền thanh tốn cuối kỳ
Cơng thức:
Bài tốn
Trong tài khoản tiết kiệm ban đầu cĩ 5triệu với lãi suất 0.01%
mỗi tháng. Cho biết số tiền được rút ra trong mỗi tháng trong 2 năm.
Giải
( )( ) 367.235101.01 0.01)(101.0000.000.5a 24
24
=−+
+×= đ
2.5.7 Định giá các khoản tiền thanh tốn đầu kỳ
Cơng thức:
Bài tốn
Tổng giá trị hiện tại của các khoản thanh tốn đầu kỳ trong ba
năm là 900.000đ. Tính số tiền phải thanh tốn hàng tháng với lãi suất
12% / năm.
Giải
( )( ) 597.2910.011 0.01)(10.01900.000a 36
35
=−+
+×= đ
2.6 Chỉ số (Index number): (Xem chi tiết trong [7], TLTK)
2.6.1 Định nghĩa
Một Index Number đo lường mức độ biến đổi theo chuỗi thời gian
trong một giai đoạn như một phần của chuỗi thời gian trong một giai
đoạn cơ bản.
2.6.2 Cơng thức
Chỉ số LASPEYRES
Chỉ số Laspeyres đo lường sự thay đổi giá cả đối với mơ hình
mua bán cố định.Chỉ số Laspeyres cho n chu kỳ thể hiện bằng cơng
thức sau:
∑
∑×=
0i0i
0ini
0:n qP
qP
100L
( )( )1i1 i)(1iVa n
n
0 −+
+×=
( )( )1i1 i)(1iV'a n
-1n
0 −+
+×=
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 36 /116
Chỉ số PAASCHE
Chỉ số Paasche đo lường sự thay đổi giá cả đối với đối tượng mua
bán cố định trong trường hợp sự thay đổi về số lượng từ một số năm
cơ bản. Chỉ số Paasche cho n chu kỳ được thể hiện bằng cơng thức
sau:
∑
∑×=
ni0i
nini
0:n qP
qP
100P
Chỉ số INDEX
Chỉ số đo lường sự thay đổi trung bình trong giá cả đối với mơ
hình mua bán cố định. Chỉ số cho n chu kỳ được thể hiện bởi cơng
thức sau:
P*LI=
2.6.3 Bài tốn
Giá cả và khối lượng của cá tuyết và cá bơn ở Anh
1990 1995
Khối lượng Giá Khối lượng Giá
Q0i P0i Q1i P1i
Cá tuyết 102.10 562.48 87.90 776.06
Cá bơn 1.80 2677.78 2.70 3345.56
136.9616
1.82677102.1562.48
1.83345.56102.1776.06100L 0:1 =×+×
×+××=
136.3084
2.7267787.9562.48
2.73345.5687.9776.06100P 0:1 =×+×
×+××=
136.6348I 0:1 =
2.7 Dự báo theo chuỗi thời gian (Time Series Forecasting)
(Xem chi tiết trong [7], TLTK)
2.7.1 Định nghĩa
Thứ tự các giá trị được lưu trữ theo thời gian cho một sự biến đổi trong
một chuỗi thời gian.
2.7.2 Dự báo theo dịch chuyển trung bình (Moving Average)
Phương pháp:
Lấy giá trị trung bình của các thời điểm trước làm giá trị dự báo
cho thời điểm hiện tại.
Cơng thức:
F(t) = ∑n
1
A(t) / n
f(t +τ ) = F(t)
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 37 /116
Bài tốn:
Thời gian Lượng bán thực tế
Độ dịch chuyển trung bình
trong ba tháng
Hai năm trước
Tháng 1 21
Tháng 2 20
Tháng 3 19
Tháng 4 18 ( 21 + 20 + 19 )/3 = 20
Tháng 5 14 ( 20 + 19 + 18 )/3 = 19
Tháng 6 15 ( 19 + 18 + 14 )/3 = 17
Tháng 7 22 ( 18 + 14 + 15 )/3 = 15.67
Tháng 8 28 ( 14 + 15 + 22 )/3 = 17
Tháng 9 25 ( 15 + 22 + 28 )/3 = 21.67
Tháng 10 25 ( 22 + 28 + 25 )/3 = 25
Tháng 11 25 ( 28 + 25 + 25 )/3 = 26
Tháng 12 20 ( 25 + 25 + 25 )/3 = 25
Một năm trước
Tháng 1 25 (25 + 25 + 20 )/ 3 = 23.33
Tháng 2 25 ( 25 + 20 + 25 )/3 = 23.33
Tháng 3 24 ( 20 + 25 + 25 )/3 = 23.33
Tháng 4 28 ( 25 + 25 + 24 )/3 = 24.67
Tháng 5 36 ( 25 + 24 + 28 )/3 = 25.67
Tháng 6 32 ( 24 + 28 + 36 )/3 = 29.33
Tháng 7 25 ( 28 + 36 + 32 )/3 = 32
Tháng 8 23 ( 36 + 32 + 25 )/3 = 31
Tháng 9 22 ( 32 + 25 + 23 )/3 = 26.67
Tháng 10 23 ( 25 + 23 + 22)/3 = 23.33
Tháng 11 22 ( 23 + 22 + 23 )/3 = 22.67
Tháng 12 27 ( 22 + 23 + 22 )/3 = 22.33
Bảng 2. 1: Bài tốn về dự báo theo dịch chuyển trung bình
2.7.3 Dự báo theo dịch chuyển trung bình cĩ trọng số (Weighted
Moving Average)
Phương pháp:
Lấy giá trị trung bình cĩ trọng số các thời điểm trước làm giá trị
dự báo cho thời điểm hiện tại.
Cơng thức:
Weigh for periods t: Trọng số cho thời gian t
Demand in period t: nhu cầu trong thời gian t
Weighs
t)periodint)(Demandperiodsfor(WeighW.M.A ∑
∑=
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 38 /116
Bài tốn:
Trọng số Thời gian
3 1 tháng trước
2 2 tháng trước
1 3 tháng trước
Kết quả dự đốn theo phương pháp này thể hiện trong bảng sau:
Thời gian
Lượng bán
thực tế
Độ dịch chuyển trung bình cĩ
trọng số trong ba tháng
Hai năm trước
Tháng 1 21
Tháng 2 20
Tháng 3 19
Tháng 4 18 ( 3x19 + 2x20 + 21 )/6 = 19.67
Tháng 5 14 ( 3x18 + 2x19 + 20 )/6 = 18.67
Tháng 6 15 ( 3x14 + 2x18 + 19 )/6 = 16.17
Tháng 7 22 ( 3x15 + 2x14 + 18 )/6 = 15.17
Tháng 8 28 ( 3x22 + 2x15 + 14 )/6 = 18.33
Tháng 9 25 ( 3x28 + 2x22 + 15 )/6 = 28.83
Tháng 10 25 ( 3x25 + 2x28 + 22 )/6 = 25.50
Tháng 11 25 ( 3x25 + 2x25 + 28 )/6 = 25.50
Tháng 12 20 ( 3x25 + 2x25 + 25 )/6 = 25.
Một năm trước
Tháng 1 25
( 3x20 + 2x25 + 25 )/6 = 22.50
Tháng 2 25 ( 3x25 + 2x20 + 25 )/6 = 23.33
Tháng 3 24 ( 3x25 + 2x25 + 20 )/6 = 24.17
Tháng 4 28 ( 3x24 + 2x25 + 25 )/6 = 24.50
Tháng 5 36 ( 3x28 + 2x24 + 25 )/6 = 26.17
Tháng 6 32 ( 3x36 + 2x28 + 24 )/6 = 31.33
Tháng 7 25 ( 3x32 + 2x36 + 28 )/6 = 32.67
Tháng 8 23 ( 3x25 + 2x32 + 36 )/6 = 29.17
Tháng 9 22 ( 3x23 + 2x25 + 32 )/6 = 25.17
Tháng 10 23 ( 3x22 + 2x23 + 25 )/6 = 22.83
Tháng 11 22 ( 3x23 + 2x22 + 23 )/6 = 22.67
Tháng 12 27 ( 3x22 + 2x23 + 22 )/6 = 22.33
Bảng 2. 2: Kết quả dự đốn theo pp dịch chuyển trung bình cĩ trọng số
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 39 /116
2.7.4 Dự báo theo hàm trơn đơn (Single Exponential Smoothing)
Cơng thức:
a: Trọng số với 0<a<1
Bài tốn:
Thời gian Lượng bán thực tế Độ trung bình hàm trơn với số mũ a=0.5
Hai năm trước
Tháng 1 21
Tháng 2 20 21.00
Tháng 3 19 20.50
Tháng 4 18 19.75
Tháng 5 14 18.88
Tháng 6 15 16.44
Tháng 7 22 15.72
Tháng 8 28 18.86
Tháng 9 25 23.43
Tháng 10 25 24.21
Tháng 11 25 24.61
Tháng 12 20 24.80
Một năm trước
Tháng 1 25 22.40
Tháng 2 25 23.70
Tháng 3 24 24.35
Tháng 4 28 24.18
Tháng 5 36 26.09
Tháng 6 32 31.04
Tháng 7 25 31.52
Tháng 8 23 28.26
Tháng 9 22 25.63
Tháng 10 23 23.82
Tháng 11 22 23.41
Tháng 12 27 22.70
Bảng 2. 3: Bài tốn dự báo theo hàm đơn trơn
Dự đốn mới = dự báo thời gian trước + a( nhu cầu
thời gian trước – dự báo thời gian trước )
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 40 /116
Chương 3
CÁC HÀM VỀ TÀI CHÍNH TRONG MATLAB
3.1 Giới thiệu:
MatLab và hộp cơng cụ tài chính (Financial Toolbox – FT) cung cấp mơi
trường tính tốn được tích hợp hồn chỉnh cho việc nghiên cứu và phân tích tài
chính. Hộp cơng cụ cĩ mọi thứ cần thiết để thực hiện các phép tốn, phân tích
thống kê dữ liệu tài chính và hiển thị kết quả bằng hình ảnh đồ họa đặc trưng.
Trong lập trình bảng tính hay truyền thống, ta phải xử lý tất cả các chi tiết
như: khai báo, loại dữ liệu, kích thước,…Nhưng với Matlab, tất cả các việc đĩ
đều được xử lý tự động. Ta chỉ cần viết biểu thức theo cách mà ta nghĩ về vấn
đề. Khơng cần chuyển đổi cơng cụ, thay đổi file hoặc viết lại ứng dụng.
MatLab và hộp cơng cụ tài chính cung cấp các chức năng sau:
Tính tốn và phân tích giá cả, lợi nhuận và độ nhạy cho vốn đầu tư,
các chứng khốn và danh mục vốn đầu tư chứng khốn.
Định giá lợi tức cố định tích hợp theo Hội liên hiệp kinh doanh chứng
khốn (Securities Industry Association – SIA), lợi nhuận và phân tích
độ nhạy.
Phân tích và quản lý vốn đầu tư.
Dự kiến và đánh giá hàng rào chiến lược.
Nhận biết, ước tính và điều khiển rủi ro.
Phân tích và tính tốn chu kỳ tiền mặt, bao gồm tỉ lệ hồn trả và dịng
giảm giá.
Phân tích và dự đốn hoạt động kinh tế.
Quan sát và phân tích dữ liệu chuỗi thời gian tài chính.
Tạo các cơng cụ tài chính cĩ cấu trúc, bao gồm cơng cụ chuyển đổi
ngoại tệ.
Giảng dạy và hướng dẫn nghiên cứu học thuật.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 41 /116
3.2 Biểu diễn các tác vụ tài chính phổ biến:
3.2.1 Xử lý và chuyển đổi kiểu dữ liệu Date:
Hầu như tất cả các dữ liệu tài chính được xác định hay thu được từ một
chuỗi thời gian, nên các hàm tài chính phải cĩ khả năng xử lý tốt dữ liệu ngày
tháng.
9 Định dạng ngày tháng:
Ta thường dùng chuỗi ngày tháng (date string) để xử lý kiểu dữ liệu ngày
tháng. FT sử dụng dãy các số chỉ ngày tháng (serial date numbers), mỗi dãy
số nhất định này tượng trưng cho một ngày tháng. Tùy theo yêu cầu của các
hàm mà đối số ngày tháng là chuỗi ngày tháng hay dãy các số chỉ ngày
tháng.
Ví dụ: dãy số 733016 là 05-Dec-2006 hay 05 Dec 2006
Khi xử lý một số ít ngày tháng ở mức dùng dịng lệnh trong Matlab, thì
chuỗi ngày tháng thuận lợi hơn. Ngược lại, khi phân tích danh mục vốn đầu
tư lớn, chu kỳ tiền mặt,…thì nên dùng dãy các số chỉ ngày tháng để cải ._.nghĩa, cơng thức và
ví dụ minh họa.
Xây dựng được chương trình giải các bài tốn tài chính thơng qua Matlab.
Cho phép nhận và xuất dữ liệu theo các định dạng lưu trữ: Excel, Access,
SQL,….
2. ĐÁNH GIÁ
Mặc dù chúng em đã cĩ nhiều cố gắng trong quá trình thực hiện luận văn
này. Song, vẫn khơng tránh khỏi những thiếu sĩt và hạn chế về mặt lý thuyết
cũng như ứng dụng.
Lý thuyết:
- Các bài tốn trong tài chính chưa được giới thiệu đầy đủ.
- Chưa trình bày sâu về các hàm trong hộp cơng cụ tài chính.
Chương trình:
- Chỉ giải được một số bài tốn cơ bản đã giới thiệu trong phần lý thuyết.
- Chương trình chỉ nhận và xuất theo các định dạng dữ liệu nhất định.
- Chưa hỗ trợ tính năng xử lý các bài tốn lồng nhau (dữ liệu ra của bài
này là dữ liệu đầu vào của bài tốn khác).
3. HƯỚNG PHÁT TRIỂN
Lý thuyết:
- Giới thiệu thêm các bài tốn khác trong tài chính.
- Trình bày đầy đủ các hàm trong hộp cơng cụ tài chính
Chương trình:
- Tạo mơ hình dữ liệu lưu các cơng thức tính do người dùng nhập
vào nhằm tạo sự linh động khi tính tốn.
- Bổ sung một số định dạng lưu trữ dữ liệu khác như: MySQL,
Oracle…..
- Cho phép lọc dữ liệu vào và ra.
- Thiết kế giao diện thân thiện hơn.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 92 /116
PHỤ LỤC
(1) Hướng dẫn cài đặt Matlab:
1. Yêu cầu hệ thống: ( MATLAB 7.3)
Ổ đĩa CD-ROM (để cài đặt từ CD) hoặc DVD.
Hệ điều hành: Windows XP, Windows 2000 (Service Pack 3 hoặc 4),
Windows Server 2003.
Bộ vi xử lý : Intel Pentium III, IV, Xeon, Pentium M hoặc AMD
Athlon, Athlon XP, Athlon MP, Opteron.
Dung lượng RAM : 512 MB (tối thiểu), 1024 MB (đề nghị).
Dung lượng đĩa cứng cần thiết : 460 MB (chỉ cài đặt MATLAB và
Help), nếu cài đặt đầy đủ cần khoảng 4377MB.
Card đồ họa : hỗ trợ OpenGL 16-,24-, hoặc 32-bit.
2. Cách cài đặt MATLAB 7.3 (phiên bản R2006b) trên Windows từ CD:
Cho đĩa CD1 vào ổ đĩa CD – ROM, trình cài đặt The MathWorks
Installer sẽ tự chạy, hiển thị hộp hội thoại Welcome to the
MathWorks Installer như sau:
Hộp thoại sau xuất hiện yêu cầu điền các thơng tin cần thiết cho việc
cài đặt.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 93 /116
Đọc software licensing agreement, chọn Yes và click vào nút Next.
Chọn chế độ cài đặt là Typical hoặc Custom và click Next.
Nếu chọn kiểu cài đặt là Custom thì hộp thoại sau xuất hiện cho phép ta
chọn các tool cần cài đặt và click Next.
Chọn nơi cài đặt Matlab và click Next.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 94 /116
Chọn Intall để cài đặt chương trình.
Sau khi cài đặt xong, hộp thoại sau xuất hiện.
(2) Hộp cơng cụ tài chính:
2.1. Biến đổi ma trận
9 Cú pháp:
- tsmat = fts2mat(tsobj)
- tsmat = fts2mat(tsobj, datesflag)
- tsmat = fts2mat(tsobj, seriesnames)
- tsmat = fts2mat(tsobj, datesflag, seriesnames)
9 Mơ tả : Lấy chuỗi dữ liệu trong đối tượng FTS và đặt chúng vào ma trận
cột. Thứ tự các cột giống thứ tự của chuỗi dữ liệu trong đối tượng FTS.
9 Các đối số :
- tsobj: Đối tượng FTS.
- datesflag( Tùy chọn ):
datesflag = 0 (mặc định) Khơng chứa ngày.
datesflag = 1 chứa vectơ ngày.
- seriesnames( Tùy chọn ): Chỉ rõ chuỗi dữ liệu trong ma trận. Cĩ thể
là mảng các chuỗi.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 95 /116
2.2. Kết hợp các đối tượng FTS
9 Cú pháp: newfts = merge(fts1, fts2, ..., Method, RefObj)
9 Mơ tả: Kết hợp các đối tượng FTS. Đối số Method xác định giá trị chứa
trong đối tượng FTS trả về.
9 Các đối số
- fts1, fts2, ...: Danh sách các đối tượng FTS cần tích hợp, được ngăn
cách bởi dấu phẩy.
Chú ý: Thứ tự nhập vào quyết định dữ liệu ra. Những ngày giống
nhau và dữ liệu tương ứng của đối tượng sau bị loại bỏ.
- Method(tùy chọn): Phương pháp tích hợp.
'union' hoặc 'u' (Mặc định): Trả về các giá trị kết hợp của tất cả đối
tượng.
'intersection' hoặc 'i': Trả về các giá trị chung cho các đối tượng.
'reftime' hoặc 'r': Sắp xếp tất cả các giá trị đến một thời điểm liên
quan trong RefObj.
- RefObj( Tùy chọn ): Vectơ thời gian của đối tượng FTS được sử
dụng như thời gian tham khảo.
9 Ví dụ: Tạo 3 đối tượng FTS và kết hợp chúng vào một đối tượng duy
nhất.
>> dates = {'jan-01-2001'; 'jan-03-2001' };
>> data = [1; 1];
>> t1 = fints(dates, data);
>> dates = { 'jan-03-2001'; 'jan-04-2001'};
>> data = [2; 2];
>> t2 = fints(dates, data);
>> dates = {'jan-03-2001';'jan-05-2001'};
>> data = [3; 3];
>> t3 = fints(dates, data);
>> t123 = merge(t1, t2, t3) ;
>> ans = desc: || ||
freq: Unknown (0)
'dates: (4)' 'series1: (4)'
'01-Jan-2001' [ 1]
'03-Jan-2001' [ 1]
'04-Jan-2001' [ 2]
'05-Jan-2001' [ 3]
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 96 /116
2.3. Các hàm số học
Hàm Ý nghĩa
horzcat Nối các đối tượng FTS theo chiều ngang.
vertcat Nối các đối tượng FTS theo chiều dọc.
minus Trừ FTS.
times Nhân FTS.
rdivide Chia FTS.
mtimes Nhân ma trận FTS.
mrdivide Chia ma trận FTS.
power Lũy thừa đối tượng FTS.
9 horzcat:
Mơ tả: Các đối tượng FTS phải chứa ngày và thời gian giống nhau
chính xác. Khi nhiều chuỗi dữ liệu chỉ tên xuất hiện, việc kết hợp sẽ
thêm một hậu tố _objectname, với n là một số cho biết vị trí của
chuỗi thời gian trong câu lệnh kết nối từ trái sang phải. n chỉ xuất
hiện khi cĩ nhiều chuỗi dữ liệu chỉ tên. Các field miêu tả cũng được
kết nối. Chúng được phân cách bởi //.
Ví dụ: Xây dựng 3 đối tượng FTS, mỗi đối tượng chứa một chuỗi dữ
liệu cĩ tên DataSeries:
>> firstfts = fints((today:today+1)', (1:2)','DataSeries','d');
>> secondfts = fints((today:today+1)', (11:12)','DataSeries','d');
>> thirdfts = fints((today:today+1)', (21:22)','DataSeries','d');
>> newfts = [firstfts secondfts thirdfts secondfts];
>> newfts = desc: // // //
freq: Daily (1)
Columns 1 through 2
'dates: (2) ' 'DataSeries_firstfts'
' ' ': (2) '
'10-Dec-2006' [ 1]
'11-Dec-2006' [ 2]
Columns 3 through 4
'DataSeries_secondft' 'DataSeries_thirdfts'
's2: (2) ' ': (2) '
[ 11] [ 21]
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 97 /116
[ 12] [ 22]
Column 5
'DataSeries_secondft'
's4: (2) '
[ 11]
[ 12]
9 vertcat:
Mơ tả: Đối tượng được kết nối khơng cần phải cĩ thời gian trùng
khớp. Các field miêu tả cũng được kết nối. Chúng được ngăn cách
bởi ||. Khi freq khác nhau thì thuộc tính freq xuất ra cĩ giá trị là
Unknown(0).
Ví dụ:
>> myfts = fints((today:today+1)', (1:2)', 'DataSeries', 'd');
>> yourfts = fints((today+2:today+3)', (11:12)', 'DataSeries', 'd');
>> newfts1 = [myfts; yourfts];
>> newfts1 = desc: ||
freq: Daily (1)
'dates: (10)' 'DataSeries: (4)'
'10-Dec-2006' [ 1]
'11-Dec-2006' [ 2]
'12-Dec-2006' [ 11]
'13-Dec-2006' [ 12]
9 plus:
Cú pháp:
- newfts = tsobj_1 + tsobj_2
- newfts = tsobj + array
- newfts = array + tsobj
Mơ tả: Hai phải cùng ngày và chuỗi dữ liệu chỉ tên, thứ tự khơng
cần giống nhau. Thứ tự của chuỗi dữ liệu khi một FTS được cộng
với một FTS khác theo sau thứ tự của đối tượng đầu tiên.
Các đối số
- tsobj_1, tsobj_2: Một cặp đối tượng FTS.
- array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của
thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu
trong tsobj.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 98 /116
Ví dụ:
>> newfts = first + second
>> newfts = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'10-Dec-2006' [ 12]
'11-Dec-2006' [ 14]
'12-Dec-2006' [ 16]
'13-Dec-2006' [ 18]
'14-Dec-2006' [ 20]
9 minus:
Cú pháp:
- newfts = tsobj_1 - tsobj_2
- newfts = tsobj – array
- newfts = array – tsobj
Mơ tả: Hai đối tượng phải cùng ngày và chuỗi dữ liệu chỉ tên, thứ tự
khơng cần giống nhau. Thứ tự của chuỗi dữ liệu khi một FTS bị trừ
bởi một FTS khác theo sau thứ tự của đối tượng đầu tiên.
Ví dụ
>> newfts = first – second
>> newfts = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'10-Dec-2006' [ -10]
'11-Dec-2006' [ -10]
'12-Dec-2006' [ -10]
'13-Dec-2006' [ -10]
'14-Dec-2006' [ -10]
Các đối số
- tsobj_1, tsobj_2: Một cặp đối tượng FTS.
- array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của
thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu
trong tsobj.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 99 /116
9 times:
Cú pháp:
- newfts = tsobj_1 .* tsobj_2
- newfts = tsobj .* array
- newfts = array .* tsobj
Mơ tả : Hai đối tượng phải cùng ngày và cùng chuỗi dữ liệu chỉ tên,
thứ tự khơng cần giống nhau. Thứ tự của chuỗi dữ liệu khi đối tượng
được nhân bởi một đối tượng khác theo sau thứ tự của đối tượng đầu
tiên.
Các đối số
- tsobj_1, tsobj_2: Một cặp đối tượng FTS.
- array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của
thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu
trong tsobj.
Ví dụ:
>> newfts = first.* second
>> newfts = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'11-Dec-2006' [ 11]
'12-Dec-2006' [ 24]
'13-Dec-2006' [ 39]
'14-Dec-2006' [ 56]
'15-Dec-2006' [ 75]
9 rdivide:
Cú pháp:
- newfts = tsobj_1 ./ tsobj_2
- newfts = tsobj ./ array
- newfts = array ./ tsobj
Mơ tả :Hai đối tượng phải cùng ngày và cùng chuỗi dữ liệu chỉ tên,
thứ tự khơng cần giống nhau. Thứ tự của chuỗi dữ liệu khi đối tượng
bị chia bởi một đối tượng khác theo sau thứ tự của đối tượng đầu
tiên.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 100 /116
Các đối số
- tsobj_1, tsobj_2: Một cặp đối tượng FTS.
- array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của
thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu
trong tsobj.
Ví dụ:
>> newfts = first ./ second
>> newfts = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'11-Dec-2006' [ 0.0909]
'12-Dec-2006' [ 0.1667]
'13-Dec-2006' [ 0.2308]
'14-Dec-2006' [ 0.2857]
'15-Dec-2006' [ 0.3333]
9 mtimes :
- newfts = tsobj_1 * tsobj_2
- newfts = tsobj * array
- newfts = array * tsobj
Chú ý: Đối với đối tượng FTS, hàm mtimes giống hệt như hàm times.
9 mrdivide :
- newfts = tsobj_1 / tsobj_2
- newfts = tsobj / array
- newfts = array / tsobj
Chú ý: Đối với đối tượng FTS, hàm mrdivide giống hệt như hàm
rdivide
9 Lũy thừa:
Cú pháp:
- newfts = tsobj .^ array
- newfts = array .^tsobj
- newfts = tsobj_1 .^ tsobj_2
Mơ tả: Nâng tương ứng tất cả các giá trị trong chuỗi dữ liệu của đối
tượng FTS tới lũy thừa được chỉ rõ bởi giá trị của mảng. Kết quả trả
về trong một đối tượng FTS mới. Đối tượng này chứa chuỗi dữ liệu
chỉ tên giống như đối tượng FTS trước.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 101 /116
Các đối số
- tsobj: Đối tượng FTS.
- tsobj_1, tsobj_2: Một cặp đối tượng FTS.
- array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của
thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu
trong tsobj.
Ví dụ:
>> newfts = first .^ array
>> newfts = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'11-Dec-2006' [ 1]
'12-Dec-2006' [ 32]
'13-Dec-2006' [ 243]
'14-Dec-2006' [ 1024]
'15-Dec-2006' [ 3125]
2.4. Các hàm tốn học
Hàm Ý nghĩa
exp Tính giá trị số mũ theo cơ số e
hist Vẽ biểu đồ
log Tính giá trị loga theo cơ số e
max Giá trị lớn nhất
mean Tính giá trị trung bình cộng
std Tính độ lệch chuẩn
9 exp:
Cú pháp: newfts = exp(tsobj)
Mơ tả: Tính giá trị số mũ theo cơ số e cho tất cả các giá trị trong
chuỗi giá trị của đối tượng FTS tsobj và trả kết quả trong đối tượng
FTS newfts.
Ví dụ:
>> newfts = exp(firstfts)
>> newfts = desc: EXP of
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'11-Dec-2006' [ 2.7183]
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 102 /116
'12-Dec-2006' [ 7.3891]
'13-Dec-2006' [ 20.0855]
'14-Dec-2006' [ 54.5982]
'15-Dec-2006' [ 148.4132]
9 hist:
Cú pháp:
- hist(tsobj, numbins)
- ftshist = hist(tsobj, numbins)
- [ftshist, binpos] = hist(tsobj, numbins)
Các đối số
- tsobj: Đối tượng FTS.
- numbins( Tùy chọn ): Số thanh của biểu đồ. Mặc định = 10.
Ví dụ: >> hist(first)
9 log:
Cú pháp: newfts = log(tsobj)
Mơ tả: Tính giá trị loga theo cơ số e cho các giá trị trong đối tượng
FTS tsobj và trả kết quả trong đối tượng FTS newfts.
Ví dụ:
>> newfts = log(first)
>> newfts = desc: LOG of
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'11-Dec-2006' [ 0]
'12-Dec-2006' [ 0.6931]
'13-Dec-2006' [ 1.0986]
'14-Dec-2006' [ 1.3863]
'15-Dec-2006' [ 1.6094]
Chú ý: Các hàm log2, log10 tương tự.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 103 /116
9 tsmax:
Cú pháp: tsmax = max(tsobj)
Chú ý: tsmax chỉ trả về giá trị và khơng trả về ngày liên quan với
giá trị. Giá trị lớn nhất khơng cần ngày phải giống nhau.
Ví dụ:
>> tsmax = max(first)
>> tsmax = DataSeries: 5
Chú ý: Hàm min tương tự
9 mean:
Cú pháp: tsmean = mean(tsobj)
Ví dụ:
>> tsmean = mean(first)
>> tsmean = DataSeries: 3
9 std:
Cú pháp:
- tsstd = std(tsobj)
- tsstd = std(tsobj, flag)
Các đối số
- tsobj: Đối tượng FTS
- flag( Tùy chọn ): Các nhân tố bình thường hĩa:
flag = 1: Bình thường hĩa bởi n( số dữ liệu tìm thấy).
flag = 0: Bình thường hĩa bởi n-1
Ví dụ:
>> tsstd = std(first)
>> tsstd = DataSeries: 1.5811
2.5. Các hàm tiện ích
Hàm Ý nghĩa
chfield Thay đổi tên chuỗi dữ liệu
extfiel Trích chuỗi dữ liệu
fetch Trích dữ liệu từ đối tượng FTS
fieldnames Lấy tên field
freqnum Chuyển chuỗi chỉ tính thường xuyên thành số
getnameidx Tìm tên trong danh sách
rmfield Xĩa chuỗi dữ liệu
sortfts Sắp xếp FTS
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 104 /116
9 chfield:
Cú pháp: newfts = chfield(oldfts, oldname, newname)
Mơ tả:
- Đổi tên của thành phần đối tượng FTS từ oldname thành
newname.
- Gán newfts = oldfts để đổi tên của một thành phần đã tồn tại mà
khơng phải thay đổi tên của đối tượng FTS.
- Để đổi tên đồng thời nhiều thành phần cần chỉ rõ chuỗi của đối
tượng cũ và tên thành phần mới trong mảng cột tương ứng.
- Khơng thể đổi tên của desc, freq, dates.
Các đối số:
- oldfts: Tên của đối tượng FTS hiện hành.
- oldname: Tên thành phần hiện hành trong oldfts. Một chuỗi
MatLab hay một mảng cột.
- newname: Tên mới cho thành phần trong oldfts. Một chuỗi
MatLab hay một mảng cột.
Ví dụ:
>> newfts = chfield(first, 'DataSeries', 'DataSeries1')
>> newfts = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries1: (5)'
'11-Dec-2006' [ 1]
'12-Dec-2006' [ 2]
'13-Dec-2006' [ 3]
'14-Dec-2006' [ 4]
'15-Dec-2006' [ 5]
9 extfield:
Cú pháp: ftse = extfield(tsobj, fieldnames)
Mơ tả: Trích từ tsobj ngày và chuỗi dữ liệu được xác định bởi
fieldnames vào đối tượng FTS ftse. ftse cĩ tất cả các ngày trong
tsobj nhưng chứa số chuỗi dữ liệu nhỏ hơn.
Các đối số:
- tsobj: Đối tượng FTS.
- fieldnames: Chuỗi dữ liệu được trích. Là một mảng nếu một
danh sách tên các chuỗi dữ liệu được cung cấp. Là một chuỗi nếu
chỉ một tên chuỗi dữ liệu được yêu cầu.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 105 /116
Ví dụ:
>> ftse = extfield(first, 'DataSeries')
>> ftse = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'11-Dec-2006' [ 1]
'12-Dec-2006' [ 2]
'13-Dec-2006' [ 3]
'14-Dec-2006' [ 4]
'15-Dec-2006' [ 5]
9 fetch:
Cú pháp: newfts = fetch(oldfts, StartDate, StartTime, EndDate,
EndTime, delta, dmy_specifier, time_ref)
Mơ tả: Yêu cầu dữ liệu của một đối tượng FTS bắt đầu từ ngày bắt
đầu và/hoặc thời gian bắt đầu đến ngày kết thúc và/hoặc thời gian
kết thúc, bỏ qua số ngày, tháng, năm.
Các đối số:
- oldfts: Đối tượng FTS hiện tại.
- StartDate: Ngày đầu tiên trong mảng dữ liệu được trích.
- StartTime: Thời gian bắt đầu mỗi ngày. Nếu khơng cần thời gian
cụ thể hoặc oldfts khơng chứa thời gian thì dùng []. Nếu
StartTime xác định thì cũng phải xác định EndTime.
- EndDate: Ngày cuối trong mảng dữ liệu được trích.
- EndTime: Thời gian kết thúc vào mỗi ngày. Nếu thời gian khơng
xác định hoặc oldfts khơng chứa thơng tin thời gian thì dùng “[]”.
Nếu EndTime xác định thì StartTime cũng phải xác định.
- delta: Nhảy qua khoảng thời gian giữa.Cĩ thể là bất kỳ số nguyên
dương. Đơn vị cho khoảng thời gian bỏ qua được xác định bởi
dmy_specifier.
- dmy_specifier: Xác định đơn vị cho delta.
D, d ( Ngày )
M, m ( Tháng )
Y, y ( Năm )
- time_ref: Khoảng thời gian tham khảo hay thời gian rõ ràng.
Khoảng thời gian tham khảo hợp lý là 1, 5, 15, 60 phút. Nhập vào
thời gian xác định như 'hh:mm'.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 106 /116
Ví dụ:
>>dates2 = ['01-Jan-2001';'01-Jan-2001'; '01-Jan-2001';...
'02-Jan-2001'; '02-Jan-2001';'02-Jan-2001'];
>>times2 = ['11:00';'11:05';'11:06';'12:00';'12:05';'12:06'];
>>dates_times2 = cellstr([dates2, repmat(' ',size(dates2,1),1),
times2]);
>>myFts2 = fints(dates_times2,(1:6)',{'Data1'},1,'My second
FINTS')
>> fetch(myFts2,'01-Jan-2001',[],'02-Jan-2001',[],1,'d',...
{'11:06';'12:06'})
>> ans = desc: My second FINTS
freq: Daily (1)
'dates: (2)' 'times: (2)' 'Data1: (2)'
'01-Jan-2001' '11:06' [ 3]
'02-Jan-2001' '12:06' [ 6]
9 fieldnames:
Cú pháp: fnames = fieldnames(tsobj)
Mơ tả: Trả về tên field liên quan với đối tượng FTS tsobj như một
mảng các chuỗi, bao gồm các field thơng thường: desc, freq,
dates( và thời gian nếu tồn tại ).
Ví dụ:
>> fnames = fieldnames(first)
>> fnames = 'desc'
'freq'
'dates'
'DataSeries'
Các đối số:
- tsobj: Đối tượng FTS.
- srsnameonly: Các tên field trả về:
= 0( mặc định ): trả về tất cả các tên field.
= 1: chỉ trả về tên chuỗi dữ liệu.
Chú ý: Hàm fnames = fieldnames(tsobj, srsnameonly) tương tự.
9 freqnum:
Cú pháp: nfreq = freqnum(sfreq)
Mơ tả: Chuyển một chuỗi chỉ tính thường xuyên thành số.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 107 /116
Chú ý: Hàm sfreq = freqstr(nfreq) ngược lại.
Các giá trị:
sfreq nfreq
UNKNOWN, Unknown, unknown, U, u 0
DAILY, Daily, daily, D, d 1
WEEKLY, Weekly, weekly, W, w 2
MONTHLY, Monthly, monthly, M, m 3
QUARTERLY, Quarterly, quarterly, Q, q 4
SEMIANNUAL, Semiannual, semiannual, S, s 5
ANNUAL, Annual, annual, A, a 6
Ví dụ:
>> nfreq = freqnum('w')
>> nfreq = 2
9 getnameidx :
Cú pháp: nameidx = getnameidx(list, name)
Mơ tả: Nếu name là một mảng các tên thì getnameidx trả về vectơ
chứa thứ tự của các tên trong danh sách. Nếu khơng tìm thấy tên nào
trong danh sách thì nĩ trả về 0. Nếu một vài tên khơng tìm thấy thì
thứ tự tương ứng bằng 0. Hàm chỉ nhận tên đầu tiên trong danh sách
cĩ các tên giống nhau. Hàm này dùng cho tên trong danh sách là duy
nhất.
Các đối số:
- list: Một mảng các chuỗi tên.
- name: Một chuỗi hay một mảng các chuỗi tên.
Ví dụ:
>> poultry = {'duck', 'goose', 'chicken'}
>> animals = {'duck', 'cow', 'duck', 'chicken', 'horse', 'chicken'}
>> nameidx = getnameidx(animals, poultry)
>> nameidx = 1 0 4
9 rmfield :
Cú pháp: fts = rmfield(tsobj, fieldname)
Mơ tả: Xĩa chuỗi dữ liệu fieldname và nội dung của nĩ từ đối tượng
FTS tsobj.
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 108 /116
Các đối số:
- tsobj: Đối tượng FTS.
- fieldname: Mảng chứa tên các chuỗi để xĩa một chuỗi đơn ra khỏi
đối tượng. Mảng các chuỗi dữ liệu để xĩa nhiều chuỗi dữ liệu ra
khỏi đối tượng cùng một lúc.
9 sortfts:
Cú pháp
- sfts = sortfts(tsobj)
- sfts = sortfts(tsobj, flag)
- sfts = sortfts(tsobj, seriesnames, flag)
- [sfts, sidx] = sortfts(...)
Mơ tả: Sắp xếp đối tượng FTS tsobj. theo thứ tự tăng dần chỉ dựa vào
vectơ ‘dates’ nếu tsobj khơng chứa thời gian. Nếu cĩ thì phải sắp xếp
dựa trên sự kết hợp của vectơ ‘dates’ và ‘times’. Vectơ ‘times’ khơng
thể sắp xếp riêng biệt.
Các đối số
- tsobj:Đối tượng FTS.
- flag( Tùy chọn ): Xác định thứ tự sắp xếp:
flag = 1( mặc định ): thứ tự tăng dần.
flag = -1: thứ tự giảm dần.
- seriesnames( Tùy chọn ): Chuỗi chứa một tên chuỗi dữ liệu hay
mảng chứa danh sách các tên chuỗi dữ liệu.
Ví dụ:
>> sfts1 = sortfts(first, -1)
>> sfts = sortfts(sfts1)
>> sfts = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'11-Dec-2006' [ 1]
'12-Dec-2006' [ 2]
'13-Dec-2006' [ 3]
'14-Dec-2006' [ 4]
'15-Dec-2006' [ 5]
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 109 /116
2.6. Biến đổi dữ liệu
Hàm Ý nghĩa
peravg Tính mức trung bình định kỳ
smoothts Dữ liệu trơn
tsmovavg Tính độ dịch chuyển trung bình và độ trung bình dịch
chuyển cĩ trọng số
9 peravg:
Cú pháp: avgfts = peravg(tsobj, numperiod)
Mơ tả: Trả về một cấu trúc avgfts chứa mức trung bình định kỳ( cho
mỗi kỳ numperiod ) của đối tượng FTS. avgfts cĩ các tên field giống
với tên chuỗi dữ liệu của tsobj.
Các đối số:
- tsobj: Đối tượng FTS.
- numperiod: Số nguyên xác định số điểm dữ liệu dùng để tính
trung bình cho mỗi mức trung bình định kỳ
- daterange: Khoảng thời gian dùng để tính trung bình.
Ví dụ:
>> avgfts = peravg(first, 2)
>> avgfts = DataSeries: [1.5000 3.5000 5]
Chú ý: Hàm avgfts = peravg(tsobj, daterange) tương tự
Ví dụ: >> avgfts = peravg(first, '13-Dec-2006::16-Dec-2006')
>> avgfts = DataSeries: 2.5000
9 smoothts:
Cú pháp: output = smoothts(input, 'e', n)
Mơ tả: Làm trơn dữ liệu vào dùng phương pháp Exponential. n cĩ thể
đại diện cho kích thước cửa sổ( window size)( khoảng thời gian ) hoặc
alpha. Nếu n>1 thì n đại diện cho kích thước cửa sổ(window size). Nếu
0< n<1 thì n đại diện cho alpha mà 1
2
+= wsizeα . Nếu input là FTS thì
output là FTS giống hệt nhưng loại trừ nội dung. Nếu input là ma trận
hàng thì output là ma trận hàng cùng cỡ.
Ví dụ:
>> a = [1 2 3 4 5; 4 5 6 7 8 ];
>> output = smoothts(a, 'e', 0.5)
>> output = 1.0000 1.5000 2.2500 3.1250 4.0625
4.0000 4.5000 5.2500 6.1250 7.0625
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 110 /116
9 tsmovavg: Độ dịch chuyển trung bình đơn giản
Cú pháp:
- output = tsmovavg(tsobj, 's', lag)
- output = tsmovavg(vector, 's', lag, dim)
Mơ tả: Tính độ dịch chuyển trung bình. lag chỉ số điểm dữ liệu trước
được dùng chung dữ liệu hiện tại khi tính độ dịch chuyển trung bình.
Ví dụ:
>> output = tsmovavg(first, 's', 2)
>> output = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'13-Dec-2006' [ NaN]
'14-Dec-2006' [ 1.5000]
'15-Dec-2006' [ 2.5000]
'16-Dec-2006' [ 3.5000]
'17-Dec-2006' [ 4.5000]
9 tsmovavg: Độ dịch chuyển trung bình cĩ trọng số
Cú pháp:
- output = tsmovavg(tsobj, 'w', weights)
- output = tsmovavg(vector, 'w', weights, dim)
Mơ tả: Tính độ dịch chuyển trung bình cĩ trọng số bằng cách cung
cấp các trọng số cho mỗi yếu tố trong cửa sổ dịch chuyển. Chiều dài
của vectơ trọng số xác định kích cỡ cửa sổ. Nếu các trọng số lớn hơn
được dùng cho nhiều giá gần đây và các trọng số nhỏ hơn dùng cho
giá trước đĩ thì xu hướng thuận lợi hơn cho thị trường chứng khốn
gần đây.
Các đối số
- tsobj: Đối tượng FTS.
- lag: Số điểm dữ liệu trước.
- vector: Vectơ hàng hay ma trận hàng. Mỗi hàng là một bộ quan
sát.
- dim( Tùy chọn ): Chỉ rõ chiều khi đầu vào là vectơ hoặc ma trận.
Mặc định là 2( Ma trận hàng: mỗi hàng là một biến và mỗi cột là
một bộ quan sát ). Nếu dim = 1 thì đầu vào là vectơ cột hoặc ma
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 111 /116
trận cột( mỗi cột là một biến và mỗi hàng là một bộ quan sát).
output giống định dạng của đầu vào.
weights: Trọng số của các yếu tố.
Ví dụ:
>> output = tsmovavg(first, 'w', [3 2 1])
>> output = desc: (none)
freq: Daily (1)
'dates: (5)' 'DataSeries: (5)'
'13-Dec-2006' [ NaN]
'14-Dec-2006' [ NaN]
'15-Dec-2006' [ 1.6667]
'16-Dec-2006' [ 2.6667]
'17-Dec-2006' [ 3.6667]
2.7. Vẽ đồ thị
Hàm Ý nghĩa
bar Vẽ biểu đồ dạng bar, barh
chartfts Hiển thị tương tác
9 bar:
Cú pháp:
- bar(tsobj)
- bar(tsobj, width)
- bar(..., 'style')
- hbar = bar(...)
Mơ tả: Vẽ các cột chuỗi dữ liệu của tsobj. Số chuỗi dữ liệu quyết
định số cột đứng trong mỗi nhĩm. Mỗi nhĩm là dữ liệu cho một
ngày riêng biệt.
Các đối số
- tsobj: Đối tượng FTS.
- width: Độ rộng của cột và khoảng cách giữa các cột trong một
nhĩm. Mặc định là 0.8. Nếu width =1 thì các cột trong một nhĩm
đụng lẫn nhau. Nếu width >1 tạo ra các cột chồng lấp.
- style: ‘grouped’( mặc định ) hoặc ‘stacked’
Chú ý:
- Hàm barh(...) và hàm hbarh = barh(...) tương tự nhưng vẽ theo
chiều ngang.
- Các hàm bar3, bar3h tương tự như bar, barh
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 112 /116
9 chartfts:
Cú pháp: chartfts(tsobj)
Mơ tả: Tạo một khung hình chứa một hoặc nhiều biểu đồ. Cĩ thể
dùng chuột để xem dữ liệu tại một điểm thời gian riêng biệt trên
biểu đồ.
Ví dụ:
>> ibmfts = ascii2fts('ibm9599.dat.txt', 1, 3, 2);
>> chartfts(ibmfts)
(3) Các LineSpec (Line Specification):
Matlab cho phép ta định nghĩa bất kỳ đặc tính nào của các đường (line)
dùng cho việc vẽ đồ thị, hình ảnh,…Bao gồm kiểu đường (line style), độ rộng
của đường (line width), màu (color), kiểu vạch dấu (marker type), kích thước
vạch dấu (marker size), bề mặt vạch dấu và màu cạnh (dùng cho các vạch dấu
được tơ đặc).
Sau đây là một số đặc tính của đường được Matlab cung cấp:
" Kiểu đường:
Chỉ định Kiểu đường
- Đường liền (mặc định)
-- Đường gạch ngang
: Đường chấm
-. Đường gạch chấm
" Vạch dấu (kiểu ký hiệu dánh dấu điểm dữ liệu):
Chỉ định Kiểu vạch dấu
+ Kiểu dấu cộng
o Hình trịn
* Dấu hoa thị
. Điểm
x Dấu thập
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 113 /116
square hoặc s Hình vuơng
diamond hoặc d Hình kim cương (thoi)
^ Tam giác hướng lên
v Tam giác hướng xuống
> Tam giác hướng phải
< Tam giác hướng trái
pentagram hoặc p Ngơi sao 5 cánh
hexagram hoặc h Ngơi sao 6 cánh
none Khơng cĩ vạch dấu (mặc định)
" Bảng màu ColorSpec:
Giá trị RGB Tên tắt Tên đầy đủ Màu
[1 1 0] y yellow Vàng
[1 0 1] m magenta Đỏ tươi
[0 1 1] c cyan Lục lam
[1 0 0] r red Đỏ
[0 1 0] g green Xanh lá
[0 0 1] b blue Xanh
[1 1 1] w white Trắng
[0 0 0] k black Đen
Ví dụ: t = 0:pi/20:2*pi;
plot(t,sin(t),'-.r*')
hold on
plot(t,sin(t-pi/2),'--mo')
plot(t,sin(t-pi),':bs')
hold off
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 114 /116
>> plot(t,sin(2*t),'-mo',...
'LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[.49 1 .63],...
'MarkerSize',12)
(4) Các định dạng ngày tháng (DateForm):
DateForm Định dạng Ví dụ
0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-2000 15:45:17
1 'dd-mmm-yyyy' 01-Mar-2000
2 'mm/dd/yy' 03/01/00
3 'mmm' Mar
4 'm' M
5 'mm' 03
6 'mm/dd' 03/01
7 'dd' 01
8 'ddd' Wed 9
9 'd' W10
10 'yyyy' 2006
11 'yy' 06
12 'mmmyy' Mar06
13 'HH:MM:SS' 15:45:17
14 'HH:MM:SS PM' 3:45:17 PM
15 'HH:MM' 15:4516
16 'HH:MM PM' 3:45 PM
17 'QQ-YY' Q1-01
18 'QQ' Q1
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 115 /116
19 'dd/mm' 01/03
20 'dd/mm/yy' 01/03/06
21 'mmm.dd.yyyy HH:MM:SS' Mar.01,2000 15:45:17
22 'mmm.dd.yyyy' Mar.01.2006
23 'mm/dd/yyyy' 03/01/2006
24 'dd/mm/yyyy' 01/03/2006
25 'yy/mm/dd' 06/03/01
'yyyy/mm/dd' 2006/03/01
27 'QQ-YYYY' Q1-2006
28 'mmmyyyy' Mar2006
SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150
Trang 116 /116
TÀI LIỆU THAM KHẢO
Sách và Ebooks:
[1] David F. Griffiths, An Introduction to Matlab version 2.3, The
University Dundee, 2005.
[2] The Math Work, Getting Started with Matlab.
[3] Alex F. Bielajew, Introduction to Computers and Programming using
C++ and MATLAB, The University of Michigan, 2005.
[4] Đinh Đức Anh Vũ, Giới thiệu sơ lược vển ngơn ngữ Matlab, Trường
ĐH Bách Khoa TpHCM, 2004.
[5] PGS.TS Tạ Duy Liêm, Cơ sở Matlab và Ứng dụng, NXB Khoa học và
Kỹ thuật, Hà Nội, 2005.
[6] Tiến sĩ Lại Tiến Dĩnh, Tốn Tài Chính, NXB Thống Kê, 2002
[7] Tiến sĩ Trương Mỹ Dung, SOFTWARE APPLICATIONS TO
CONOMICS, NXB Tổng Hợp Tp HCM, 2005
[8] The Math Work, MATLAB Help của MATLAB version 7.3
[9] Kevin Sheppard, Financial Econometrics MFE Matlab Notes,
University of Oxford, 8/10/2006
[10] La Văn Hiển, Nhập mơn MATLAB Access, NXB Đại Học Quốc Gia
Tp.HCM, 2003
[11] Pascal Getreuer, Writing Fast MATLAB Code, 6/2006
[12] Dmitrii S. Silvestrov and Anatoliy A. Malyarenko, An Introduction to
Financial Mathematics with MATLAB, Research Report, 2001.
Websites:
[1] www.mathwork.com
[2] www.codeproject.com
[3] www.msdn.microsoft.com
[4] www.en911.com
[5] www.templateen.com
[6] www.c-sharpcorner.com
._.