Bài giảng Tin Ứng dụng 2 – Matlab 7
- 44 -
200 4564
300 3653
400 6798
500 6432
3 lệnh sau
>> fid = fopen('table.dat','r');
>> a = fscanf(fid,'%3d%4d');
>> fclose(fid);
sẽ lần lượt làm các nhiệm vụ:
Mở một file để đọc, việc này được chỉ định bằng chuỗi ‘r’, (r là viết tắt
của read). Biến fid được gán cho một giá trị bằng 1 số nguyên tố duy
nhất, đặc trưng cho file sẽ sử dụng (số này còn gọi là số chỉ thị của file).
Sau này mỗi khi nhắc đến file này chúng ta sẽ sử dụng số chỉ thị fid.
Đọc vào bộ nhớ từng cặp số từ file (file có số chỉ thị là fid), một số có 3
chữ số và một số có 4 chữ số.
Đóng file (file có số chỉ thị là fid).
Quá trình này tạo ra một véc tơcột chứa các phần tử 100 2256 200 4564 500
6432. Véctơnày có thể được chuyển đổi về ma trận 5x2 bằng lệnh:
A = reshape(2,2,5)';
(lược bớt) (xem thêm Help nếu cần thiết)
6. CHƯƠNG VI: ĐỒ THỊDẠNG ĐƯỜNG
6.1. Biểu diễn đường quá trình
Trường hợp đơn giản nhất là biểu diễn sự biến thiên tăng giảm số liệu trong một
dãy. Chẳng hạn với dãy số liệu mực nước z đo được ta có thể biểu diễn dưới dạng
đường quá trình nhưsau:
z = [-0.05 0.18 0.28 0.33 0.19 0 -0.26 -0.35 -0.31 -0.22 0.05 0.14 0.31
0.38 0.18 0.09 -0.11 -0.20 -0.36 -0.11 0.08];1
plot(z)
Lệnh plot(z) sẽ vẽ biểu đồ dạng đường với số liệu cho bởi vec-tơz. Trường hợp
Kết quả biểu đồ thu được nhưtrên Hình 1. MatLab tự động căn chỉnh phạm vi của
trục tung và trục hoành sao cho có thể hiển thị toàn bộ số liệu cần vẽ. Tuy vậy
trong một số trường hợp ta cần thể hiện từng phần của biểu đồ, hoặc vì tính thẩm
mỹ mà có thể chỉnh sửa phạm vi của các trục. Câu lệnh nhưsau:
2 Vậy nếu muốn có V(m
3
) thì sao? Hãy thửV(m^3) xem!
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 46 -
axis([xmin xmax ymin ymax])
trong đó:
xmin, xmax lần lượt là giới hạn trái và phải của trục hoành
ymin, ymax lần lượt là giới hạn dưới và trên của trục tung.
Ta cần nhập cả 4 giá trị nói trên của vec-tơphạm vi trục. Chẳng hạn khi muốn
biểu thị mực nước chỉ trong khoảng thời gian từ t = 100 s đến t = 150 s, và hạn chế
cao độ mặt nước từ 0 đến 0.4 m, ta gõ lệnh:
axis([100 150 0 0.4])
Để xóa toàn bộ đồ thị hiện thời, ta gõ lệnh:
clf
6.2. Lựa chọn màu vẽ, nét vẽ
Trường hợp có nhiều đường nét vẽkhác nhau, ta nên phân biệt bằng những kiểu
và màu nét vẽkhác nhau. Những lựa chọn này có ngay trong câu lệnh plot.
plot(x, y, 'lựa chọn')
Trong đó, lựa chọn là một chuỗi kí tựcó 3 phần qui định nhưsau:
md
với m là một kí tựchỉmàu vẽ, thường là chữđầu của từtiếng Anh tương ứng
d là kí hiệu đánh dấu các điểm nút
là một hay hai kí tựthểhiện kiểu nét vẽ
Ví dụ:
0 50 100 150 200
Qua trinh muc nuoc thuc do
t (s)
z (m)
Hình 2: Biểu đồdạng đường sau khi chỉnh lại
ph
ạ
m vi các tr
ụ
c
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 47 -
plot(x, y, 'r') vẽđồthịnét vẽmàu đỏ(red). Không có lựa chọn kiểu nét vẽcụthể,
do đó máy sẽvẽkiểu nét liền (mặc định).
plot(x, y, 'g ') vẽđồthịnét vẽxanh lục (green). Nét vẽđược chọn là kiểu nét đứt
( ).
plot(x, y, 'b*-') vẽđồthịnét vẽxanh lam (blue). Nét vẽđược chọn là kiểu nét liền
với các điểm dấu sao (*-).
Nhưvậy có thểtổhợp các kiểu màu và nét vẽkhác nhau, theo bảng sau đây
3
:
Màu vẽ Nét vẽ Điểm nút
r red, đỏ - nét liền * dấu sao
g green, xanh lục nét đứt + dấu cộng
b blue, xanh lam : nét chấm s hình vuông
k black, đen nét chấm gạch ^ tam giác
3 Thực ra ta có thểlựa chọn kiểu và nét vẽtrực tiếp trên biểu đồcủa MatLab bằng cách chọn Edit Plot
(hoặc nút
trên thanh công cụ) rồi nháy phải chuột vào đường cần chỉnh và lựa chọn Line Style (kiểu đường), Line
Width (bềrộng) hoặc Marker (kiểu điểm nút) (xem Hình 3).
Hình 3: Kiểu nét vẽcùng các thuộc tính khác có thểlựa chọn
0.2
0.4
Qua trinh muc nuoc thuc do
t (s)
z (m)
Hình 4: Biểu đồdạng đường với hai nét vẽcó
kiểu khác nhau
0 50 100 150 200
-0.4
-0.2
0
0.2
0.4
Qua trinh muc nuoc thuc do
t (s)
z (m)
Hình
5
: Bi
ể
u đ
ồ
có khung và đư
ờ
ng dóng
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 49 -
Vào menu Insert – Text Box, vạch ra một khung chữnhật và gõ vào z max4
Vào menu Insert – Arrow, vạch mũi tên chỉtừkhung chữvào vòng tròn
Muốn xóa các chú thích, chỉcần chọn đối tượng cần xóa, ấn Delete.
ớ
i các chú thích
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 50 -
6.4. Xóa đường biểu đồ, lưu biểu đồ
- Nếu vẽsai một đường biểu đồnào đó ta có thểxóa bằng cách chọn menu Tools –
Edit Plot; chọn đường biểu đồđó, ấn Delete hoặc chọn Delete trong danh mục khi
nháy phải chuột trên Hình 3.
- MatLab có thểlưu lại biểu đồchúng ta tạo ra, dưới dạng nhiều dạng file ảnh
chuẩn hiện nay: *.gif, *.png, *.jpeg, *.emf, *.eps v.v Bên cạnh đó, MatLab còn
có một dạng file riêng gọi là *.fig, trong đó lưu toàn bộthông tin của các đường,
nét, điểm trên biểu đồ. Do vậy mà file fig chi tiết hơn đồng thời thường có kích
thước file lớn.
- Đểlưu biểu đồtrong MatLab ta chọn Menu File – Save, sau đó nhập tên cho file
hình mà ta muốn lưu. Cũng có thểnhấn vào biểu tượng Save ( ) trên thanh công
cụ. Chú ý chọn kiểu file hình (Save as type) thích hợp.
6.5. Đồ thị Logarit
Trong một sốtrường hợp, các đồthịlogarit cần được sửdụng, chẳng hạn biểu đồ
đường cấp phối hạt. Muốn đặt thang logarit với trục hoành ta chỉcần thay tên lệnh
plot bằng semilogx.
Chẳng hạn ta cần vẽđường cấp phối hạt với mẫu bùn cát sau:
Đường kính
(mm)
Khối lượng
(mg)
Hình 7: Chỉnh sửa tên chú giải tương ứng với các
đường quá trình
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 51 -
d < 0.15 900
0.21 < d < 0.30 16000 32.0 39.6 0.30
0.30 < d < 0.42 20100 40.2 79.8 0.42
0.42 < d < 0.60 8900 17.8 97.6 0.60
0.60 < d 1200 2.4 100 1
(Toàn bộ) 50000 100
Sốliệu dùng đểvẽđồthịlà hai cột sau cùng: tỉlệcộng dồn (P) và đường kính (d).
Có P (%) khối lượng bùn cát mịn hơn d (mm). Ởđây đã giảthiết rằng đường kính
lớn nhất bằng 1 mm nhưlà giới hạn trên của biểu đồ.
d = [0.15 0.21 0.30 0.42 0.60 1];
title('Bieu do duong cap phoi hat');
xlabel('d (mm)');
ylabel('P (%)');
semilogx(d,P,'*-');
grid on; box on;
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 52 -
Các đồthịvới thang logarit trên trục y và trên cả2 trục cũng được thực hiện tương
tựvới các câu lệnh lần lượt là semilogy và loglog.
6.6. Dãy biểu đồ
Bằng lệnh figure ta có thểtạo ra nhiều hình vẽđộc lập trên nhiều cửa sổ. Tuy vậy,
nhiều lúc ta muốn có một dãy (hoặc bảng) các biểu đồxếp kếtiếp nhau, có kích
thước bằng nhau đểtiện việc so sánh. MatLab hỗtrợhệthống subplot (biểu đồ
nhỏ) với câu lệnh có dạng chung nhưsau:
subplot(m,n,k);
10
0
0
20
40
60
ng l
ệ
nh subplot
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 53 -
Sẽtạo ra một bảng gồm (m × n) biểu đồnhỏ(m hàng và n cột). Tiếp đó hình thứk
(tính từtrên xuống dưới, trái qua phải) sẽđược kích hoạt và chuẩn bịđược vẽ.
Chẳng hạn, sau khi thực hiện lệnh
subplot(2,3,4);
ta được kết quảnhưHình 8.
Gọn hơn nữa ta có thểviết (trong trường hợp m, n, k < 10):
subplot 234
Xét một ví dụđơn giản: ta cần vẽđường quá trình mực nước (z) và vận tốc dòng
chảy (v) theo thời gian (t), nhưng trên hai biểu đồkhác nhau. Đểcó sựđối chiếu
vềthời gian giữa hai biểu đồta nên xếp chúng theo một cột dọc. Nhưvậy m = 2 và
n = 1.
t = 0:5:100;
z = [-0.14 -0.08 -0.05 -0.04 0.01 0.07 0.15 0.23 0.25 0.37 0.4 0.45 0.55
0.6 0.66 0.76 0.82 0.91 1 1.03 1.14];
v = [0.84 0.89 0.91 0.89 0.91 0.88 0.92 0.97 0.97 0.97 0.99
1.02 0.96 1.03 0.98 1.04 1.04 1.11 1.04 1.12 1.16];
subplot 211
plot(t, z); xlabel('t (phut)'); ylabel('z (m)');
title('Duong qua trinh muc nuoc tai diem A1');
subplot 212
plot(t, v, 'g'); xlabel('t (phut)'); ylabel('v (m/s)');
title('Duong qua trinh luu toc tai diem A1');
Kết quảnhưtrên Hình 7.
5
5 MatLab còn có lệnh plotyy cho phép hai trục tung với hai đại lượng khác nhau (chẳng hạn z và v) trên