目录

输入坐标的绘图函数

二维线图函数

三维线图函数

曲面图函数

输入函数方程(隐函数)的绘图函数

二维线图函数

fplot() 绘制 y=f(x)

fimplicit() 绘制二维隐函数

三维线图函数

fplot3()绘制参数曲线方程

三维曲面图函数

fsurf()绘制二元方程曲面

fsurf()绘制二元参数方程曲面

fimplicit3() 绘制三维隐函数

绘制散点图

scatter绘制二维散点图

scatter3绘制三维散点图 

绘制极坐标图

polarplot()绘制极坐标图

极坐标转化为笛卡尔坐标

 绘制曲面与平面相交的曲线

参数方程法(三角函数法)


输入坐标的绘图函数

二维线图函数

plot(x,y)

三维线图函数

plot3(x,y)

曲面图函数

surf(x,y,z) 曲面图

mesh(x,y,z) 网格图

meshgrid() 二维和三维网格

二维网格(网格矩形面)

[X,Y] = meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副本;Y 也是一个矩阵,每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。

[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x) 相同,并返回网格大小为 length(x)×length(x) 的方形网格坐标。

X,Y都为二维矩阵

三维网格(网格矩形空间)

[X,Y,Z] = meshgrid(x,y,z) 返回由向量 xy 和 z 定义的三维网格坐标。XY 和 Z 表示的网格的大小为 length(y)×length(x)×length(z)

[X,Y,Z] = meshgrid(x) 与 [X,Y,Z] = meshgrid(x,x,x) 相同,并返回网格大小为 length(x)×length(x)×length(x) 的三维网格坐标。

X,Y,Z都为三维矩阵

surf和mesh的程序实例

clc,clear
t = -3:0.1:3; 
[X,Y] = meshgrid(t);
Z=X.^2 + Y.^2; %曲面:z=x^2+y^2
%画曲面
subplot(1,2,1)
mesh(X,Y,Z);
title('mesh函数画曲面z=x^2+y^2')
subplot(1,2,2)
surf(X,Y,Z); 
title('surf函数画曲面z=x^2+y^2')

输入函数方程(隐函数)的绘图函数

二维线图函数

fplot() 绘制 y=f(x)

fplot(f) 在默认区间 [-5 5](对于 x)绘制由函数 y = f(x) 定义的曲线。

fplot(f,xinterval) 将在指定区间绘图。将区间指定为 [xmin xmax] 形式的二元素向量。

f = @(x) sin(x);
interval = [-pi pi];
fplot(f,interval)
title('fplot函数画曲线 y=sin(x)')

fimplicit() 绘制二维隐函数

fimplicit(f) 在默认区间 [-5 5](对于 x 和 y)上绘制 f(x,y) = 0 定义的隐函数。

fimplicit(f,interval) 为 x 和 y 指定绘图区间。

绘制x^2+y^2=1

f = @(x,y) x.^2 + y.^2 - 1;
interval = [-2 2 -2 2];
fimplicit(f,interval,':b');
title('fimplicit函数画曲线 x^2 + y^2 = 1')

注意方程f表达式运算符^前要加'.'号  

三维线图函数

fplot3()绘制参数曲线方程

fplot3(funx,funy,funz) 在默认区间 [-5,5](对于 t)绘制由 x = funx(t)y = funy(t) 和 z = funz(t) 定义的参数化曲线。

fplot3(funx,funy,funz,tinterval) 将在指定区间绘图。将区间指定为 [tmin tmax] 形式的二元素向量。

xt = @(t) sin(t);
yt = @(t) cos(t);
zt = @(t) t;
fplot3(xt,yt,zt)
title('fplot3函数画参数方程曲线 x=sin(t),y=cos(t),z=t')

三维曲面图函数

fsurf()绘制二元方程曲面

fsurf(f) 在默认区间 [-5 5](对于 x 和 y)为函数 z = f(x,y) 创建曲面图。

fsurf(f,xyinterval) 将在指定区间绘图。要对 x 和 y 使用相同的区间,请将 xyinterval 指定为 [min max] 形式的二元素向量。要使用不同的区间,请指定 [xmin xmax ymin ymax] 形式的四元素向量。

f=@(x,y) sin(x)+cos(y);
fsurf(f)
title('fsurf函数画曲面 z=sin(x)+cos(y)')

fsurf()绘制二元参数方程曲面

fsurf(funx,funy,funz) 在默认区间 [-5 5](对于 u 和 v)绘制由 x = funx(u,v)y = funy(u,v)z = funz(u,v) 定义的参数化曲面。

fsurf(funx,funy,funz,uvinterval) 将在指定区间绘图。要对 u 和 v 使用相同的区间,请将 uvinterval 指定为 [min max] 形式的二元素向量。要使用不同的区间,请指定 [umin umax vmin vmax] 形式的四元素向量。

注意:只能绘制二元函数方程

funx = @(u,v) cos(u).*sin(v);
funy = @(u,v) sin(u).*sin(v);
funz = @(u,v) cos(v);
fsurf(funx,funy,funz,[0 2*pi 0 pi]) 
title('fsurf函数参数法画球面 x^2+y^2+z^2=1')

fimplicit3() 绘制三维隐函数

 fimplicit3(f) 在默认区间 [-5 5](对于 x)和 y(对于 z)上绘制 f(x,y,z) = 0 定义的三维隐函数。

fimplicit3(f,interval) 为 xy 和 z 指定绘图区间。

f = @(x,y,z) x.^2 + y.^2 - z.^2;
interval = [-5 5 -5 5 0 5];
fimplicit3(f,interval);
title('fimplicit3函数画曲面 x^2 + y^2 = z^2')

绘制散点图

scatter绘制二维散点图

scatter(x,y) 在向量 x 和 y 指定的位置创建一个包含圆形的散点图。该类型的图形也称为气泡图。

scatter3绘制三维散点图 

scatter3(X,Y,Z) 在向量 XY 和 Z 指定的位置显示圆圈。

绘制极坐标图

polarplot()绘制极坐标图

polarplot(theta,rho) 在极坐标中绘制线条,由 theta 表示弧度角,rho 表示每个点的半径值。输入必须是长度相等的向量或大小相等的矩阵。如果输入为矩阵,polarplot 将绘制 rho 的列对 theta 的列的图。也可以一个输入为向量,另一个为矩阵,但向量的长度必须与矩阵的一个维度相等。

theta = linspace(0,6*pi);
rho1 = theta/10;
polarplot(theta,rho1,'--') %虚线
title('polarplot函数绘制螺旋线 r=theta/10')

极坐标转化为笛卡尔坐标

[x,y] = pol2cart(theta,rho) 将极坐标数组 theta 和 rho 的对应元素转换为二维笛卡尔坐标或 xy 坐标。

[x,y,z] = pol2cart(theta,rho,z) 将柱坐标数组 thetarho 和 z 的对应元素转换为三维笛卡尔坐标或 xyz 坐标。

 绘制曲面与平面相交的曲线

参数方程法(三角函数法)

参数方程法画曲面z=x^2+2*y^2与曲面z=2-x^2的交线

clc,clear
t = -2:0.1:2; 
[X,Y] = meshgrid(t);
Z= X.^2 + 2.*Y.^2; %曲面:z=x^2+2*y^2
Z2= 2 - X.^2; %曲面2:z=2-x^2
%画曲面
subplot(1,2,1) 
mesh(X,Y,Z); 
hold on
mesh(X,Y,Z2);
title('曲面 z=x^2+y^2 与 z=2-x^2')
grid on 
xlabel('X') 
ylabel('Y')
zlabel('Z')
axis equal
%画交线 x^2+y^2=1,z=1+y^2
%参数方程:x=cos(t),y=sin(t),z=1+sin^2(t)
t=0:0.1:2*pi;
x=cos(t);
y=sin(t);
z=1+y.^2;
subplot(1,2,2) 
plot3(x,y,z);
title('曲面 z=x^2+y^2 与 z=2-x^2 的交线')
xlabel('X') 
ylabel('Y')
zlabel('Z')
axis equal

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐