Tạo ra đồ thị Hàm plot có nhiều dạng, phụ thuộc vào các biến đầu vào: Nếu Y là một véc tơ, hàm plotY sẽ in ra đồ thị Y phụ thuộc vào chỉ số của nó trong véc tơ Nếu X, Y là hai véc tơ
Trang 1bài 5: Đồ hoạ trong Matlab
MATLAB có các công cụ hết sức hữu hiệu để hiển thị các véc tơ và ma trận ở dạng đồ thị cũng nh việc chú thích và in ấn đồ thị này Trong chơng này chúng ta sẽ đề cập một vài hàm quan trọng nhất về đồ hoạ của Matlab và đa ra một số thí dụ điển hình
I Tạo ra đồ thị
Hàm plot có nhiều dạng, phụ thuộc vào các biến đầu vào:
Nếu Y là một véc tơ, hàm plot(Y) sẽ in ra đồ thị Y phụ thuộc vào chỉ số của nó trong véc tơ
Nếu X, Y là hai véc tơ cùng độ lớn hàm PLOT(X,Y) sẽ in ra đồ thị hàm Y(X)
Ví dụ: để vẽ đồ thị hàm Sin với trị số hoành độ từ 0 đến 2 Pi ta dùng các dòng lệnh sau: x=0:pi/100:2*pi;
y=sin(x);
plot(x,y)
Nếu đối số trong hàm bao gồm nhiều bộ X, Y, Hàm sẽ đa ra đợc nhiều đồ thị trên màn hình
và Matlab sẽ tự động hiển thị các đồ thị với các màu khác nhau
Ví dụ :
Nếu ta có: y1= sin(x); y2=sin(x-0.25); y3=sin(x-0.5)
Hàm : plot(x,y1,x,y2,x,y3) sẽ đa ra bộ đồ thị nh hình vẽ
Trong hàm plot ta cũng có thể chỉ định kiểu đờng nét, màu sắc và kiểu đánh dấu các điểm nút với cú pháp:
plot(x,y,'color_style_marker')
Trong đó color_style_marker là một bộ 1,2 hoặc 3 ký tự phân cách bằng dấu ngoặc đơn chỉ
định kiểu đờng nét, màu sắc và kiểu đánh dấu các điểm nút
Các chữ cái chỉ màu sắc bao gồm: 'c', 'm', 'y', 'r', 'g', 'b', 'w', và 'k' Tơng ứng với màu xanh dơng, màu gạch non, màu vàng, màu đỏ, màu xanh, màu nớc biển, màu trắng và đen
Các ký tự chỉ kiểu đờng bao gồm '-' đối với nét liền, '- -' đối với đờng gạnh, ':' đ-ờng chấm, '-.' đđ-ờng chấm gạch, và 'none' khi không vẽ đđ-ờng
Các ký tự để đánh dấu điểm bao gồm: '+', 'o', '*', và 'x'
Ví dụ: câu lệnh plot(x,y,'y:+') vẽ ra đồ thị là đờng chấm chấm màu vàng có dấu + đánh dấu các điểm nút
Chú ý:
1 Lệnh plot sẽ tự động mở ra một cửa sổ đồ hoạ mới Nếu cửa sổ này đã tồn tại lệnh plot mặc
định sẽ sử dụng cửa sổ này Để mở một cửa sổ mới và đa nó thành hiện thời ta dùng lệnh figure
2 Để đa một cửa sổ đã mở thành hiện thời ta dùng câu lệnh figure(n), trong đó n là số trên thanh tiêu đề của cửa sổ
Trang 23 Vẽ thêm đờng cong mới vào một đồ thị đã có : Lệnh hold cho phép bạn thêm đờng cong vào
đồ thị đã có Nếu bạn đặt chế độ hold on Matlab sẽ không xoá đồ thị đã có và vẽ thêm đờng cong mới khi gọi lệnh vẽ
Ví dụ:
[x,y,z] = peaks;
contour(x,y,z,20,'k')
hold on
pcolor(x,y,z)
shading interp
Câu lệnh Contour sẽ vẽ ra đờng chu tuyến tạo bởi hàm peaks
Hold on sẽ đảm bảo cho câu lệnh pcolor đợc phối hợp với các đờng cong đã vẽ ra bằng lệnh contour trên cửa sổ
II Lệnh Subplot
Hàm subplot sẽ chia cửa sổ đồ hoạ ra nhiều phần để hiện thị nhiều đồ thị trên một cửa sổ
Cú pháp : sublot(m,n,p)
Trong đó m,n,p là các số nguyên, sẽ chia cửa sổ đồ hoạ ra m hàng và n cột và đ a phần cửa
sổ thứ p thành hiện thời Chỉ số các cửa sổ con đợc xác định từ phải qua trái và từ trên xuống dới
Ví dụ:
Các câu lệnh sau:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(4*cos(t));
subplot(2,2,1)
mesh(X)
subplot(2,2,2); mesh(Y)
subplot(2,2,3); mesh(Z)
subplot(2,2,4); mesh(X,Y,Z)
sẽ cho ta kết quả nh hình vẽ
Trang 3III Điều khiển
số các tuỳ chọn để thay đổi tỷ lệ, hớng và tỷ lệ Thông thờng matlab xác định giá trị lớn nhất và nhỏ nhất của dữ liệu để chọn một vùng vẽ tơng xứng Lệnh axis sẽ quy định lại các giá trị này theo yêu cầu của ngời dùng:
axis([xmin xmax ymin ymax])
Lệnh axis cũng chấp nhận một số các từ khoá để điều khiển việc vẽ các trục:
axis square : Tạo cho toàn bộ trục x và y có cùng chiều dài
axis equal : tạo ra các khoảng chia trên trục X và Y có chiều dài nh nhau
axis auto : Trả lại chế độ mặc định trong việc vẽ ra các trục
axis on : Viết ra tên của trục và đánh dấu các điểm chia trên trục
axis off : Huỷ bỏ việc viết ra tên của trục và đánh dấu các điểm chia trên trục
Ví dụ:
Các câu lệnh
x = 0:.025:pi/2;
plot(x,tan(x),'-ro')
Sẽ sử dụng hệ số tỷ lệ tự động trên cơ sở của giá trị Ymax=tan(1.57), có giá trị >1000:
Tuy nhiên đồ thị trên không thể hiện đợc quan hệ hàm số một cách rõ nét Kết quả nhận đợc sẽ tốt hơn nếu ta gõ lệnh:
axis([0 pi/2 0 5])
2 Câu lệnh Grid
grid off : không vẽ ra các đờng lới
grid on : vẽ ra các đờng lới
grid: Đảo ngợc tình trạng hiển thị hiện thời của lới.
IV ghi chú trên đồ thị
1 Hàm xlabel, ylabel và zlabel :
Đa vào dòng chú giải các trục x, y, z
Cú pháp:
xlabel('string')
xlabel(fname)
xlabel( ,'PropertyName',PropertyValue, )
h = xlabel( )
Mô tả
Mỗi trục của đồ thị có thể có nhãn riêng đợc tạo ra bằng các lệnh xlabel, ylabel hoặc zlabel xlabel('string') Ghi chú cho trục x của hệ toạ độ hiện thời
Trang 4xlabel(fname) Lấy giá trị của hàm fname, với kết quả là một chuỗi, sau đó hiển thị chuỗi
đó bên cạnh trục x
xlabel( ,'PropertName',PropertyValue, ) Cho phép chúng ta gán các
thuộc tính khác nhau cho nhãn của trục x (xem phần các đặc tính của văn bản đồ hoạ)
2 Hàm title :
Chèn vào dòng tên đồ thị
Cú pháp:
title('string')
title(fname)
title( ,'PropertyName',PropertyValue, )
h = title( )
Mô tả
Chúng ta có thể dùng lệnh title để viết tiêu đề cho đồ thị:
title('string') Dùng chuỗi 'string' làm tiêu đề cho đồ thị
title(fname) Xác định giá trị của hàm chuỗi fname và dùng nó làm tiêu đề cho đồ thị trên cửa sổ đồ hoạ hiện thời
title( ,'PropertyName',PropertyValue, ) Cho phép quy định các thuộc
tính khác nhau cho tiêu đề của đồ thị
3 Hàm text :
chèn văn bản vào điểm bất kỳ trên đồ thị
Cú pháp:
text(x,y,'string')
text(x,y,z,'string')
text( 'PropertyName',PropertyValue )
Trong đó x,y là toạ độ của điểm sẽ xuất văn bản ra:
'string' là chuỗi văn bản đợc xuất ra
Trong trờng hợp muốn xuất ra nhiều dòng văn bản, thay cho việc đa vào chuỗi 'string', chúng ta hãy đa vào mảng khối với các phần tử của mảng là các dòng văn bản
Ví dụ dới đây sẽ tạo ra hai mảng khối, một dùng cho hàm uicontrol và mảng thứ 2 dùng cho lệnh text
str1(1) = {'Center each line in the Uicontrol'};
str1(2) = {'Also check out the textwrap function'};
str2(1) = {'Each cell is a quoted string'};
str2(2) = {'You can specify how the string is aligned'}; str2(3) = {'You can use LaTeX symbols like \pi \chi \Xi'}; str2(4) = {'\bfOr use bold \rm\itor italic font\rm'};
str2(5) = {'\fontname{courier}Or even change fonts'};
plot(0:6,sin(0:6))
uicontrol('Style','text','Position',[80 80 250 65],
'String',str1);
text(5.75,sin(2.5),str2,'HorizontalAlignment','right')
Kết quả nhận đợc nh sau:
4 Sử dụng các biến trong chuỗi văn bản
Tất cả các biến có dữ liệu dạng chuỗi đều có thể sử dụng thay cho chuỗi 'string' trong các câu lệnh Ví dụ nh chúng ta có dữ liệu ở dạng véc tơ cột các chuỗi văn bản sau:
PersonalData = ['Jack Straw ';'489 Main St.';'Wichita KN '];
Để hiển thị các dữ liệu này trên màn hình đồ hoạ ta thực hiện các câu lệnh:
text(x1,y1,['Name: ',PersonalData(1,:)])
text(x2,y2,['Address: ',PersonalData(2,:)])
text(x3,y3,['City and State: ',PersonalData(3,:)])
Nếu biến chứa dữ liệu số, ta phải chuyển nó thành dữ liệu chuỗi ví dụ:
x = 21;
Trang 5text(xcoord,ycoord, ['Today is the ',num2str(x),'st day.']) sẽ in ra tại toạ độ (xcoord,ycoord) dòng
chữ : 'Today is the 21st day.'
5 Quy định các thuộc tính của văn bản đồ hoạ
Để quy định vị trí, cách căn chỉnh, kích cỡ và kiểu font chữ của văn bản đồ hoạ đa ra bởi các lệnh xlabel, ylabel, zlabel, text, title , chúng ta có thể gán thuộc tính cho các dòng văn bản đó ở dạng :
<câu lệnh>( , 'Property Name',<property value> ).
ở đây:
<câu lệnh> là các câu lệnh viết chữ của Matlab (xlabel, text, title )
'Property Name' là tên thuộc tính (cần đặt bên trong dấu ' ')
<property value> là giá trị của thuộc tính có thể là chuỗi hoặc số nguyên, số thực 4.1 Các thuộc tính của văn bản
' FontName' Cho phép quy định kiểu font chữ Tên font chữ (dạng chuỗi)
'Position' Quy định vị trí đặt chuỗi văn bản toạ độ x và y (z) của điểm:
[ x y (z)]
'Rotation' Góc xoay của dòng văn bản Số thực chỉ góc tính bằng độ 'VerticalAlignment' Quy định kiểu căn chỉnh theo
ph-ơng thẳng đứng 'Top', 'Bottom', 'Middle' 'HorizontalAlignment' Quy định kiểu căn chỉnh theo
ph-ơng ngang
'Left', 'Center', 'Right'
4.2 Xuất các ký tự đặc biệt
Trong các chuỗi của đối số của các hàm viết chữ trong chế độ đồ hoạ ta có thể đa vào các ký tự
điều khiển để xuất ra các chữ cái hy lạp, ký hiệu toán học, và kiểu font Các mã điều khiển đ ợc
đặt sau dấu '\' ví dụ:
Bảng các ký tự điều khiển dùng để xuất chữ cái hy lạp và biểu tợng
Chuỗi ký tự
điều khiển Biểu t- ợng Chuỗi ký tự điều khiển Biểu t- ợng Chuỗi ký tự điều khiển Biểu t- ợng
Trang 6\otimes \oplus \oslash
Chúng ta có thể điều khiển trực tiếp kiểu font chữ bằng các ký tự điều khiển: \fontname Trong trờng hợp này tên font chữ sẽ phải đặt trong dấu {} kế tiếp phần điều khiển font chữ, chúng ta có thể thêm các mã điều khiển:
\bf - kiểu chữ đậm
\it - kiểu chữ nghiêng
\sl - oblique font
\rm - kiểu chữ bình thờng
\fontsize{fontsize} - Định nghĩa cỡ chữ
Các chỉ số trên và dới đợc định nghĩa bằng các ký tự điều khiển "_" và "^"
5 các thí dụ
Để hiển thị ngày hiện thời trên tiêu đề của đồ thị ta dùng hàm:
title(date)
Để đa vào các chuỗi số ta dùng các lệnh sau:
f = 70;
c = (f 32)/1.8;
title(['Temperature is ',num2str(c),'C'])
Include a variable's value in a title and set the color of the title to yellow:
n = 3;
title(['Case number #',int2str(n)],'Color','y')
Include Greek symbols in a title:
title('\ite^{\omega\tau} = cos(\omega\tau) + isin(\omega\tau)')
Include a superscript character in a title:
title('\alpha^2')
Include a subscript character in a title:
title('X_1')
Ví dụ : đa vào các chuỗi ký tự đặc biệt
t = -pi:pi/100:pi;
y = sin(t);
plot(t,y)
axis([-pi pi -1 1])
xlabel('-\pi \leq \itt \leq \pi')
ylabel('sin(t)')
title('Graph of the sine function')
text(0.5,-1/3,'\it{Note the odd symmetry.}')
Đa ra đồ thị nh hình vẽ:
Trang 76 Các tuỳ chọn của lệnh plot
Trong lệnh plot ta có thể đa vào các tuỳ chọn ở dạng:
plot( ,'PropertyName',PropertyValue, )
Trong đó 'PropertyName' là tên các thuộc tính,
PropertyValue là giá trị của thuộc tính mà ta muốn gán:
Dới đây là bảng liệt kê các thuộc tính của đồ thị:
'LineWidth' điều khiển bề dầy của nét vẽ đồ thị số nguyên
'MarkerEdgeColor' Điều khiển màu của nét vẽ biểu tợng đánh
dấu điểm các ký tự chỉ màu vídụ:'g','y' 'MarkerSize' Kích thớc của biểu tợng đánh dấu điểm số nguyên
'MarkerFaceColor' Điều khiển màu của biểu tợng đánh dấu
điểm các ký tự chỉ màu vídụ:'g','y'
Ví dụ:
plot(x,sin(2*x),'-mo',
'LineWidth',2,
'MarkerEdgeColor','k',
'MarkerFaceColor','r',
'MarkerSize',12)
7 Các lệnh viết chữ khác
7.1 Lệnh gtext
Cú pháp:
gtext('string')
h = gtext('string')
Mô tả
gtext sẽ hiển thị chuỗi văn bản tại vị trí chỉ định bằng chuột trên đồ thị
7.2: lệnh ginput
Nhập dữ liệu của các điểm bằng chuột
Cú pháp
[x,y] = ginput(n)
[x,y] = ginput
Description
x,y] = ginput(n) Cho phép bạn chọn n điểm bằng chuột và trả kết quả là toạ độ x và y của các điểm chọn cho các véc tơ x và y Bnj có thể kết thúc việc chọn điểm ngay cả khi cha nhập
đủ n điểm bằng cách ấn Enter
Trang 8x,y] = ginput Cho phép chọn số điểm không hạn chế.
IV Các đồ thị dạng lới và bề mặt
1 Các hàm tạo bề mặt
Matlab định nghĩa một bề mặt lới bởi các toạ độ Z trên lới của mặt xy Dùng các đờng thẳng để nối các điểm kề nhau Hàm mesh và surf hiển thị các bề mặt ở dạng 3 chiều Mesh cung cấp các bề mặt dạng khung dây trong đó chỉ thể hiện màu ở các đờng nối Surf hiển thị màu cả đ-ờng nối và bề mặt
2 Trực quan hoá các hàm hai biến
Để hiển thị hàm 2 biến z=f(x,y), hãy tạo các ma trận x và y chứa đựng các hàng và cột lặp Sau
đó sử dụng các ma trận này để tính ra đồ thị của hàm
Hàm meshgrid chuyển phạm vi đợc định nghĩa bằng một véc tơ hoặc hai véc tơ x, y thành các
ma trận X, Y dùng để tính ra giá trị của hàm Các hàng của X là các bản sao của véc tơ x, các cột của Y là copy của véc tơ y
Cú pháp:
[X,Y] = meshgrid(x,y)
[X,Y] = meshgrid(x)
[X,Y,Z] = meshgrid(x,y,z)
Thí dụ:
Hàm
[X,Y] = meshgrid(1:3,10:14)
Tạo hai mảng x và y sau
X =
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
Y =
10 10 10
11 11 11
12 12 12
13 13 13
14 14 14
Hàm Mesh
Cú pháp
mesh(X,Y,Z)
Ví dụ:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
Cho ra đồ thị nh hình vẽ
Trang 9Trong đó R là khoảng cách từ tâm, eps dùng để tránh việc chia cho 0 ở điểm 0,0
V in ấn đồ thị
Tuỳ chọn Print của mênu FILE và lệnh print đều dùng để in đồ thị Tuỳ chọn Print sẽ gọi ra hộp thoại cho phép ngời dùng chọn các tuỳ chọn về in ấn giống nh ở cacs phần mềm khác, còn lệnh print cung cấp chúng ta các khả năng mềm dẻo hơn và cho phép điều khiển việc in đồ thị từ m file Kết quả có thể gửi trực tiếp ra máy in hoặc đợc xếp xắp trong một tệp xác định Các định dạng đầu ra hết sức khác nhau đợc cung cấp ở đây (kể cả PostScript)
Thí dụ: câu lệnh sau đây ghi hình ảnh của màn hình đồ hoạ ra tệp Postscript cấp 2 có tên là magicsquare.eps:
print -depsc2 magicsquare.eps
Một điều hết sức quan trọng là cần phải biết trớc khả năng của máy in trớc khi dùng lệnh print
Ví dụ nh tệp Postscript cấp 2 thờng là gọn hơn và tô bóng nhanh hơn khi in so với tệp Postscript cấp 1 Tuy nhiên không phải tất cả các máy in đều có khả năng làm việc với tệp Postscript cấp 2