Matlab使用fmesh函数绘制三维网格图

4.3
(3)

今天,给大家带来Matlab中使用fmesh函数绘制三维函数或者三维参数的网格图的教程。前文中,我们讲述了很多网格图的绘制、以及曲面图的绘制。本文将讲述最后一篇关于网格图的fmesh函数的使用方法,主要讲述fmesh函数的常见用法、语法说明、表达式的三维网格图、参数化网格图、指定网格图区间并绘制分段输入、指定网格图属性等用法。

Matlab使用fmesh函数绘制三维网格图

下面,我们首先给出Matlab中关于fmesh函数的帮助文档如下:

>> help fmesh
 fmesh   Plot 3-D mesh
    fmesh(FUN) creates a mesh plot of FUN(X,Y). FUN is plotted over
    the axes range, with a default interval -5 < X < 5 and -5 < Y < 5.
  
    fmesh(FUN,INTERVAL) plots FUN over the specified INTERVAL instead of the
    default interval. INTERVAL can be the vector [XMIN XMAX YMIN YMAX] or the
    vector [A B] (to plot over A < X < B and A < Y < B).
 
    fmesh(FUNX,FUNY,FUNZ) plots the parametric surface FUNX(U,V),
    FUNY(U,V), and FUNZ(U,V) over the interval -5 < U < 5 and
    -5 < V < 5.
 
    fmesh(FUNX,FUNY,FUNZ,[UMIN UMAX VMIN VMAX]) or
    fmesh(FUNX,FUNY,FUNZ,[A B]) uses the specified interval.
 
    fmesh(AX,...) plots into the axes AX instead of the current axes.
 
    H = fmesh(...) returns a handle to the plotted object in H.
 
    Examples:
       fmesh(@(x,y) x.*exp(-x.^2-y.^2))
       fmesh(@(x,y) sinc(x.^2+y.^2),[-2,2])
       fmesh(@peaks)
 
    If your function has additional parameters, for example k in myfun:
       %-----------------------%
       function z = myfun(x,y,k)
       z = - x.^k - y.^k;
       %-----------------------%
    then you may use an anonymous function to specify that parameter:
       fmesh(@(x,y)myfun(x,y,2))

常见用法

fmesh(f)
fmesh(f,xyinterval)
fmesh(funx,funy,funz)
fmesh(funx,funy,funz,uvinterval)
fmesh(___,LineSpec)
fmesh(___,Name,Value)
fmesh(ax,___)
fs = fmesh(___)

用法说明

fmesh(f) 在 x 和 y 的默认区间 [-5 5] 为表达式 z = f(x,y) 创建网格图。

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

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

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

fmesh(_,LineSpec) 设置网格的线型、标记符号和颜色。例如,’-r’ 指定红色线条。在前面的任何输入参数组合之后使用此选项。

fmesh(_,Name,Value) 使用一个或多个名称-值对组参数指定网格的属性。可以将此选项与前面语法中的任何输入参数组合一起使用。

fmesh(ax,_) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 gca 中。

fs = fmesh(_) 返回 FunctionSurface 对象或 ParameterizedFunctionSurface 对象,具体情况取决于输入。使用 fs 来查询和修改特定曲面的属性。

表达式的三维网格图

在默认区间 −5<x<5 和 −5<y<5 绘制 sin(x)+cos(y) 输入的网格。

fmesh(@(x,y) sin(x)+cos(y))
Matlab使用fmesh函数绘制三维网格图

参数化网格图

绘制参数化网格图

  • x=rcos(s)sin(t)
  • y=rsin(s)sin(t)
  • z=rcos(t)
  • wherer=2+sin(7s+5t)

对于 0<s<2π,0<t<π。使用 alpha 使网格部分透明。

r = @(s,t) 2 + sin(7.*s + 5.*t);
x = @(s,t) r(s,t).*cos(s).*sin(t);
y = @(s,t) r(s,t).*sin(s).*sin(t);
z = @(s,t) r(s,t).*cos(t);
fmesh(x,y,z,[0 2*pi 0 pi])
Matlab使用fmesh函数绘制三维网格图

输出结果为:

alpha(0.8)

指定网格图区间并绘制分段输入

绘制分段输入

  • erf(x)+cos(y) −5<x<0
  • sin(x)+cos(y) 0<x<5

区间为 −5<y<5.

指定绘图区间作为 fmesh 的第二个参数。在相同坐标区的不同区间绘制多个输入时,坐标轴范围会调整以包括所有数据。

fmesh(@(x,y) erf(x)+cos(y),[-5 0 -5 5])
hold on
fmesh(@(x,y) sin(x)+cos(y),[0 5 -5 5])
hold off
Matlab使用fmesh函数绘制三维网格图

指定网格图属性

使用红线创建网格图。

fmesh(@(x,y) sin(x)+cos(y),'EdgeColor','red')
Matlab使用fmesh函数绘制三维网格图

共计3人评分,平均4.3

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/articles/1873.html

(1)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年02月20日 19:10
下一篇 2021年02月22日 22:20

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号