【问题标题】:heaviside function procudes different outputs in ezplot and fplotheaviside 函数在 ezplot 和 fplot 中产生不同的输出
【发布时间】:2014-03-20 19:08:23
【问题描述】:

我是 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 有什么区别?提前致谢!

【问题讨论】:

    标签: matlab plot matlab-figure


    【解决方案1】:

    这与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评估点:

    【讨论】:

    • @LuisMendo 好点。有趣的是,n=5 最终仍然使用 31 个评估点。这确实是您输入的最小数字......它保留使用更多的权利。
    • 感谢您的解释!这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2020-02-10
    • 2014-05-06
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多