heavyseide函数在ezplot和fplot中产生不同的输出

时间:2014-03-20 19:08:24

标签: matlab plot matlab-figure

我是MATLAB的新手,我正在尝试使用heaviside()绘制步进函数。我首先尝试了以下代码:

f = @(x)heaviside(x+2) - heaviside(x-2);
fplot(f, [-10 10])

结果:

enter image description here

使用ezplot,结果就像我想的那样:

f = @(x)heaviside(x+2) - heaviside(x-2);
ezplot(f, [-10 10])

结果:

enter image description here

fplotezplot之间有什么区别?提前谢谢!

1 个答案:

答案 0 :(得分:3)

这与fplot文档的以下内容有关:

  

fplot使用自适应步长控制来生成代表图,将其评估集中在功能变化率最大的区域。

它看到你的功能几乎无处不在,并且不会在[-2 2]之间进行评估。解决方案是指定最少数量的评估点:

n = 1e3;
fplot(f, [-10 10],n)

例如,如果我们从fplot得到输出坐标:

>> [x,y] = fplot(f, [-10 10]);
>> [x y]

ans =

  -10.0000         0
   -9.9600         0
   -9.8800         0
   -9.7200         0
   -9.4000         0
   -8.7600         0
   -7.4800         0
   -4.9200         0
   -2.3600         0
    2.7600         0
   10.0000         0

您可以看到适应性评估的实际效果。它从-10开始,越来越快地向前迈进,直到它从-2.36跳到+2.76!看到数据提示:

enter image description here

如果我们使用n=1e3评估点:

enter image description here