matlab用ezplot()和fplot()画同一个函数为什么图形不一样啊。

2024-11-26 18:23:12
推荐回答(3个)
回答1:

ezplot是一种比较粗略的画函数图像的命令。图中出现的两部分间断,主要是因为在这部分的函数的导数较大。更深层次的原因在于,在ezplot的源程序中,人为设定了一段程序,将给定的函数的导数过大(是否过大是由所给函数决定)的点都设为NaN(not a number),目的是除去不可去间断点。但有时会事与愿违,对于有些函数,即使它本身是连续的,但由于局部的导数过大,导致ezplot给出了不真实的图像。另外,由于ezplot的初衷是对不太特殊的函数进行大致的描绘,所以它本身缺少对许多特殊函数的较精确的控制,从而导致部分图像缺失或选的点数过少。这也是为什么很多人不喜欢用ezplot的原因。
所以对于画y=f(x)这样的函数,fplot很不错,但是不可以控制选点间距和点数。如果想人为地控制选点间距和点数,那么就用plot。但plot的缺点是需要你对所画的函数有一定的认识,因为你的选点会影响图像的质量。选过多的点会造成内存的浪费和处理的难度,而过少的点有可能无法揭示一些关键的变化。

回答2:

楼上说了这么多,好像都没回答楼主的问题......

这两个图本来应该一样,但是具体画图的时候,由于我们给出的条件非常简略,所以函数必须要先自己取XData,然后再算相应的YData,不同的函数划分的格点不同,结果就可能有差异了。

对ezplot生成的x,y数值进行记录,发现y(210)和y(224)都是NaN。这应该是ezplot函数的一点小缺陷,具体我没仔细看,你可以自己看一下函数。

附件是ezplot生成的x和y数据

回答3:

函数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)这种函数的图形