A. Đồ thị hai chiều
1. Lệnh vẽ đồ thị trong mặt phẳng
Để vẽ đồ thị trong mặt phẳng, sử dụng lệnh plot
Ví dụ:
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y),title('Hinh 1')
% Vẽ 2 đồ thị cùng 1 hình
x=linspace(0,2*pi,30);
z=cos(x);
plot(x,y,x,z), title('Hinh 2')
% Vẽ 2 đồ thị cùng 1 hình, cách 2
x=linspace(0,2*pi,30);
W=[y;z];
plot(x,W), title('Hinh 3')
Ví dụ:
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,'b:p',x,z,'r-',x,y+z,'m+'), title('Plot')
xlabel('Bien doc lap')
ylabel('Bien phu thuoc')
legend('y=sin(x)', 'z=cos(x)', 'y+z')
text(3,1,'Plot 3 charts')
axis equal % Tỉ lệ các trục bằng nhau
grid on % Hiển thị lưới
% Vẽ
nhiều đồ thị bằng nhiều lệnh plot kết hợp lệnh hold on
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
z=cos(x);
hold on
plot(x,z,'m')
3. Điều khiển cửa sổ figure
∙
Vẽ nhiều đồ thị trên nhiều hình bằng các lệnh figure
figure % Cửa sổ hình thứ 1
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
figure % Cửa sổ hình thứ 2
z=cos(x);
hold on
plot(x,z,'m')
∙
Vẽ nhiều đồ thị con trên một hình bằng các lệnh subplot
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
a=2*sin(x).*cos(x);
b=sin(x)./(cos(x)+eps);
subplot(2,2,1) % Chia cửa sổ thành 2 x 2 ô, vẽ ô 1
plot(x,y,'b'),axis([0 2*pi -1 1])
subplot(2,2,2) % Chia cửa sổ thành 2 x 2 ô, vẽ ô 2
plot(x,z,'r'),axis([0 2*pi -1 1])
subplot(2,2,3)
plot(x,a,'k'),axis([0 2*pi -1 1])
subplot(2,2,4)
plot(x,b,'g'),axis([0 2*pi -20 20])
B. Đồ thị ba chiều
1. Đồ thị đường
Để vẽ đồ thị 3D dạng đường, sử dụng lệnh: plot3(x1, y1, z1, S1, x2, y2,
z2, S2…)
Ví dụ:
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t') axis
square;
grid on;
text(0,0,0,'Origin')
Vẽ nhiều đường 3D trên cùng một đồ thị
x=linspace(0,3*pi);
∙
z1=sin(x);
z2=sin(2*x);
z3=sin(3*x);
y1=zeros(size(x));
y3=ones(size(x));
y2=y3/2;
plot3(x,y1,z1,x,y2,z2,x,y3,z3)
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') grid on
Vẽ ma trận các dữ liệu
[X,Y] = meshgrid([-2:0.1:2]);
∙
Z = X.*exp(-X.^2-Y.^2);
plot3(X,Y,Z)
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') grid on
2. Đồ thị dạng lưới
Để vẽ đồ thị 3D dạng lưới, sử dụng lệnh 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)
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') % hidden
off % Lệnh vẽ lưới trong suốt
meshc(X,Y,Z) % hiển thị đường mức
meshz(X,Y,Z) % hiển thị các đường x,y=const
3. Đồ thị 3D dạng mặt
Để vẽ đồ thị 3D dạng mặt, sử dụng lệnh surf(X,Y,Z)
Ví dụ:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
shading flat % Bỏ đường lưới
shading interp % Làm mịn màu
surfc(X,Y,Z) % Đồ thị mặt có các đường mức
surfl(X,Y,Z) % Đồ thị mặt có hiệu ứng ánh sáng
surfnorm(X,Y,Z) % Đồ thị mặt có pháp tuyến
[X,Y,Z] = peaks(30);
surfl(X,Y,Z)
shading interp
colormap pink
4. Đồ thị đường mức
Các cú pháp vẽ đồ thị đường mức:
contour(X,Y,Z,N) %Đồ thị đường mức 2 chiều
contour3(X,Y,Z,N) %Đồ thị đường mức 3 chiều
pcolor(X,Y,Z) %Đồ thị chuyển cao độ tỉ lệ với màu
contourf(X,Y,Z,N) %Đồ thị đường mức 2 chiều có màu
Ví dụ:
% Đường mức 2 chiều
[X,Y,Z] =peaks;
contour(X,Y,Z,20)
% Đường mức 3 chiều
[X,Y,Z] =peaks;
contour3(X,Y,Z,20)
% Đồ thị màu cao độ
pcolor(X,Y,Z)
shading interp
contourf(X,Y,Z,20)
% Vẽ đồ thị đường mức có thêm cao độ
C = contour(X,Y,Z,20); % tương tự cho contour3 và contourf
clabel(C)
5. Phổ màu đồ thị
Matlab cung cấp nhiều phổ màu đặc biệt
Ví dụ:
% Chọn 8 đoạn màu cho phổ màu hot
hot(8)
[x,y,z]=peaks;
mesh(x,y,z);
colormap(hsv)
axis([-3 3 -3 3 -6 8])
colorbar % hiển thị phổ màu
Sử dụng nhiều hơn một phổ màu
mymap=[hsv(32);copper(32)];
∙
colormap(mymap)
mesh(peaks+8);
view(90,0)
hold on
mesh(peaks-8);
colorbar
C. Đồ thị động
∙
Dùng lệnh pause để làm chậm tốc độ vẽ của chương trình. ∙ Nếu
cần thiết, dùng lệnh hold on để vẽ các đồ thị sau mà vẫn giữ được
các đồ thị trước.
∙
Cú pháp: pause(n) % n: 0.01 giây
Ví dụ:
x=linspace(0,2*pi);
y=sin(x);
for i=1:100
plot(x(i),y(i),'*','markersize',10)
pause(0.2)
end
clear all
x=linspace(0,2*pi); y=sin(x);
for i=1:100
plot(x(i),y(i), '*','markersize',10) axis([0
2*pi+.2 -1.2 1.2])
hold on
pause(0.2)
end