处理对数刻度中的负值

时间:2016-09-30 14:14:25

标签: matlab plot standard-deviation

我使用对数刻度在MatLab中绘制带有标准差的折线图:

fig = figure;
errorbar(mean(samples),sqrt(var(samples)));
ax = get(fig,'CurrentAxes');
set(ax,'YScale','log');

但是,在某些示例中,较低的错误栏低于0.例如,给定样本s=[11.0147 80.2365 11.6116 11.1837 9.9091],然后mean=24.7911std=31.0013,这使得较低的错误栏位于{ {1}}。由于对数比例忽略负值,因此误差条看起来很奇怪。

如何计算非对称误差线?我可能计算所有值-6.2101和所有值std的{​​{1}},以便我有不同的上下误差条。这是一种有效的方法吗?

1 个答案:

答案 0 :(得分:1)

为了产生5%和95%的误差线,最简单的方法是对基础数据进行排序。因此,假设您有一组与特定参数对应的样本,并将它们记录在矩阵样本中,其中一行代表参数x的一个值的实验值。然后这段代码可以很容易地给你上下值:

ascending=sort(samples,2);
lower_error_bar=ascending(:,round(size(ascending,2)*0.05));
mean=mean(samples,2);
median=ascending(:,round(size(ascending,2)*0.5));
upper_error_bar=ascending(:,round(size(ascending,2)*0.95));

我希望这有帮助!