[matlab]三维画图

三维画图函数

plot3函数

plot3是画三维图形的最基本函数,调用格式

plot3(X1,Y1,Z1,...)
plot3(X1,Y1,Z1,LineSpec,...)
plot3(...,'PropertyName',PropertyValue,...)

X1,Y1,Z1为向量或者矩阵,LineSpec定义曲线线型、颜色和数据点,PropertyName线对象的属性,PropertyValue属性的值

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);

image

三维网格线绘制

所用的函数为mesh,调用格式

mesh(X,Y,Z)
mesh(Z)
mesh(...,C)
mesh(...,'PropertyName',PropertyValue,...)
mesh(axes_handles,...)
h = mesh(...)

C是用于控制颜色,如果没有定义C,mesh绘制图的颜色随着Z值成比例变化;X和Y都是向量,长度分别为m和n,Z即为 m×n m × n 矩阵,网格点坐标 (X(i),Y(j),Z(i,j)) ( X ( i ) , Y ( j ) , Z ( i , j ) ) ;参数没有X,Y时,,网格点坐标 (i,j,Z(i,j)) ( i , j , Z ( i , j ) )

image

网格透明控制

hidden on 
hidden off
[X,Y,Z] = sphere(12);
subplot(1,2,1);
mesh(X,Y,Z);
hidden on 
axis square off
subplot(1,2,2);
mesh(X,Y,Z);
hidden off 
axis square off

axis square 将当前坐标系图形设置为方形。横轴及纵轴比例是1:1

axis equal 将横轴纵轴的定标系数设成相同值。

image

还有两个变种函数
1. meshc 绘制等值线图
2. meshz 包含0平面的网格图

[X,Y,Z] = peaks(30);

subplot(1,2,1);
meshc(X,Y,Z);
subplot(1,2,2);
meshz(X,Y,Z);

image

三维表面图surf

主要用于绘制一个着色的三维表面图,调用格式

surf(Z)
surf(Z,C)
surf(X,Y,Z)
surf(X,Y,Z,C)
surf(...,'PropertyName',PropertyValue)
surf(axes_handles,...)
h = surf(...)

参数和mesh基本相同

x = 0:0.2*pi:2*pi;
y = 0:0.2*pi:2*pi;
z = sin(x') * cos(y);
surf(x,y,z);

image

shading flat
%平面阴影
shading interp
%插值阴影

与mesh不同,surf没有办法进行透明显示,除非删除前面部分

可以把前面部分点的值赋值为NaN,绘图函数会自动的忽略NaN值的点,就会产生漏洞

[X,Y,Z] = peaks(20);

x = X(1,:);
%X向量的第一行
y = Y(:,1);
%Y向量的最后一列
i = find(y > .5 & y < 1);
j = find(x > -.4 & x < .8);
%find查找函数,查找符合条件的元素的索引和值
Z(i,j) = nan;
surf(X,Y,Z);

image

surf的变种函数

surfc %绘制底层等高线
surfl %有光照效果
其他的画图命令
cylinder

用于绘制圆柱图形

[X,Y,Z] = cylinder(r,n)

返回半径为r,高度为1的圆柱体x,y,z的坐标轴,圆柱体的圆周有n个距离相同的点

sphere

用于生成球体(只是返回点的坐标,绘图还需要调用mesh或者surf)

sphere

生成一个单位球,单位球有 20×20 20 × 20 个面组成

sphere(n)

生成一个单位球,单位球有 n×n n × n 个面组成

stem3

用于绘制三维空间的离散数据序列

stem(x,y,z,c,'filled')

c指定线条和标记颜色,filled是否为标记填充颜色;只传递z,z的行和列作为x和y

等高线和带状图
contour(x,y,z,n,v)   %二维等高线
contour3()  %三维等高线
Pcolor()    %带颜色的绘制

n是等高线层数,v是等值线的范围

ribbon(x,Y,width)

绘制Y关于x的带状列图,带宽度为width,默认为0.75

立体可视化
slice函数

正常情况下,计算机只能显示三个空间变量,而slice则通过颜色存储第四维空间变量

slice(V,sx,sy,sz)

函数 V=V(X,Y,Z) V = V ( X , Y , Z ) 在x轴,y轴,z轴上的切片图,坐标由sx,sy和sz来进行制定;V为三维向量

slice(X,Y,Z,Y,sx,sy,sz)

例如当X = X_{0}时, V=V(X0,Y,Z) V = V ( X 0 , Y , Z ) 变成一立体曲面

slice(V,XI,YI,ZI)

由参量矩阵XI,YI,ZI确定的超立体切面图;XI,YI,ZI定义了一个曲面,同时在曲面上的点计算V的值 ;XI,YI,ZI为同型矩阵

slice(...,'method')
参数方法
linear三次线性内插值(默认)
cubic三次立方内插值
nearest最近内插值

例子
2x2 − 2 ≤ x ≤ 2 , 2y2 − 2 ≤ y ≤ 2 , 2z2 − 2 ≤ z ≤ 2 区域绘制可视化函数

[x,y,z] = meshgrid(-2:.1:2,-2:.4:2,-2:.4:2);
v = sqrt(x.^2 + sin(y).^2+z.^2);
xslice = [-1.2,.8,2];
yslice  = 2;
zslice = [-2,0];
slice(x,y,z,v,xslice,yslice,zslice);

image

控制视角

在有些时候因为我们的某个视角观察图像时不方便,所以可以合理的移动视角

view

view可以指定图形的观察点,用方位角和仰角一起或者空间中的一点确定位置

view([x,y,z])

视角沿着向量[x,y,z]指向原点

view(2)   %默认二维视点,方位角0,仰角90
view(3)   %默认三维视点,方位角-37.5,仰角30
view(az,el)

设置视点的方位角和仰角

viewmtx

用于视点转换矩阵

T = view(az,el)

返回一个与视点方位角za与仰角el对应地正交矩阵,不改变视角

T = view(az,el,phi)

返回一个透视的转换矩阵,透视的角度为phi

phi值说明
0正交投影
10类似远距离投影
25类似普通投影
60类似以广角投影
rorate3d

三维视角变换函数

rorate3d on

然后就可以用鼠标左键控制视角变化

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,可以使用多个函数来进行三维画图。其中,contour3函数可以用来绘制三维等高线图,通过指定x、y和z的值以及等高线的级别,可以生成一个三维等高线图。例如,使用contour3(x,y,z,levels,'ShowText','on')可以绘制一个带有标签的三维等高线图。\[1\] 另外,plot3函数类似于plot函数,可以用来绘制三维空间下的折线图。通过指定x、y和z的值,可以生成一个三维折线图。例如,使用plot3(x,y,z)可以绘制一个三维折线图。\[2\] 在绘制三维图形时,还可以使用shading函数来设置色彩模式。shading函数有三种模式:faceted、flat和interp。faceted是默认的模式,flat在faceted的基础上去掉图上的网格线,interp在flat的基础上进行色彩的插值处理,使色彩平滑过渡。通过设置shading模式,可以调整图形的色彩效果。\[3\] 综上所述,Matlab提供了多种函数来进行三维画图,包括contour3、plot3和shading函数。可以根据具体需求选择合适的函数来绘制所需的三维图形。 #### 引用[.reference_title] - *1* *2* *3* [使用MATLAB进行三维图像绘制](https://blog.csdn.net/weixin_57109262/article/details/123427730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值