You are on page 1of 19

Chương 4: khối lượng hiển thị và đồ họa chuyên

dụng
4.1 Trực quan hóa khối lượng
 coneplot(X, Y, Z, U, V, W, Cx, Cy, Cz,'') vẽ hình nón đồ họa véc tơ
trong các trường véc tơ 3 chiều. (X,Y, Z) xác định tọa độ của trường
vectơ. (U, V, W) xác định trường vectơ. (Cx, Cy, Cz) xác định vị trí
của các hình nón trong trường vectơ. Ngoài ra, chúng có thể bao gồm
các đối số như màu sắc, phương pháp nội suy, ....
Ví Dụ:

>> load wind


xmin = min(x(:)); xmax = max(x(:)); ymin = min(y(:));
ymax = max(y (:)); zmin = min(z(:));
daspect([2 2 1])
xrange = linspace(xmin,xmax,8);
yrange = linspace(ymin,ymax,8);
zrange = 3:4:15;
[cx cy cz] = meshgrid(xrange, yrange, zrange);
hcones = coneplot(x,y,z,u,v,w,cx,cy,cz,5);
set(hcones,'FaceColor','red','EdgeColor','none')

>> hold on
wind_speed = sqrt(u.^2 + v.^2 + w.^2);
hsurfaces = slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin);
set(hsurfaces,'FaceColor','interp','EdgeColor','none')
hold off

>> axis tight; view(30,40); axis off

 contourslice(X, Y, Z, V, Sx, Sy, Sz),contourslice(X, Y, Z, V, Xi, Yi,


Zi) Vẽ các đường viền trong các phần phẳng của thể tích theo các
vectơ (Sx, Sy, Sz). X, Y, Z xác định tọa độ cho thể tích V. Xi, Yi, Zi
xác định bề mặt dọc theo đó đường bao được vẽ.
Ví dụ:
>> [x y z v] = flow;
h = contourslice(x,y,z,v,[1:9],[],[0],linspace(-8,2,10));
axis([0,10,-3,3,-3,3]);
daspect([1,1,1])
set(gcf,'Color',[.5,.5,.5],'Renderer','zbuffer')

 [curlx, curly, curlz, cav] = curl(X,Y,Z,U,V,W) Điều này liên quan


đến độ cong quay và trường vectơ vận tốc góc cav. Các mảng (X, Y,
Z) xác định tọa độ cho trường vectơ (U, V, W). Trong trường hợp
curl(U,V,W), các điều kiện phải là [XYZ] = meshgrid (1:n, 1:m, 1:p)
với [m, n, p] = size(V)
Ví dụ:
>> load wind
cav = curl(x,y,z,u,v,w);
slice(x,y,z,cav,[90 134],[59],[0]);s
hading interpdaspect([1 1 1]);
axis tight
colormap hot(16)
Camlight
 div = divergence(X,Y,Z,U,V,W) Sự phân kỳ của một trường vectơ
Ví dụ:
>> load wind
div = divergence(x,y,z,u,v,w);
slice(x,y,z,div,[90 134],[59],[0]);
shading interp
daspect([1 1 1])
Camlight
colormap jet
 interpstreamspeed(X,Y,Z,U,V,W,vertices) Nội suy các đỉnh sắp
xếp hợp lý dựa trên tốc độ của dữ liệu vectơ
 fvc=isocaps(X,Y,Z,V,isovalor), fvc = isocaps(…,'whichplane') Mối
quan tâm đẳng diện của khối lượng V ở dạng giá trị. X, Y, Z là tọa độ
của thể tích V. Nếu nó không được cung cấp, (X, Y, Z) được cho là
[X, Y, Z] = meshgrid (1: n, 1:m, 1: p) với [m, n, p] = cỡ (V). Giá trị
kèm theo có thể là 'ở trên' hoặc 'ở dưới', chỉ định liệu các chữ hoa đầu
cuối có bao quanh các giá trị dữ liệu ở trên hay dưới giá trị được chỉ
định trong isovalue hay không. Các giá trị có thể được cung cấp cho
tham số whichplane biểu thị mặt phẳng vẽ (tất cả, xmin, xmax, ymin,
ymax, zmin và zmax).
 CN=isocolors(X,Y,Z,C,vertices),CN=isocolors(X,Y,Z,R,G,B,vertic
es),isocolors(…,PatchHandle) Tính toán màu sắc của các đỉnh của
các mặt đẳng diện bằng cách sử dụng các màu được cung cấp dưới
dạng giá trị C hoặc RGB. Các đỉnh PatchHandle có thể được sử dụng.
 isonormals(X,Y,Z,V,vertices) Tính toán các đỉnh bình thường của
các bề mặt đẳng diện. Tùy chọn phủ định thay đổi hướng của các quy
tắc và p là một định danh đối tượng đỉnh. Nếu đối số n không được
liệt kê, các đẳng thức được rút ra.
 isosurface(X,Y,Z,V,isovalue) Trích xuất dữ liệu liên quan đến các
mặt đẳng diện của tập V ở giá trị được chỉ định trong isovalue. Đối số
noshare cho biết các đỉnh được chia sẻ sẽ không được tạo và các
thông báo tiến trình được in ra cửa sổ lệnh khi hàm tiến triển thông
qua các tính toán của nó.
 shrinkfaces(p,sf) Thu gọn kích thước các mặt của đối tượng được
xác định bởi p theo hệ số co sf. Nếu fv và sf được thông qua, các mặt
và đỉnh trong fv được sử dụng.
 smooth3(V) Làm mịn dữ liệu của tập V.
 smooth3(V,'filter',size,sd) Làm mịn bằng Gaussian hoặc bộ lọc hộp.
Bạn có thể sử dụng vô hướng hoặc bộ ba để khử răng cưa (kích
thước) và độ lệch chuẩn (sd); điều này chỉ áp dụng khi chế độ bộ lọc
'gaussian' được sử dụng.
Ví dụ:
>> [x y z] = meshgrid(1:20,1:20,1:20);
data = sqrt(x.^2 + y.^2 + z.^2);
cdata = smooth3(rand(size(data)),'box',7);
p = patch(isosurface(x,y,z,data,10));
isonormals(x, y, z, data, p);
isocolors(x, y, z, cdata, p);
set(p,'FaceColor','interp','EdgeColor','none')
view(150,30); daspect([1 1 1]);
axis tight
camlight;
lighting phong;

 stream2(x,y,u,v,startx,starty) Tìm các dòng của dữ liệu vectơ 2D


hiện tại (u, v) có tọa độ được xác định bởi các mảng (x, y)
 stream3(X,Y,Z,U,V,W,startx,starty,startz) Tìm các dòng của vectơ
dữ liệu 3D hiện tại (u, v, w) có tọa độ được xác định bởi các mảng (x,
y, z)
 streamline(X,Y,Z,U,V,W,startx,starty,startz) Vẽ các đường của
vectơ dữ liệu 2D hoặc 3D hiện tại. (X, Y, Z) là tọa độ của (U, V, W)
và (startx, starty, startz) chỉ vị trí bắt đầu của các dòng.
Ví dụ:
> load wind
[sx,sy] = meshgrid(80,20:10:50);
streamline(stream2(x(:,:,5),y(:,:,5),u(:,:,5),v(:,:,5),sx,sy));
>> load wind
[sx sy sz] = meshgrid(80,20:10:50,0:5:15);
streamline(stream3(x,y,z,u,v,w,sx,sy,sz))
view(3)
 streamparticles(vertices, n) Vẽ vectơ của các hạt trường dữ liệu và
biểu thị chúng bằng các điểm đánh dấu ở các đỉnh 2D hoặc 3D.
 streamribbon(X,Y,Z,U,V,W,startx,starty,startz) Vẽ băng cho dữ
liệu khối lượng vectơ (U, V, W) có tọa độ là mảng (X, Y, Z) bằng
cách sử dụng (startx, starty, startz) để chỉ ra vị trí bắt đầu của băng.
 streamslice(X,Y,Z,U,V,W,startx,starty,startz) Vẽ các dòng dòng
cách đều nhau bằng các phím mũi tên cho dữ liệu âm lượng vectơ (U,
V, W) có tọa độ là (X, Y, Z), các mảng trong đó (startx, starty, startz)
chỉ ra vị trí bắt đầu của các dòng. Mật độ là một số dương sửa đổi
khoảng cách của các dòng, chế độ mũi tên có thể sử dụng các giá trị
arrows hoặc noarrows để đặt hoặc không ở các đầu trong mũi tên và
phương thức cho biết loại nội suy (tuyến tính, bậc ba hoặc gần nhất).
 streamtube(X,Y,Z,U,V,W,startx,starty,startz) Vẽ các ống từ dữ
liệu thể tích vectơ (U, V, W) có tọa độ là các mảng (X, Y, Z); (startx,
starty, startz) cho biết vị trí bắt đầu của các ống. Nếu các tham số đỉnh
và phân kỳ được sử dụng, thì dự kiến [XYZ] của các đỉnh có kích
thước là lưới lưới (1:n, 1:m, 1:p) trong đó [MNP] = kích thước (phân
kỳ); chiều rộng cho biết chiều rộng của các ống (có thể bị ảnh hưởng
bởi tham số tỷ lệ n)
 surf2patch(h) Chuyển đổi một bề mặt đã cho trả về các mặt, đỉnh và
cấu trúc màu thành cấu trúc được định dạng bản vá fvc. Đối tượng
thậm chí có thể được đưa ra dưới dạng một bề mặt ở các dạng khác
nhau của nó. Bạn cũng có thể tạo các mặt hình tam giác bằng cách sử
dụng đối số hình tam giác.
 [Nx, Ny, Nz, Nv] = subvolume(X,Y,Z,V,limits) Trích xuất một tập
hợp con của âm lượng V (X, Y, Z) bằng cách sử dụng các giới hạn đã
cho (giới hạn = [xmin, xmax, ymin, ymax, zmin, zmax])
 volumebounds(X,Y,Z,U,V,W) Cung cấp tọa độ và ranh giới màu
cho tập V (U, V, W) có tọa độ là mảng (X, Y, Z).
 flow(x,y,z) Tạo dữ liệu lưu lượng chất lỏng hữu ích trong các chức
năng trình bày dữ liệu âm lượng. Khi các tham số x, y và z được sử
dụng, cấu hình tốc độ được đánh giá.
4.2 Đồ họa chuyên dụng
Có một số loại đồ họa chuyên dụng có thể được thực hiện với MATLAB
(khu vực, hộp, đồ họa, khu vực ba chiều của Pareto, v.v.) bằng cách sử
dụng các lệnh
 area(Y) Làm cho đồ thị diện tích tỷ lệ với các giá trị liên quan đến
vectơ tần số.
 area(X, Y) Khi X được cung cấp, nó đại diện cho các giá trị của trục
X, tại đó mỗi giá trị Y tương ứng sẽ được vẽ trên đồ thị.
 area(...,ymin) Chỉ định giới hạn dưới theo hướng trục Y của vùng tô
Ví dụ:

>> Y = [1, 5, 3;3, 2, 7;1, 5, 3;2, 6, 1];


area(Y)
grid on
colormap summer

 comet(y) Làm cho đồ họa sao chổi tương đối với vectơ tần số y
 comet(x, y) Biểu diễn đồ thị sao chổi tương ứng với vectơ tần số Y có
các phần tử được cho bởi vectơ X.
 comet(x, y, p) Đồ thị sao chổi với phần thân có chiều dài p * chiều
dài
Ví dụ:

>> t = 0:.01:2 * pi;


x = cos(2*t) .* (cos (t) .^ 2);
y = sin(2*t) .* (sin (t) .^ 2);
comet(x,y);

 ezcontour(f ) Đồ thị của đường bao f(x,y) trong [-2p, 2p] x [-2p, 2p].
Vì vậy, cả tham số x và y trong hàm đều được đánh giá trong phạm vi
từ -2pi đến +2pi.
 ezcontour(f, domain) Đồ thị đường bao f(x,y) trong miền xác định
 ezcontour(...,n) Đồ thị đường bao f(x,y) trong lưới n x n
 ezcontourf(f ) Đồ thị đường bao f(x,y) điền vào [-2p, 2p] x [-2p, 2p].
Cả tham số x và y trong hàm đều được đánh giá trong phạm vi từ -2pi
đến +2pi.
 ezcontourf(f, domain) Đồ thị đường bao f(x,y) điền vào miền đã cho
 ezcontourf(...,n) Đồ thị của đường viền f(x,y) được giới hạn trong
lưới n x n
Ví dụ:

>> f = ['3 *(1-x)^2 * exp (-(x^2)-(y + 1)^2)','-10 *(x/5-x^3-y^5) * exp(-


x^2-y^2)', '-1/3 * exp (-(x + 1)^2 - y^2)'];
>> ezcontour(f,[-3,3],49)
>> ezcontourf(f,[-3,3],49)

 ezmesh(f ) Đồ thị của lưới f(x,y) lấp đầy tại [-2p, 2p] x [-2p, 2p]. Cả
tham số x và y trong hàm đều được đánh giá trong phạm vi từ -2pi
đến +2pi.
 ezmesh(f,domain) Lưới đồ họa của f(x,y) điền vào miền đã cho
 ezmesh(...,n) Đồ thị đệm lưới f(x,y) trong lưới nxn
 ezmesh(x, y, z) Lưới đồ họa cho x = x(t,u), y = y(t,u), z = z(t,u) t,u∈[-
2π, 2π ]
 ezmeshc(f ) Thực hiện kết hợp đồ thị dạng lưới và đường viền.
 ezplot3(x, y, z) đường cong tham số 3D x = x (t), y = y(t), z = z (t) t∈
[0, 2 π ]
Ví dụ:

.>> ezmeshc('y /(1 + x^2 + y^2)', [- 5, 5 - 2 * pi, 2 * pi])


colormap jet
 ezsurfc(f ) Thực hiện kết hợp các đồ thị bề mặt và đường viền
Ví dụ:

>> ezsurfc('y/(1 + x^2 + y^2)', [- 5, 5 - 2 * pi, 2 * pi], 35)

 ezplot3(x, y, z) đường cong tham số 3D x = x (t), y = y(t), z = z (t) t∈


[0, 2 π ]
Ví dụ:

>>ezplot3('sin(t)','cos(t)',
't’,[0,6*pi])

 pareto(Y) Làm cho đồ họa liên quan đến vectơ giá trị Pareto của tần
số
 pie3(X) Biểu đồ giá trị tần số hình tròn 3-D cho X
 pie3(X, explode) Biểu đồ tròn ba chiều tách rời
Ví dụ:

>> x = [1 3 0.5 2.5 2];


explode = [0 1 0 0 0];
pie3(x, explode)
colormap hsv

 plotmatrix(X, Y) Biểu đồ phân tán của các cột của X so với Y


 quiver(X, Y, U, V) Vẽ đồ thị vận tốc của các vectơ có thành phần (u,
v) tại các điểm (x, y).
 ribbon(x,y) Vẽ biểu đồ X dựa trên các cột của Y.
Ví dụ:

>> [x, y] = meshgrid(-3:.5:3,-3:.1:3);


z = peaks(x,y);
ribbon(y, z)
colormap hsv

 stairs(X, Y) Đồ họa bậc thang với các phần tử Y tương ứng với X.
Ví dụ:
>> x = 0:.25:10;stairs(x,sin(x))
 scatter(X,Y,S,C) Độ phân tán cho đồ thị véc tơ (X, Y) theo màu C và
diện tích của mỗi điểm đánh dấu S.
 scatter3(X,Y,Z,S,C) Đồ họa các vectơ phân tán ba chiều (X, Y, Z)
theo màu C và diện tích của từng điểm đánh dấu S. Bạn cũng có thể
tô đồ họa (tùy chọn điền) và sử dụng các loại điểm đánh dấu khác
nhau.
Ví dụ:

>> [x, y, z] = sphere(16);


X = [x(:) *.5 x(:) *.75 x(:)];
Y = [y(:) *.5 y(:) *.75 y(:)];
Z = [z(:) *.5 z(:) *.75 z(:)];
S = repmat([1 0.75 0.5] * 10, prod(size(x)),1);
C = repmat([1 2 3],prod(size(x)),1);
scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'), view(-60,60)

 polyarea(X, Y) vẽ diện tích của đa giác xác định bởi vectơ X và Y.


Ví dụ:

>> L = linspace(0,2.*pi,6);
xv = cos(L)';
yv = sin(L)';
xv = [xv; xv(1)];
yv = [yv ; yv(1)];
A = polyarea(xv,yv);
plot(xv,yv);
title(['Area = ' num2str(A)]);
axis image

4.3 Các hình dạng hình học 3D đặc biệt


MATLAB cung cấp các lệnh để biểu diễn các hình dạng hình học trong
ba chiều, chẳng hạn như hình trụ, hình cầu, hình que, mặt cắt, thân cây,
thác nước, v.v. Cú pháp của các lệnh
 bar3(Y) Biểu đồ thanh liên quan đến vectơ giá trị tần số Y. Nếu một
ma trận, nó nhận được nhiều biểu đồ thanh cho mỗi hàng của Y.
 bar3(x,Y) Biểu đồ thanh liên quan đến vectơ giá trị Y trong đó x là
vectơ xác định khoảng trống trong trục x để định vị các thanh.
 bar3(…,width) Đồ thị với chiều rộng nhất định của các thanh. Theo
mặc định, chiều rộng là 0,8 và chiều rộng là 1 khiến các thanh chạm
vào nhau.
 bar3(…,'style') Vẽ đồ thị với các thanh kiểu đã cho. Các kiểu là 'tách
rời' (kiểu mặc định) 'được nhóm' (kiểu có các thanh dọc được nhóm
lại) và 'xếp chồng lên nhau' (các thanh xếp chồng lên nhau).
 bar3(…,color) Tất cả các thanh đều có màu được chỉ định (r = đỏ, g
= lục, b = lam, c = lục lam, m = đỏ tươi y = vàng, k = đen và w =
trắng)
 comet3(z) Đồ thị tương đối với vectơ Sao chổi z
 comet3(x, y, z) Đồ thị sao chổi với các tham số (x(t), y(t), z(t))
 comet3(x, y, z, p) Đồ thị sao chổi của một con diều có chiều dài p *
chiều dài (y).
Ví dụ:
>> t = - 10 * pi: pi / 250:10 * pi;
comet3((cos(2*t) .^ 2) .* sin(t),(sin(2*t) .^ 2) .* cos(t),t);

 [X, Y, Z] = cylinder Nó cho tọa độ của hình trụ đơn vị.


 [X, Y, Z] = cylinder(r) Nó đưa ra tọa độ của hình trụ được tạo bởi
đường cong r.
 [X,Y, Z] = cylinder(r, n) Cung cấp tọa độ của hình trụ được tạo bởi
đường cong r với n điểm trên chu vi thẳng hàng với phần nằm ngang
với trục Z (n = 20 theo mặc định).
Ví dụ:
>> cylinder
axis square
 sphere(n) Tạo một hình cầu sử dụng n x n.
Ví dụ:
>> sphere
axis equal

 [X, Y, Z] = sphere(n) Cho tọa độ của mặt cầu trong ba mảng (n + 1)


x (n + 1).
 slice(X,Y,Z,V,XI,YI,ZI) Vẽ các vết cắt được xác định bởi các ma
trận (XI, YI, ZI) tạo ra một bề mặt trong thể tích V, được xác định bởi
các mảng ba chiều (X, Y, Z).
 slice(…,'method') Vẽ các vết cắt theo phương pháp nội suy đã chỉ
định (tuyến tính, bậc ba và gần nhất).
 stem3(Z) Vẽ dãy Z dưới dạng đồ thị các gốc trong mặt phẳng (x, y).
 stem3(…,'fill') Tô màu vào các vòng tròn ở đầu thân cây.
 stem3(…,S) Làm cho thân cây sử dụng biểu đồ thông số kỹ thuật S
(màu sắc,…).
Ví dụ:
>> X = linspace(0,1,10);
Y = X / 2;
Z = sin (X) + cos (Y);
stem3(X,Y,Z,'fill')

 waterfall(X,Y,Z) Vẽ biểu đồ tầng theo các giá trị của X, Y, Z.


 waterfall(…,C) Vẽ biểu đồ tầng với colormap C.
 quiver3(X,Y,Z,U,V,W) Vẽ các vectơ thành phần (u, v, w) tại các
điểm (x, y, z).

4.4 In, xuất và các tác vụ khác với đồ họa


MATLAB cho phép bạn in đồ họa, chọn tùy chọn máy in và lưu tệp đồ
họa
 orient Đặt hướng giấy để in trên giá trị của bạn theo mặc định.
 orient landscape Đặt hướng in ngang.
 orient portrait Đặt hướng in dọc.
 orient tall In toàn bộ trang theo hướng dọc
 Pagesetupdlg Trình bày một hộp thoại để quản lý vị trí của hình ảnh.
 print -device options file In biểu đồ thành một tệp với các tùy chọn
thiết bị đã cho.
 Printdlg In hình hiện tại.
 printdlg(fig) Tạo một hộp thoại để in được xác định bởi hình.
 saveas(h,'file','format') Lưu tệp hình h trong tệp có định dạng đồ
họa được chỉ định.

You might also like