MATLAB 绘制三维图 | 附多个实例

情形一:函数有显式表达式 z = f ( x , y ) z=f(x,y) z=f(x,y)
主要使用函数:meshgrid,mesh,fmesh

例1:圆锥面: z = x 2 + y 2 z=\sqrt{x^2+y^2} z=x2+y2

clc,clear,close all
x=-5:0.1:5;
[X,Y]=meshgrid(x);
Z=sqrt(X.^2+Y.^2);
mesh(X,Y,Z)

在这里插入图片描述

例2:旋转抛物面 z = 2 − x 2 − y 2 z=2-x^2-y^2 z=2x2y2

clc,clear,close all
x=-5:0.1:5;
[X,Y]=meshgrid(x);
Z=2-X.^2-Y.^2;
mesh(X,Y,Z)

在这里插入图片描述

例3:抛物柱面 z = 1 − x 2 z=1-x^2 z=1x2

clc,clear,close all
x=-5:0.1:5;
[X,Y]=meshgrid(x);
Z=1-X.^2;
mesh(X,Y,Z)

在这里插入图片描述
例3:平面 z = 1 z=1 z=1

clc,clear,close all
x=-5:0.1:5;
[X,Y]=meshgrid(x);
Z=zeros(size(X))+1;
mesh(X,Y,Z)

在这里插入图片描述

此外,还可利用 fmesh 函数

例1: z = e y sin ⁡ x − e x cos ⁡ y + e x + e y z=e^y\sin x-e^x\cos y+e^x+e^y z=eysinxexcosy+ex+ey

clc,clear,close all
syms x y
f=sin(x)*exp(y)-cos(y)*exp(x)+exp(x)+exp(y);
fmesh(f)

在这里插入图片描述

情形三:函数表达式不含有 z z z 主要使用函数:meshgrid,isosurface

例1:抛物柱面 x = 2 y 2 x=2y^2 x=2y2

clc,clear,close all

x=-5:0.1:5;
y=-5:0.1:5;
z=[-5,5];

[X,Y,Z] = meshgrid(x,y,z);
v = 2*Y.^2-X;
isosurface(X,Y,Z,v,0)
grid on

在这里插入图片描述
例2:平面 y = 0 y=0 y=0

clc,clear,close all
x=-5:0.1:5;
y=-5:0.1:5;	
z=[-5,5];	
[X,Y,Z] = meshgrid(x,y,z);
v = Y;	
isosurface(X,Y,Z,v,0)

在这里插入图片描述

例3:平面 x + y = 0 x+y=0 x+y=0

clc,clear,close all
x=-5:0.1:5;
y=-5:0.1:5;
z=[-5,5];
[X,Y,Z] = meshgrid(x,y,z);
v = X+Y;
isosurface(X,Y,Z,v,0)

在这里插入图片描述
情形3:函数有参数表达式
主要使用函数 fplot3

例1:
x = sin ⁡ ( t ) y = cos ⁡ ( t ) z = t \begin{aligned} x&=\sin(t)\\ y&=\cos(t)\\ z&=t \end{aligned} xyz=sin(t)=cos(t)=t

clc,clear,close all
xt = @(t) sin(t);
yt = @(t) cos(t);
zt = @(t) t;
fplot3(xt,yt,zt)

在这里插入图片描述
例2:
x = e − t / 10 sin ⁡ ( 5 t ) y = e − t / 10 cos ⁡ ( 5 t ) z = t \begin{aligned} x&=e^{-t / 10} \sin (5 t) \\ y&=e^{-t / 10} \cos (5 t) \\ z&=t \end{aligned} xyz=et/10sin(5t)=et/10cos(5t)=t

clc,clear,close all
xt = @(t) exp(-t/10).*sin(5*t);
yt = @(t) exp(-t/10).*cos(5*t);
zt = @(t) t;
fplot3(xt,yt,zt,[-10 10])

在这里插入图片描述

特殊情形1:取定 x , y x,y x,y 后, z z z 的值不唯一

这种情况往往需要分别求出每一个z,然后多次利用 mesh 函数绘图,比较复杂。(也可能有别的方法,但我不是很懂)

例1: x 2 + y 2 + z 2 = 1 x^2+y^2+z^2=1 x2+y2+z2=1 (此例也可利用参数方程来绘图,此处使用mesh函数仅做示例用,效果并不如fplot3函数好用)

clc,clear,close all
x=-1:0.01:1;
[X,Y]=meshgrid(x);
Z=1-X.^2-Y.^2;
Z(Z<0)=nan; %这一步是为了后面对Z取根号的时候不会得到虚数
Z1=sqrt(Z);
Z2=-sqrt(Z);
mesh(X,Y,Z1)
hold on
mesh(X,Y,Z2)

在这里插入图片描述

一个比较复杂的例子

1 ⩽ x 2 ⩽ y < 4 1\leqslant x^2\leqslant y <4 1x2y<4
z 2 ⩽ x 2 + y 2 z^2\leqslant x^2+y^2 z2x2+y2

clc,clear,close all

x = -2:0.01:2;
y = 1:0.01:4;

[X,Y]=meshgrid(x,y);
index1 = X.^2-Y>0;
X(index1) = nan;
Y(index1) = nan;
index2 = X.^2<1;
X(index2) = nan;
Y(index2) = nan;
Z1 = sqrt(X.^2+Y.^2);
mesh(X,Y,Z1)
hold on 
Z2 = -sqrt(X.^2+Y.^2);
mesh(X,Y,Z2)


hold on
x = -2:0.01:-1;
z = linspace(-5,5,length(x));
[X,Z] = meshgrid(x,z);
Y = ones(length(x))*4;
index = Z.^2-X.^2-Y.^2>0;
X(index) = nan;
Y(index) = nan;
Z(index) = nan;
mesh(X,Y,Z)

x = 1:0.01:2;
z = linspace(-5,5,length(x));
[X,Z] = meshgrid(x,z);
Y = ones(length(x))*4;
index = Z.^2-X.^2-Y.^2>0;
X(index) = nan;
Y(index) = nan;
Z(index) = nan;
mesh(X,Y,Z)



y = 1:0.01:4;
z = linspace(-5,5,length(y));
[Y,Z] = meshgrid(y,z);
X = ones(length(y))*(-1);
index = Z.^2-X.^2-Y.^2>0;
X(index) = nan;
Y(index) = nan;
Z(index) = nan;
mesh(X,Y,Z)

y = 1:0.01:4;
z = linspace(-5,5,length(y));
[Y,Z] = meshgrid(y,z);
X = ones(length(y))*(1);
index = Z.^2-X.^2-Y.^2>0;
X(index) = nan;
Y(index) = nan;
Z(index) = nan;
mesh(X,Y,Z)



x = -2:0.01:-1;
z = linspace(-5,5,length(x));
[X,Z] = meshgrid(x,z);
Y = X.^2;
index = Z.^2-X.^2-Y.^2>0;
X(index) = nan;
Y(index) = nan;
Z(index) = nan;
mesh(X,Y,Z)

x = 1:0.01:2;
z = linspace(-5,5,length(x));
[X,Z] = meshgrid(x,z);
Y = X.^2;
index = Z.^2-X.^2-Y.^2>0;
X(index) = nan;
Y(index) = nan;
Z(index) = nan;
mesh(X,Y,Z)

在这里插入图片描述


2022年5月16日18:23:26

  • 116
    点赞
  • 645
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
Matlab中,可以通过两种方式来调整三维图形的透明度。 一种方式是使用alpha函数。alpha_data是一个介于0和1之间的数,其中alpha_data = 0表示完全透明,alpha_data = 1表示完全不透明。通过调用alpha(alpha_data)函数,可以将图形的透明度设置为alpha_data的值。越接近于0的值表示透明度越高。 另一种方式是通过图形对象的"FaceAlpha"属性来调整透明度。可以使用set(h,'FaceAlpha',alpha_value)来设置图形对象的透明度,其中h为图形对象的句柄,alpha_value可以是介于0和1之间的任意值。 下面是一些示例代码来展示如何在Matlab中调整三维图形的透明度: ```matlab % 示例1:使用alpha函数调整透明度 [X,Y,Z] = sphere; surf(X,Y,Z); colormap(lines); shading interp; hold on; mesh(2*X,2*Y,2*Z); hidden off; axis equal; axis off; % 设置透明度为0.4 alpha(0.4); % 示例2:使用图形对象的"FaceAlpha"属性调整透明度 figure; surf(X,Y,Z,'FaceColor','r'); hold on; surf(2*X,2*Y,2*Z,'FaceAlpha',0.4); axis equal; axis off; ``` 在这些示例代码中,通过调整alpha函数或设置图形对象的"FaceAlpha"属性,可以实现三维图形的透明效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MATLAB三维曲面作图(四)特殊效果的绘图(透视)](https://blog.csdn.net/fendoudecheng/article/details/130381459)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MATLAB---三维绘制函数实例介绍](https://blog.csdn.net/m0_38127487/article/details/124288858)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值