我是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])
结果:
fplot
和ezplot
之间有什么区别?提前谢谢!
答案 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!看到数据提示:
如果我们使用n=1e3
评估点: