Toán học - Chương 4: Đồ họa với matlab

pdf16 trang | Chia sẻ: minhhong95 | Lượt xem: 1558 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Toán học - Chương 4: Đồ họa với matlab, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chương 4 :Ðồ họa với MATLAB 
 55
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Chương 4 
ÐỒ HỌA VỚI MATLAB 
4.1. Ðiểm và đường 
4.1.1. Hàm Plot - Vẽ các điểm và đường trong mặt phẳng (2D) 
 Phần lớn các câu lệnh để vẽ đồ thị trong mặt phẳng đều là lệnh plot. Lệnh plot vẽ 
đồ thị của một mảng dữ liệu trong một hệ trục thích hợp và nối các điểm bằng đường 
thẳng. 
Ví dụ: 
>>x=linspace(0,2*pi,30); 
>> y=sin(x); 
>> plot(x,y) 
Lệnh plot mở ra cửa sổ đồ họa gọi là cửa sổ figure: 
 Trong cửa sổ này nó sẽ tạo ra độ chia phù hợp với dữ liệu, vẽ đồ thị qua các 
điểm, và đồ thị được tạo thành bởi việc nối các điểm này bằng đường nét liền. 
 Có thể vẽ nhiều hơn một đồ thị trên cùng một hình vẽ bằng cách đưa thêm vào 
plot một cặp đối số, plot tự động vẽ đồ thị thứ hai bằng màu khác trên màn hình. Nhiều 
đường cong có thể cùng vẽ một lúc nếu như cung cấp đủ cặp đối số cho lệnh plot. 
Ví dụ: ta cũng có thể sử dụng cùng hệ trục của ví dụ trên để vẽ thêm đồ thị cosx 
>>z=cos(x); 
Chương 4 :Ðồ họa với MATLAB 
 56
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
 Nếu như ta thay đổi trật tự các đối số thì đồ thị sẽ xoay một góc bằng 90o. 
>> plot(y,x,z,x) 
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
0
1
2
3
4
5
6
7
4.1.4. Kiểu đường, đánh dấu và màu sắc 
 MATLAB mặc định đường vẽ là đường liền, không đánh dấu, màu xanh da trời. 
Ta có thể thay đổi kiểu đường vẽ và đánh dấu lên đồ thị bằng cách đưa vào một đối số 
thứ ba. Các đối số tùy chọn này là một xâu kí tự, có thể chứa một hoặc nhiều hơn theo 
bảng dưới đây. 
 Nếu một màu, dấu và kiểu đường tất cả đều chứa trong một xâu, thì kiểu màu 
chung cho cả dấu và kiểu nét vẽ. Ðể khai báo màu khác cho dấu, ta phải vẽ cùng một dữ 
liệu với các kiểu khai báo chuỗi khác nhau. 
Biểu 
tượng 
Màu Biểu 
tượng 
Ðánh dấu Biểu 
tượng 
Kiểu nét vẽ 
b xanh da trời . chấm - nét liền 
g xanh lá cây o vòng tròn : nét chấm 
Chương 4 :Ðồ họa với MATLAB 
 57
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
r đỏ x dấu x -. nét gạch - chấm 
c xanh da trời nhạt + dấu + -- nét đứt 
m đỏ tím * dấu hoa thị 
y vàng s hình vuông 
k đen d hình thoi 
w trắng ∧ tam giác hướng xuống 
 ∨ tam giác hướng lên 
 < tam giác hướng phải 
 > tam giác hướng trái 
 p sao năm cánh 
 h sao sáu cánh 
Ví dụ: 
>>plot(x,y,'m*',x,y,'b--') 
 Ðộ rộng của đường vẽ (lines) được xác định kèm với mô tả Linewidth trong lệnh 
plot. Ðộ rộng đường vẽ được mặc định là 0.5 point ≈ 1/72 inch. 
 Chiều cao của dấu (marker) được xác định kèm với mô tả Markersize trong lệnh 
plot. Chiều cao của dấu được mặc định là 6 point. 
Ví dụ: 
>>plot(x,y,'p-','linewidth',4,'markersize',6) 
Chương 4 :Ðồ họa với MATLAB 
 58
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
 Ngoài ra, để xem thứ tự các màu trong MATLAB, ta gõ lệnh: 
>> get(gca,'colororder') 
ans = 
 0 0 1.0000 
 0 0.5000 0 
 1.0000 0 0 
 0 0.7500 0.7500 
 0.7500 0 0.7500 
 0.7500 0.7500 0 
 0.2500 0.2500 0.2500 
Theo thứ tự trên thì: 
 0 0 1 : màu xanh da trời (‘b’) 
 0 0.5 0 : màu xanh lá cây (‘g’) 
 1 0 0 : màu đỏ (‘r’) 
 0 0.75 0.75 : màu xanh da trời nhạt (‘c’) 
 0.75 0 0.75 : màu hồng nhạt (‘m’) 
 0.75 0.75 0 : màu vàng (‘y’) 
 0.25 0.25 0.25 : màu xám 
Ngoài 7 màu trên, ta có thể sử dụng thêm 2 màu cơ bản là màu đen và màu trắng 
 0 0 0 : màu đen (‘k’) 
 1 1 1 : màu trắng (‘w’) 
Thay đổi giá trị các số mã màu ta có thể có nhiều màu khác nữa. 
Ví dụ: 
 0.4 0 0 : màu đỏ đậm 
 0.5 0.5 0.5 : màu xám vừa phải 
4.1.3. Ðồ thị lưới, hộp chứa trục, nhãn và lời chú giải 
 Lệnh grid on sẽ thêm đường lưới vào đồ thị hiện tại. Lệnh grid off xóa bỏ các 
nét này. 
Chương 4 :Ðồ họa với MATLAB 
 59
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x
y
do thi ham sin va cos
y = sinx
z = cosx
 Ta có thể đưa tên trục x, y và tên của đồ thị vào hình vẽ nhờ các lệnh xlabel và 
ylabel. Lệnh title sẽ thêm vào đồ thị tiêu đề ở đỉnh. 
 Dòng ghi chú được đưa vào đồ thị nhờ hàm legend. Trong legend thì màu và 
kiểu của mỗi loại đường phù hợp với các đường đó trên đồ thị. 
Ví dụ: 
>> x=linspace(0,2*pi,30); 
>> y=sin(x); 
>> z=cos(x); 
plot(x,y,'mx-',x,z,'bp--') 
>> grid on 
>> xlabel('x') 
>> ylabel('y') 
>> title('do thi ham sin va cos') 
>> legend ('y = sinx','z = cosx') 
4.1.3. Thao tác với đồ thị 
 Ta có thể thêm nét vẽ vào đồ thị đã có sẵn bằng cách dùng lệnh hold. Khi dùng 
lệnh hold on, MATLAB không bỏ đi hệ trục đã tồn tại trong khi lệnh plot mới đang được 
thực hiện, thay vào đó, nó thêm đường cong mới vào hệ trục hiện tại. Tuy nhiên, nếu dữ 
liệu không phù hợp hệ trục tọa độ cũ, thì trục được chia lại. Dùng lệnh hold off sẽ bỏ đi 
cửa sổ figure hiện tại và thay vào bằng một đồ thị mới. Lệnh hold không có đối số sẽ bật 
tắt chức năng của chế độ thiết lập hold trước đó. 
Ví dụ: 
>> x=linspace(0,2*pi,30); 
>> y=sin(x); 
>> z=cos(x); 
>>plot(x,y) 
>> plot(x,y) 
Chương 4 :Ðồ họa với MATLAB 
 60
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Bây giờ giữ nguyên đồ thị và thêm vào đường cos: 
>> hold on 
>> plot(x,z,'m') 
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
 Mặt khác, một cửa sổ figure có thể chứa nhiều hơn một hệ trục. Lệnh 
subplot(m,n,p) chia cửa sổ hiện tại thành một ma trận m x n khoảng để vẽ đồ thị, và 
chọn p là cửa sổ hoạt động. Các đồ thị thành phần được đánh số từ trái qua phải, từ trên 
xuống dưới, sau đó đến hàng thứ hai 
Ví dụ: 
>> subplot(2,2,1) 
>> plot(x,y) 
>> subplot(2,2,2) 
>> plot(y,x) 
>> subplot(2,2,3) 
>> plot(x,z) 
>> subplot(2,2,4) 
Chương 4 :Ðồ họa với MATLAB 
 61
0 2 4 6 8
-1
-0.5
0
0.5
1
-1 -0.5 0 0.5 1
0
2
4
6
8
0 2 4 6 8
-1
-0.5
0
0.5
1
-1 -0.5 0 0.5 1
0
2
4
6
8
-1
0
1
-1
0
1
0
10
20
30
40
sint
helix
cost
-1
0
1 -1
-0.5
0
0.5
1
0
10
20
30
40
cost
helix
sint
>> plot(z,x) 
4.1.5. Hàm plot3 - Vẽ điểm và đường trong không gian 
 Hàm plot3 cho phép vẽ các điểm và đường trong không gian. Ngoài việc có thêm 
trục z, cách sử dụng hàm này giống như cách sử dụng hàm plot. 
Ví dụ: 
>> t=linspace(0,10*pi); 
>> subplot(1,2,1) 
>> plot3(sin(t),cos(t),t) 
>> xlabel('sint') 
>> ylabel('cost') 
>> title('helix') 
>> subplot(1,2,2) 
>> plot3(sin(t),cos(t),t) 
>> view([10,35]) 
>> xlabel('sint') 
>> ylabel('cost') 
>> title('helix') 
 Trong tập hợp các lệnh trên, chúng ta gặp lệnh: 
 View([α,β]): α là góc phương vị tính bằng độ ngược chiều kim đồng hồ từ phía 
âm của trục y. Giá trị mặc định của α là -37.5o. β là góc nhìn tính bằng độ xuống mặt 
phẳng x, y. Giá trị mặc định của β là 30o. Khi thay đổi các giá trị α và β sẽ nhìn được 
hình vẽ dưới các góc độ khác nhau. 
 Với tập hợp lệnh trên, khi cho các giá trị α và β lần lượt là 0o và 90o ta sẽ thấy rõ 
hàm vẽ 2D là một trường hợp đặc biệt của hàm vẽ 3D. 
4.1.6. Các hàm vẽ loglog, semilogx và semilogy vẽ các đường trong mặt phẳng 
- loglog: tương tự như plot nhưng thang chia là logarithm cho cả hai trục. 
Chương 4 :Ðồ họa với MATLAB 
 62
- semilogx: tương tự như plot nhưng thang chia của trục x là logarithm còn thang chia 
trục y là tuyến tính. 
- semilogy: tương tự như plot nhưng thang chia của trục y là logarithm còn thang chia 
của trục x là tuyến tính. 
Ví dụ: 
>> x=[2:4:98]; 
>> y=100*x; 
>> subplot(1,2,1) 
>> plot(x,y,'.') 
>> title('plot(x,y)') 
>> xlabel('x tuyen tinh') 
>> ylabel('y tuyen tinh') 
>> grid on 
>> subplot(1,2,2) 
>> loglog(x,y,'.') 
>> title('loglog(x,y)') 
>> xlabel('x log') 
>> ylabel('y log') 
>> grid on 
>> x=[2:4:98]; 
>> y=100*x; 
>> subplot(1,2,1) 
>>semilogx(x,y,'.') 
>>title('semilogx(x,y)') 
>>xlabel('x log') 
>>ylabel('y tuyen tinh') 
>>grid on 
>> subplot(1,2,2) 
>>semilogy(x,y,'.') 
>>title('semilogy(x,y)') 
>>xlabel('x tuyen tinh') 
>>ylabel('y log') 
>>grid on 
 MATLAB không có các hàm vẽ tương ứng với loglog, semilogx, semilogy trong 
không gian. Vì vậy, muốn vẽ với hệ tọa độ logarithm trong không gian 3D, ta phải sử 
dụng hàm plot3. Chế độ tuyến tính luôn được mặc định. Ðể thay đổi tỷ lệ trên các trục 
sang tỷ lệ logarithm, ta dùng lệnh: 
set(gca,’Xscale’,’log’) 
Ví dụ: 
0 50 100
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
plot(x,y)
x tuyen tinh
y 
tu
ye
n 
tin
h
100 101 102
102
103
104
loglog(x,y)
x log
y 
lo
g
100 101 102
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
semilogx(x,y)
x log
y 
tu
ye
n 
tin
h
0 50 100
102
103
104
semilogy(x,y)
x tuyen tinh
y 
lo
g
Chương 4 :Ðồ họa với MATLAB 
 63
-1
0
1
-1
0
1
0
0.2
0.4
0.6
0.8
1
x
Ve 3D voi truc z tuyen tinh
y
z
-1
0
1
-1
0
1
10-2
10-1
100
x
Ve 3D voi truc z logarith
y
z 
lo
g
>> t=[0.01:0.005:0.99]; 
>> x=cos(20*pi*t); 
>> y=sin(20*pi*t); 
>> z=t; 
>> subplot(1,2,1) 
>>plot3(x,y,z) 
>>set(gca,'Zscale','linear') 
>>title('Ve 3D voi truc z 
tuyen tinh') 
>>xlabel('x') 
>>ylabel('y') 
>>zlabel('z') 
>> grid on 
>>subplot(1,2,2) 
>>plot3(x,y,z) 
>>set(gca,'Zscale','log') 
>>title('Ve 3D voi truc z 
logarith') 
>>xlabel('x') 
>>ylabel('y') 
>>zlabel('z log') 
>> grid on 
4.1.7. Ðồ thị bánh (pie) và đồ thị cột (bar) 
4.1.7.1. Ðồ thị bánh 
 Ðể vẽ đồ thị bánh trong mặt phẳng ta dùng hàm pie, còn muốn vẽ trong không 
gian, ta dùng hàm pie3. Về mặt cú pháp hai hàm pie và pie3 giống nhau. Cú pháp có 
dạng: 
pie(V) 
 Trong đó V là vectơ chứa các phần tử được thể hiện trên đồ thị bánh. Nếu tổng 
các phần tử trong vectơ nhỏ hơn hoặc bằng 1 thì đồ thị bánh sẽ thể hiện các phần tử như 
là thành phần phần trăm. Nếu tổng các phần tử lớn hơn 1, thì mỗi phần tử được chia cho 
tổng đó để xác định phần chia trên đồ thị bánh ứng với mỗi phần tử. 
 Thứ tự phân chia trên đồ thị bánh theo đúng thứ tự phần tử mô tả trong vectơ. 
Ðường chia đầu tiên là đường nối tâm và điểm cao nhất trên đường tròn, các đường kế 
tiếp được phân chia theo thứ tự ngược chiều kim đồng hồ. 
 Muốn tách phần chia nào đó ra khỏi đồ thị thì ta thêm vào hàm pie một vectơ nữa 
có cùng kích thước với vectơ được mô tả ở trên. Phần tử của vectơ này tương ứng với 
phần cần tách ra khỏi đồ thị thì ta cho giá trị khác 0, phần tử tương ứng với phần không 
tách ra ta cho giá trị bằng 0. 
 Các màu của từng phần trong đồ thị bánh được MATLAB lựa chọn không trùng 
nhau và rất dễ phân biệt. 
Chương 4 :Ðồ họa với MATLAB 
 64
Ví dụ: 
Trong một sản phẩm hoàn thiện có 5 chi tiết của phân xưởng A, 12 chi tiết của phân 
xưởng B, 15 chi tiết của phân xưởng C và 20 chi tiết của phân xưởng D. Ta thể hiện số 
phần trăm chi tiết của mỗi phân xưởng trong sản phẩm hoàn thiện đó trên đồ thị bánh 
bằng hàm pie như sau: 
>> subplot(2,1,1) 
>> pie([5 12 15 20]) 
>> subplot(2,1,2) 
>> pie([5 12 15 20],[0 0 0 1]) 
>> pie([5 12 15 20],{'xuong A','xuong B','xuong C','xuong D'}) 
4.1.7.4. Đồ thị cột (bar) 
 Hàm bar và bar3 cho phép vẽ đồ thị trong mặt phẳng và trong không gian. 
 Hàm barh và hàm barh3 cho phép vẽ đồ thị cột nằm ngang trong mặt phẳng và 
trong không gian. 
Cú pháp: bar(Vx, Vy, kích thước) 
 Trong đó Vx và Vy là những vectơ có cùng kích thước, các giá trị độ cao của cột 
trong Vy sẽ tương ứng với các giá trị trên trục ngang của Vx, điều chú ý quan trọng là các 
giá trị trong Vx phải đơn điệu tăng hoặc giảm. Tham số kích thước xác định bề rộng của 
cột. 
Ví dụ: Vẽ đồ thị cột với các số liệu: 
X Y 
2 7.5 
3 5.2 
4 3 
>> bar([2 3 4],[7.5 5.2 3],0.4) 
10%
23%
29%
38%
10%
23%
29%
38%
xuong A
xuong B
xuong C
xuong D
Chương 4 :Ðồ họa với MATLAB 
 65
 Nếu ta không đưa vào các giá trị của X, nghĩa là trong hàm bar vừa sử dụng ta bỏ [2 
3 4], thì MATLAB sẽ mặc định các giá trị của X là [1 2 3]. Trong trường hợp Vy là ma trận 
thì số nhóm cột chính bằng kích thước của vectơ Vx. 
Ví dụ: thể hiện đồ thị cột với các số liệu sau: 
X Y 
1 7.5 
6 
4 
3 5.2 
3 
5 
>> bar([1 3],[7.5 6 4;5.2 3 5],0.4) 
1 3
0
1
2
3
4
5
6
7
8
2 3 4
0
1
2
3
4
5
6
7
8
Chương 4 :Ðồ họa với MATLAB 
 66
4.4. Vẽ các mặt 
4.4.1. Vẽ các mặt từ một ma trận bằng các lệnh mesh, meshz, meshc, waterfall 
 MATLAB định nghĩa bề mặt lưới bằng các điểm theo hướng trục z ở trên đường kẻ 
ô hình vuông trên mặt phẳng x - y. Nó tạo lên mẫu một đồ thị bằng cách ghép các điểm gần 
kề với các đường thẳng. Kết quả là nó trông như một mạng lưới đánh cá với các mắc lưới là 
các điểm dữ liệu. Đồ thị lưới này thường được sử dụng để quan sát những ma trận lớn hoặc 
vẽ những hàm có hai biến. 
 Bước đầu tiên là đưa ra đồ thị lưới của hàm hai biến z = f(x,y), tương ứng với ma 
trận X và Y chứa các hàng và các cột lặp đi lặp lại, MATLAB cung cấp hàm meshgrid cho 
mục đích này: 
 [X,Y] = meshgrid (x,y): tạo một ma trận X, mà các hàng của nó là bản sao của vetơ 
x, và ma trận Y có các cột của nó là bản sao của vectơ y. Cặp ma trận này sau đó được sử 
dụng để ước lượng hàm hai biến sử dụng đặc tính toán học về mảng của MATLAB. 
 Để vẽ bề mặt ta sử dụng các hàm: 
mesh (X,Y,Z): nối các điểm với nhau trong một lưới chữ nhật. 
meshc (X,Y,Z): vẽ các đường contour bên dưới đồ thị. 
meshz (X,Y,Z): vẽ các đường thẳng đứng viền quanh đồ thị. 
waterfall X,Y,Z): vẽ mặt với hiệu ứng như thác đổ. 
Ví dụ: Vẽ mặt xác định bởi phương trình: ( ) 22, yxxeyxz −−= 
>> x=-2:0.5:2; 
>> y=-2:1:2; 
>> [X,Y]=meshgrid(x,y) 
X = 
 Columns 1 through 6 
 -4.0000 -1.5000 -1.0000 -0.5000 0 0.5000 
 -4.0000 -1.5000 -1.0000 -0.5000 0 0.5000 
 -4.0000 -1.5000 -1.0000 -0.5000 0 0.5000 
 -4.0000 -1.5000 -1.0000 -0.5000 0 0.5000 
 -4.0000 -1.5000 -1.0000 -0.5000 0 0.5000 
 Columns 7 through 9 
 1.0000 1.5000 4.0000 
 1.0000 1.5000 4.0000 
 1.0000 1.5000 4.0000 
 1.0000 1.5000 4.0000 
 1.0000 1.5000 4.0000 
Y = 
 -2 -2 -2 -2 -2 -2 -2 -2 -2 
Chương 4 :Ðồ họa với MATLAB 
 67
 -1 -1 -1 -1 -1 -1 -1 -1 -1 
 0 0 0 0 0 0 0 0 0 
 1 1 1 1 1 1 1 1 1 
 2 2 2 2 2 2 2 2 2 
>> Z=X.*exp(-X.^2-Y.^2) 
Z = 
 Columns 1 through 6 
 -0.0007 -0.0029 -0.0067 -0.0071 0 0.0071 
 -0.0135 -0.0582 -0.1353 -0.1433 0 0.1433 
 -0.0366 -0.1581 -0.3679 -0.3894 0 0.3894 
 -0.0135 -0.0582 -0.1353 -0.1433 0 0.1433 
 -0.0007 -0.0029 -0.0067 -0.0071 0 0.0071 
 Columns 7 through 9 
 0.0067 0.0029 0.0007 
 0.1353 0.0582 0.0135 
 0.3679 0.1581 0.0366 
 0.1353 0.0582 0.0135 
 0.0067 0.0029 0.0007 
>> subplot(1,2,1) 
>> mesh(X,Y,Z) 
>> xlabel('x') 
>> ylabel('y') 
>> zlabel('z') 
>> title('ve mat voi lenh mesh') 
>> subplot(1,2,2) 
>> meshc(X,Y,Z) 
>> xlabel('x') 
>> ylabel('y') 
>> zlabel('z') 
>>title('ve mat voi lenh meshc') 
-2
0
2
-2
0
2
-0.4
-0.2
0
0.2
0.4
x
ve mat voi lenh mesh
y
z
-2
0
2
-2
0
2
-0.4
-0.2
0
0.2
0.4
x
ve mat voi lenh meshc
y
z
Chương 4 :Ðồ họa với MATLAB 
 68
>> subplot(1,2,1) 
>> meshz(X,Y,Z) 
>> xlabel('x') 
>> ylabel('y') 
>> zlabel('z') 
>> title('ve mat voi lenh meshz') 
>> subplot(1,2,2) 
>> waterfall(X,Y,Z) 
>> xlabel('x') 
>> ylabel('y') 
>> zlabel('z') 
>> title('ve mat voi lenh 
waterfall') 
Lưu ý khi sử dụng hàm mesh khi có các số phức hoặc đại lượng không phải là số 
(NaN - not a number) 
Ví dụ: phương trình của một bán cầu: 221 yxz −−= 
>> x=-1:0.2:1; 
>> y=-1:0.2:1; 
>> [X,Y]=meshgrid(x,y); 
>> Z=sqrt(1-X.^2-Y.^2); 
>> mesh(X,Y,Z) 
??? Error using ==> surface 
X, Y, Z, and C cannot be complex. 
 Nhận thấy rằng trong ma trận Z có một số phần tử phức. Vì vậy khi dùng lệnh 
mesh MATLAB thông báo lỗi. 
 Do đó, để vẽ bán cầu này ta phải giải quyết vấn đề nảy sinh với số phức như sau: 
Cách 1: Thay tất cả các phần tử phức trong ma trận Z bằng phần tử 0. 
>> Z=real(Z); 
>> mesh(X,Y,Z) 
Cách 2: Thay tất cả các phần tử phức của ma trận Z bằng đại lượng NaN. Trong trường 
hợp này MATLAB sẽ không vẽ lưới đến các điểm đó. 
>> I=find(imag(Z)~=0) % tìm chỉ số của các vị trí các phần tử có phần ảo khác không 
I = 
 [] 
>> Z(I)=NaN; 
>> mesh(X,Y,Z) 
-2
0
2
-2
0
2
-0.4
-0.2
0
0.2
0.4
x
ve mat voi lenh meshz
y
z
-2
0
2
-2
0
2
-0.4
-0.2
0
0.2
0.4
x
ve mat voi lenh waterfall
y
z
Chương 4 :Ðồ họa với MATLAB 
 69
4.4.4.Vẽ các mặt được tô bóng từ một ma trận bằng các lệnh surf, surfc 
Ví dụ: 
>> x=-2:0.5:2; 
>> y=-2:1:2; 
>> [X,Y]=meshgrid(x,y); 
>> Z=X.*exp(-X.^2-Y.^2); 
>> surf(X,Y,Z) 
>> colormap(hot) 
 Ta có thể tạo nhiều lưới hơn để có một mặt mịn hơn: 
>> x=-2:0.2:2; 
>> y=-2:0.4:2; 
>> [X,Y]=meshgrid(x,y); 
>> Z=X.*exp(-X.^2-Y.^2); 
>> surf(X,Y,Z) 
>> colormap(cool) 
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
Chương 4 :Ðồ họa với MATLAB 
 70
Lệnh surfc (X,Y,Z): vẽ mặt có các đườn contour phía dưới. 
Lệnh surfl (X,Y,Z,s): vẽ mặt có bóng sáng. Đối số s xác định hướng của nguồn sáng trên 
bề mặt vẽ. s là một vectơ tuỳ chọn trong hệ toạ độ decac hay trong toạ độ cầu. Nếu không 
khai báo giá trị mặc định của s là 45o theo chiều kim đồng hồ từ vị trí người quan sát. 
Khi vẽ đồ thị ta có thể thay đổi một số đặc điểm của đồ thị như tỉ lệ trên các trục, giá trị 
giới hạn của các trục, màu và kiểu đường cong đồ thị, hiển thị legendngay trên figure 
bằng cách vào menu tools rồi vào mục axes properties, line properties hay show legend 
-2
0
2
-2
0
2
-0.4
-0.2
0
0.2
0.4
-2
0
2
-2
0
2
-0.5
0
0.5

File đính kèm:

  • pdfdo hoa voi Matlab.pdf