Tải bản đầy đủ

BÀI 5 đồ họa TRONG MATLAB

bà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ổ
3. 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ẽ

III Điều khiển các trục toạ độ
1. câu lệnh axis
Hàm axis có một 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.
xlabel(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;
text(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 :
(...., 'Property Name',...).
ở đây:
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 ' ')
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
Tên thuộc tính
ý nghĩa
giá trị
' 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- 'Top', 'Bottom', 'Middle'
ơng thẳng đứng
'HorizontalAlignment'
Quy định kiểu căn chỉnh theo ph- 'Left', 'Center', 'Right'
ơng ngang
'FontSize'
quy định cỡ chữ
số nguyên
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ự
Biểu tChuỗi ký tự
Biểu tChuỗi ký tự điều
Biểu tđiều khiển
ợng
điều khiển
ợng
khiển
ợng


\alpha
\beta
\gamma
\delta
\epsilon
\zeta
\eta
\theta
\vartheta
\iota
\kappa
\lambda

\upsilon
\sim
~
\phi
\leq
\chi
\infty
\psi
\clubsuit
\omega
\diamondsuit
\Gamma
\heartsuit
\Delta
\spadesuit
\Theta
\leftrightarrow
\Lambda
\leftarrow
\Xi
\uparrow
\Pi
\rightarrow
\Sigma
\downarrow
\mu
\Upsilon
\circ
à

\nu
\Phi
\pm

\xi
\Psi
\geq
\pi
\Omega
\propto
\rho
\forall
\partial
\sigma
\exists
\bullet

\varsigma
\ni
\div

\tau
\cong
\neq
\equiv
\approx
\aleph
\Im
\Re
\wp
\otimes
\oplus
\oslash
\cap
\cup
\supseteq
\supset
\subseteq
\subset
\int
\in
\o
\rfloor
\lceil
\nabla
\lfloor
\cdot
ã
\ldots
...
\perp
'
\neg
ơ
\prime
\wedge
\times
x
\0
\rceil
\surd
\mid
|
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ẽ:

6. 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ị:
Tên thuộc tính
ý nghĩa
'LineWidth'
điều khiển bề dầy của nét vẽ đồ thị

kiểu giá trị
số nguyên


'MarkerEdgeColor'
'MarkerSize'
'MarkerFaceColor'

Điều khiển màu của nét vẽ biểu tợng đánh
dấu điểm
Kích thớc của biểu tợng đánh dấu điểm
Đ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'...
số nguyên
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
x,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ẽ

Trong đó 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.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×