用matlab画ezplot和ezmesh的区别

用matlab画ezplot和ezmesh的区别,第1张

二者用法如下:

如果输入参数是单变量函数,例如f(x),则只能使用ezplot绘制平面曲线,不能用ezmesh;

如果输入参数是双变量函数,例如f(x,y),则

ezplot绘制f(x,y)=0的曲线,也就是二维隐函数绘图;

ezmesh绘制z=f(x,y)曲面(并不是隐函数)。

如果输入是参数方程的形式:

ezplot(x,y),其中x = x(t), y = y(t),以x、y为坐标绘制平面曲线;

ezmesh(x,y,z) ,其中x = x(s,t), y = y(s,t), z = z(s,t),以x、y、z为坐标绘制曲面。

也就是说,大多数情况下,ezplot和ezmesh的输入参数形式是不一样的,只有一种情况二者输入参数形式相同——那就是双变量函数,此时,ezplot绘制隐函数f(x,y)=0的曲线,ezmesh绘制曲面(ezplot绘制的曲线就是ezmesh绘制的曲面与平面z=0的交线)。

函数plot

是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot

函数之前,必须首先定义好曲线上每一点的x

及y

坐标,常用格式为:

(1)plot(x)

当x

为一向量时,以x

元素的值为纵坐标,x

的序号为横坐标值绘制曲线。当x

为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x

为m×

n

矩阵时,就有n

条曲线。

(2)plot(x,y)

以x

元素为横坐标值,y

元素为纵坐标值绘制曲线。

(3)plot(x,y1,x,y2,…)

以公共的x

元素为横坐标值,以y1,y2,…

元素为纵坐标值绘制多条曲线。

函数fplot

用来绘制数学函数,其调用格式为:

fplot(fun,lims)其中fun

就是所要绘制的函数,可以是定义函数的M

文件名,也可以是以x

为变量的可计算字符串,lims=[XMIN

XMAX

YMIN

YMAX]限定了x,y

轴上的绘图空间。

函数ezplot它无需数据准备,直接画出函数图形,基本调用格式为ezplot(f),其中f

是字符串或代表数学函数的符号表达式,只有一个符号变量

区别:

plot是绘制二维图形,并且是x,y的表达式是已知的或者是形如y=f(x)这样确切的表达式

而ezplot是画出隐函数图形,是形如f(x,y)=0这种不能写出像y=f(x)这种函数的图形

如果真的需要 可以用这样参数形式

ezplot('5','t')

符号函数简易绘图函数ezplot(f)

f可以包含单个符号变量x的字符串或表达式,默认画图区间(-2pi,2pi),如果f包含x和y,画出的图像是f(x,y)=0的图像,缺省区间是-2pi

Ezplot(f,xmin,xmax)或ezplot(f,[xmin,xmax])绘制在xmin

syms x t

ezplot('tcos(t)','tsin(t)',[0,4pi])

Marker会出现在所有数据点上,不可能控制其间距。

要想不丢失数据而使得Marker稀疏,一种变通的做法是,在原图的基础上另外绘制一条曲线,该曲线专门用于绘制Marker,其数据由原曲线的数据提取。

下面的代码演示了实现方法,但需要注意的是,目前只适合图形中只有一条曲线的情况,如果有多条曲线,还需进行一些修改。

syms xGstar yArstar

D1=15; D2=16; K=4; phi=001;

acstar1 = (05sqrt(pi)Kphi)^(2/(1-D1))xGstar^2;

acstar2 = (05sqrt(pi)Kphi)^(2/(1-D2))xGstar^2;

h = ezplot(sqrt(xGstar/pi)(yArstar/3)^075log(yArstar/(3acstar1))+ 

    KphiyArstar^075(3acstar1)^025-3e-4,[1e-9,1e-5,1e-5,50e-1]);

set(h,'LineStyle','-','color','k');

 

X = get(h, 'x');

Y = get(h, 'y');

dX = max(X) - min(X);

dY = max(Y) - min(Y);

e = 001;   % 距离系数,越小则越密集

clear x y

x(1) = X(1);

y(1) = Y(1);

for i = 2 : length(X)

    if sqrt( ((X(i)-x(end))/dX)^2 + ((Y(i)-y(end))/dY)^2 ) >= e

        x(end+1) = X(i);

        y(end+1) = Y(i);

    end

end

 

% 使用相同的颜色和线宽绘制Marker

hold on

plot(x,y,'o','color',get(h,'color'),'linewidth',get(h,'linewidth'))

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12177557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存