* Vẽ đồ thị
Biểu diễn đồ thị trong không gian 2 chiều là một trong những yêu cầu không thể thiếu của quá trình biểu diễn, tìm hiểu hay đánh giá các số liệu. Về cơ bản, Matlab hỗ trợ các kiểu vẽ đồ thị trong không gian 2D với các lệnh vẽ cơ bản sau
Lệnh Ví dụ Giải thích
Plot Plot(x,y) Vẽ đồ thị bằng cách nối các điểm tương ứng của các ma trận x và y
Fplot Fplot(‘x^2 + 2*x -1’) Vẽ đồ thị là hàm y =f(x) trong một khoảng xác định
Ezplot Ezplot(f(x,y)) Ezplot(x(t), y(t))
Vễ đồ thị là một hàm hai biến f(x,y)=0 hoặc là đồ thị hàm ẩn x(t)=0; y(t)=0
+ Lệnh plot
Trong phần lớn các đồ thị thì đa số được vẽ bằng lệnh plot. Lệnh plot sẽ vẽ đồ thị của một mảng dữ liệu trong một hệ trục thích hợp bằng các nối các điểm với nhau.
Cấu trúc cơ bản của lệnh plot là: plot(x,y)
Ta xem xét ví dụ sau: >> x = linspace(0,2*pi,30); >> y = sin(x);
Hình 2.3. Vẽ đồ thị y = sin(x) bằng lệnh plot
Trong ví dụ này tạo ra 30 điểm trong khoảng từ 0 – 2*pi và tạo ra một vec tơ y là hàm của sin(x). Khi sử dụng lệnh plot, một figure được tạo ra với giá trị trên các trục được cập nhật tự động với đồ thị được vẽ. Nếu của sổ figure đã tồn tại thì lệnh plot sẽ xóa nó đi và thay bằng đồ thị mới.
Khi muốn vẽ nhiều đồ thị với lệnh plot thì ta sử dụng cấu trúc sau:
Plot (x1, y1, x2, y2,…)
Trong đó, các đồ thị được hình thành từ các cặp điểm cảu (x1, y1), (x2, y2)… sẽ được vẽ trên cùng một đồ thị. Ta xem xét ví dụ vẽ đồ thì của sin(x) và cos(x) trên cùng một figure như sau:
>> x = linspace(0,2*pi,30); >> y = sin(x);
>> z = cos(x); >> plot(x,y,x,z);
Hình 1.9. Đồ thị sin(x) và cos(x)
Bên cạnh việc thêm vào các cặp đối số thì lệnh plot sẽ tự vẽ tương ứng mỗi cột của ma trận với vec tơ đó.
Hình 1.10. Đồ thị thu được với lệnh plot(x,w)
Lệnh plot quy định đối số thứ 1 tương ứng với trục hoành còn đối số thứ 2 tương ứng với trục tung. Vì thế, khi đảo trật tự của các đối số thì đồ thị sẽ bị quay đi một góc 900.
>> plot(w,x)
Hình 1.11. Đồ thị vẽ với lệnh plot(w,x)
+ Lệnh fplot
Hàm fplot có cấu trú như sau:
Thực hiện chức năng vễ hàm fun với giá trị của x năm trong khoảng lims = [xmin
xmax]. Nếu sử dụng giá trị lims = [xmin xmax ymin ymax] thì đồ thị khi vẽ sẽ giới hạn cả trục vẽ y = [ymin ymax]. Nếu lims không được khai báo thì hàm sẽ vẽ đồ thị với giá trị mặc định là -2π < x < 2π.
Hàm fun phải là một vec tơ hàng của các hàm theo x. Ví dụ như nếu hàm fun = [f1(x), f2(x), f2(x)] và giá trị của x = [x1; x2] thì khi đó sẽ có 6 đồ thị được vẽ bao gồm:
f1(x1) f2(x1) f3(x1) f1(x2) f2(x2) f3(x2) Ví dụ: vẽ đồ thị y = 2x3 – x trong khoảng [-10,10] >> fplot(‘2*x^3 – x’,[-10, 10]) Hình 1.12. Đồ thị y = 2x3 – x + Hàm ezplot
Hàm ezplot được sử dụng để vẽ các đồ thị là hàm hai biến hoặc hàm ẩn tương ứng với hai cấu trúc sau:
ezplot (f, [xmin xmax ymin ymax]) với f = f(x,y) ezplot(y,[ xmin xmax])
ezplot (x, y, [tmin tmax]) với x = x(t), y = y(t)
Khi các giá trị giới hạn không được khai báo thì đồ thị sẽ được vẽ mặc định trong khoảng [-2 π, 2 π]. Để làm rõ hơn vấn đề này ta xem xét ví dụ sau:
Hình 1.13. Đồ thị 'x^2 - y^2 - 1' = 0 >> ezplot('sin(t)','cos(t)')
Hình 1.14. Đồ thị x= sin(t); y = cos(t) * Chỉnh sửa đồ thị 2D
a) Kiểu đường, dấu và màu
Khi làm việc với đồ thi, ta có thể khai báo các kiểu màu, nét vẽ bằng việc thêm các khai báo cho lệnh plot. Các đối số này có thể là ký tự, có thể chứa một hoặc nhiều hơn một theo bảng dưới đây:
Ký hiệu Màu Ký hiệu Kiểu nét vẽ Ký hiệu Ý nghĩa
b Xanh da trời - Nét liền s Vuông
g Xanh lá cây : Đường chấm d Diamond
c Xanh xám -- Đường nét đứt ^ Triangle (up)
m Đỏ tím O Đường o < Triangle (left)
y Vàng X Đường x > Triangle (right)
K Đen + Đường dấu + p Pentagram
W Trắng * Đường hình * H Hexagram
Các ký tự này được thêm vào phía sau của lệnh vẽ, dưới đây là ví dụ sử dụng các kiểu đường, màu và dấu vẽ khác nhau:
>> plot(x,y,'b:p',x,z,'c-',x,z,'m+')
Hình 1.15. Hiệu chỉnh nét vẽ bằng lệnh
Mặt khác, Matlab cũng cung cấp một phương pháp thay đổi trực quan hơn bằng cách thay đổi trực tiếp trên đồ thị. Chỉ cần nhấp chuột phải vào đồ thị và thay đổi lại các tham số như mong muốn.
Hình 1.16. Thay đổi nét vẽ trên đồ thị b) Lưới đồ thị, nhãn và lời chú giải
Lệnh grid on sẽ thêm lưới vào đồ thị hiện tại. Lệnh grid off sẽ bỏ các nét này đi. Lệnh grid không có tham số đi kèm thì sẽ thực hiện xen kẽ giữa các chế độ on và off.
Grid on grid off
Hình 1.1. Lệnh grid
Để thêm các thông tin cho trục và tiêu đề cho đồ thị ta có thể sử dụng các lệnh sau: Xlabel : thêm vào tên trục x
Ylable : thêm vào tên trục y Tillte : thêm vào tên của đồ thị >> xlabel('x')
>> ylabel('do thi sin(x) va cos(x)') >> title('ve do thi')
Hình 1.18. Đồ thị với các nhãn cho trục x, y và tên đồ thị
Bênh cạnh đó, ta có thể thêm các chuỗi ký tự vào bất kỳ vị trí nào trên đồ thị bằng cách sử dụng lệnh text(x,y, string) : trong đó (x,y) là tọa độ thêm ký tự, string là chuỗi ký tự cần thêm vào.
>> text(2.5,0.7,'sin(x)')
Mặt khác, ta có thể thêm một chuỗi ký tự bằng cách chỉ trực tiếp vào vị trí cần thêm với lệnh gtext(string)
>> gtext(‘cos(x)’)
Hình 1.20. Thêm các đối tượng vào đồ thị
Nếu ta vẫn muốn thêm vào các ghi chú chẳng hạn như mốn chỉ ra trên biểu đồ các vị trí quan trọng, ta có thể vào menu Insert và lựa chọn các đối tượng cần thêm để có được kết quả như mong muốn. Ở ví dụ hình 1.20 biểu đồ được thêm vào 3 đối tượng là ellipse, arrow và textbox
Trên một đồ thị, khi có nhiều đường khác nhau, để phân biệt các đường này ta dùng lệnh legend hoặc thêm vào từ menu Insert/legend. Khi sử dụng lệnh thì cấu trúc như sau:
Legend (‘đường 1’, ‘đường 2’, ‘đường 3’)
Sau đay ta sẽ thêm vào chỉ dẫn cho đồ thị trên bằng lệnh legend như sau: >> legend('sin(x)', 'cos(x)')
c) Một số lệnh về kiến tạo trục tọa độ
Lệnh Mổ tả
Axis([xmin xmax ymin ymax]) Thiết lập giá trị min, max cho hệ trục
V = axis V là một vecto cột chứa thang chia độ hiện tại [xmin
xmax ymin ymax])
Axis auto Trả lại giá trị mặc định thang chia Axis manual Giới hạn thang chia hiện tại
Axis xy Sử dụng hệ tọa độ đề các (gốc ở góc dưới bên trái, trục x từ trái qua phải, trục y từ dưới lên trên) Axis ij Sử dụng hệ tọa độ ma trận (gốc ở góc trên bên trái,
trục x từ trái sang phải, trục y từ trên xuống dưới) d) Lệnh hold on/off
Lệnh hold on/off được dùng để bật/tắt chế độ lưu giữ đồ thị. Khi lệnh hold on được sử dụng thì đồ thị sẽ không bị xóa đi. Khi vẽ một đồ thị mới, đồ thị này sẽ vẽ trên cùng đồ thị với đồ thị cũ đã vẽ. Ta xem xét các lệnh sau:
>> x = linspace (0, 2*pi, 30); >> y = sin(x); >> z = cos(x); >> plot(x,y); >> hold on; >> plot (x,z);
Như vậy, kết quả là lệnh hold on đã giữ lại đồ thị y = sin(x) và vẽ thêm đồ thị y = cos(x). Ta được kết quả là hai đồ thị trên cùng một hình vẽ như lệnh plot(x,y,x,z).
Hình 1.22. Vẽ đồ thị sử dụng lệnh hold on e) Lệnh điều khiển figure
Figure bản thân nó là của sổ để vẽ đồ thị của Matlab. Để điều khiển cửa sổ làm việc này Matlab cung cấp cho ta một lệnh Figure (h) – h là một số tự nhiên. Lệnh này có tác dụng là figure h trở thành cửa sổ để vễ đồ thị hiện thời (current figure), nếu của sổ figure h chưa có thì Matlab sẽ tự tạo ra một của cửa sổ mới với tên này.
Đối với bản thân một cửa sổ vẽ (figure) ta lại có thể chia ra nhiều khung vẽ khác nhau bằng lệnh subplot(m,n,p). Trong đó ma trận mxn là khoảng để vẽ đồ thị, và chọn p là cửa sổ hoạt động. Các đồ thị thành phần được đánh ố từ trái qua phải, từ trên xuốn dưới. Ví dụ:
Hình 1.23. Sử dụng lệnh subplot để chia các khung vẽ >> for x = 1:6 m = linspace (0, 2*pi,300); n = sin(m*x); subplot(2,3,x); plot(m,n) end
Kết quả thu được đồ thị như 1.23.