%%% 简单三维曲线
t =0:pi/50:10*pi;
x =sin(t);
y =cos(t);
z = t;plot3(x, y, z,':');% x y z分别是横坐标 纵坐标 函数值 可指定 线性 颜色
rotate3d;% 开启3d旋转
%%% 多条曲线
x =-3:0.1:3;
y =1:0.1:5;[X, Y]=meshgrid(x, y);
Z =(X+Y).^2;plot3(X, Y, Z);
rotate3d;
空间曲面
%%% 空间简单曲面
x =-3:0.1:3;
y =1:0.1:5;[X, Y]=meshgrid(x, y);% 网格化
Z =(X + Y).^2;surf(X, Y, Z);% 表示横坐标, 纵坐标 函数值
shading flat;% 图形平滑
%%% 网格曲面
x =-3:0.1:3;
y =1:0.1:5;[X, Y]=meshgrid(x, y);% 网格化
Z =(X + Y).^2;% 表示横坐标, 纵坐标 函数值
mesh(X, Y, Z);
meshc(x, y, z) 在x0y面有映射曲线
% 马鞍面 (双曲抛物面)
subplot(1,2,2);[X, Y]=meshgrid(-7:0.1:7);
Z = X.^2./8-Y.^2./6;meshc(X, Y, Z);view(30,30);% 正数逆时针旋转
% 标注
title('马鞍面');xlabel('x');ylabel('y');zlabel('z');rotate3d();% 可旋转观察
%%% 绘制peaks的网格图
% 网格周围画 curtain图
[X, Y]=meshgrid(-3:0.125:3);
Z =peaks(X, Y);meshz(X, Y, Z);% z 的值与网格对应
图形处理
图形上加格栅、图例和标注
grid on;
grid off;
%%
clc;clear;%清除变量
x =linspace(0,2*pi,30);
y =sin(x);plot(x, y);xlabel('x轴');ylabel('y轴');title('y = sin(x) 图像');% 为图像加标题
grid on;% 开启格栅
图形交互标注
%%% 图形鼠标标注
x =linspace(0,2*pi,30);
y =sin(x);
z =cos(x);plot(x, y, x, z);% 画两个图像
gtext('sin(x)');gtext('cos(x)');
定制坐标
%%% 定制坐标Axis([xmin xmax ymin ymax zmin max]) 定制图形坐标
%在区间[0.005,0.01]显示 sin(1/x)的图形
x =linspace(0.0001,0.01,1000);
y =sin(1./x);plot(x, y);axis([0.005,0.01,-11]);% 定制坐标
hold on 保持当前窗口
hold off 释放当前窗口
%%% 坐标系内的两个图像
x =linspace(0,2*pi,30);
y =sin(x);
z =cos(x);plot(x, z,':');
hold on;plot(x, y);
多窗口
%%%figure(h) 新建h 窗口 激活图形使其可见, 并置于其他图形之上
%[0,2*pi] 上两个窗口画y =sin(x) z =cos(x)
x =linspace(0,2*pi,100);
y =sin(x);
z =cos(x);plot(x, y);title('y = sin(x)');
pause;% 暂停
figure(2);plot(x, z);title('z = cos(x)');
分割窗口
%%% 一个多个窗口和
x =linspace(0,2*pi,100);
y =sin(x);
z =cos(x);
a =sin(x).*cos(x);
b =sin(x)./(cos(x)+ eps);subplot(2,2,1);plot(x, y);title('sin(x)');subplot(2,2,2);plot(x, z);title('cos(x)');subplot(2,2,3);plot(x, a);title('sin(x).*cos(x)');subplot(2,2,4);plot(x, b);title('sin(x)./cos(x)');
图形缩放
%%% 缩放图形
x =linspace(0,2*pi,100);
y =sin(x);plot(x, y);
zoom on;
改变观察视角
%%%%%view(a, b) 命令view(a, b), a是方位角, b是仰角
%view([x,y, z]) 空间矢量 关心比例数 与数值的大小无关
clc;
x =-3:0.1:3;
y =1:0.1:5;[X, Y]=meshgrid(x, y);
Z =(X + Y).^2;subplot(2,2,1);mesh(X, Y, Z);subplot(2,2,2);mesh(X, Y, Z);view(50,-34);subplot(2,2,3);mesh(X, Y, Z);view(-60,70);subplot(2,2,4);mesh(X, Y, Z);view([0,1,1]);
动画
%%% 动画
%Moviein() 产生一个帧矩阵
% getframe 对当前图像进行快照
%movie() 按照顺序回放个号各帧
clc;[x, y, z]=peaks(30);surf(x, y, z);axis([-33-33-1010]);
m =moviein(15);% getframe 对图像进行快照
for i=1:15view(-37.5+24*(i -1),30);m(:, i)= getframe;
end
movie(m);
特殊的二维图形
极坐标图
%%% 极坐标图 polar(theta, rho, s) theta角度, rho 为长度
theta =linspace(0,2*pi);
rho =sin(2*theta).*cos(2*theta);polar(theta, rho,'g');title('Polar plot of sin (2*theta).*cos(2*theta)');
二维散点图
%%%scatter(x, y, s, c)% x, y 指定位置显示彩色圈, x, y 大小必须相同
clc;clear;
load seamount
scatter(x, y,5, z)
二维平面等值线图
%%% 平面直线图,contour(x, y, z, n) 绘制n个等值线的二维等值线图
[X, Y]=meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2- Y.^2);[C, h]=contour(X, Y, Z);clabel(C, h);
colormap cool;
特殊三维图形函数
三维等值线
%%% 空间等值线
[x, y, z]= peaks;subplot(1,2,1);contour3(x, y, z,16,'s');%16个等值线
grid on;xlabel('x-axis');ylabel('y-axis');zlabel('z-axis');title('contour3 of peaks');subplot(1,2,2);contour(x, y, z,16,'s');% 二维等值线
grid on;xlabel('x-axis');ylabel('y-axis');zlabel('z-axis');title('contour of peaks');
三维散点图
%%% 空间散点图
clc;clear;[x, y, z]=sphere();
X =[x(:)*.5x(:)*.75x(:)];
Y =[y(:)*.5y(:)*.75y(:)];
Z =[z(:)*.5z(:)*.75z(:)];
S =repmat([1.75.5]*10,prod(size(x)),1);
C =repmat([123],prod(size(x)),1);scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled');view(-60,60);
%%% sphere 函数用于生成单位球面的 x,y,z 的坐标,以用于 surf or mesh。默认生成 20 x 20 个面的球面。
%[X,Y,Z]=sphere(...)% 在三个 (n+1)x(n+1)的矩阵内存储 n x n 个球面的坐标
[x, y, z]=sphere(20);surf(x, y, z);% 绘制球面的坐标
view(3);