在Matlab中有个画误差棒的函数errorbar,用在对数坐标下时,则会出现误差棒端点拉长的问题,严重影响画面(如下图左半轴所示)。这个问题开始是在Matlab6.5中发现的,2006b中虽对此函数有所更新但并未解决这个问题。

幸运的是,这个函数没有嵌入内核,可以在命令窗口键入type errorbar ,直接察看其源代码。找到定义误差棒端点长度的地方

tee = (max(x(:))-min(x(:)))/100;

% make tee .02 x-distance for error bars

取误差棒端点大小为误差棒长度的2%

xl = x – tee; 计算左端点

xr = x + tee; 右端点

找对地方,改起来就很简单了,在对数坐标中,点A变成了logA,要取到同一点,将A变成10^A即可,后两行改为

xl = x/10^tee;

xr = x*10^tee;

改名保存到工作目录,直接调用,效果如下图右半轴。

如果在这里加上个判断,就可以直接去目录MATLAB\R2006b\toolbox\matlab\specgraph下替换原始文件了:)

a8809f5591c44e7123eabdcedb4e2c4a.png

Update:

最新版可在下载页面获取

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐