Matlab之errorbar

在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下替换原始文件了:)

Update:
最新版可在下载页面获取

订阅评论
提醒

5 评论
最旧
最新 最多投票
内联反馈
查看所有评论
wangtongyu3779
2007 年 5 月 30 日 17:21

你好,我按照上面的方法改完后,用errorbar()画图,然后用set(gca,’xscale’,’log’);set(gca,’yscale’,’log’);设置成对数坐标,但还是出现端点拉长的情况,请问你上面的右图是怎么在对数坐标下实现的?先谢了

Clare
2010 年 6 月 2 日 17:21

您好,想请问下线和误差棒的线型粗细如何设置啊?

周永强
2014 年 7 月 9 日 10:32

您好,我按您的方法直接修改内置的 errorbar 函数,但结果仍然是拉长的,很难看。不知道为什么。求解释。