繁体   English   中英

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

[英]heaviside function procudes different outputs in ezplot and fplot

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

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

结果:

在此输入图像描述

使用ezplot ,结果如我所想:

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

结果:

在此输入图像描述

fplotezplot什么区别? 提前致谢!

这与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! 看到数据提示:

在此输入图像描述

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

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM