【问题标题】:Matlab - Error bars for (large) noisy data setsMatlab - (大)嘈杂数据集的误差线
【发布时间】:2018-07-27 11:17:25
【问题描述】:

我有十个大型线性数组(n 个元素),例如

A = [ A1 A2....An ] B = [ B1 B2....Bn ] …… J = [ J1 J2....Jn ]

我可以通过将它们相加并除以十来计算这些数组的算术平均值,这大大降低了噪音并显示了我正在寻找的趋势。 (请注意,我通常拥有多于或少于十个数据集,但这是具有代表性的。此外,n 会有所不同,但通常是 10,000 个数据点)

我想做的是用误差线绘制这个平均值,误差线代表原始十个数组中的噪声。数组很大,因此可能会有合理增量的误差线(比如在与平均值的偏差最大的整个范围内有十个误差线)。

该图显示了 10 个噪声数据集,以灰线绘制,平均值为黑线。

谢谢

【问题讨论】:

  • 我应该明确指出,这些数组包含来自模拟的数据,该模拟本质上是非常嘈杂且对初始边界条件敏感的。我多次运行我的模拟(即 10 倍)以确定由于某些参数变化引起的趋势。因此取平均值,但我认为显示数据中的噪音的“误差”条是诚实的。例如,在 x,y 轴上,在任何给定的 x 处都会有 10 个 y 值。我绘制了平均 y 并希望显示最小和最大 y,这是“错误”。
  • 为什么不为每个 n 绘制 3 行 minmeanmax 的 10 个数组?
  • edit 以图为最低限度的问题,将它们显示为您现在拥有的图,并指出(例如在油漆中)应该更改的内容。最好加上代码和数据(mock-up数据就可以了,只要能重现问题),我们可以看看。
  • 您能否描述一下matlab 的函数errorbar 对您想要做什么不起作用?看起来很简单。
  • 阿德里安,我已经添加了情节。数据集非常庞大,但本质上只是一个数字列表。代码也很简单,就是 plot(A);坚持,稍等; ploy(B) 等在此先感谢

标签: matlab plot


【解决方案1】:

通过编写一段(看起来)冗长的代码,我找到了一个相当费力的解决方案。

代码获取所有输入数组并创建两个新数组。一个是每个 x 的最大 y 值,一个是最小值。这是通过 matlab 中的 max 和 min 函数完成的。

从最大值中减去最小值,以创建一个包含每个 x 值的“误差”大小的数组。

然后将误差数组的每第 n 个值绘制为所有原始输入数组的算术平均值之上的误差条。

这是解决问题的方法 - 屏幕截图显示了结果 - 但我想知道是否有更优雅的“内置”解决方案可以一次性完成。

【讨论】:

  • 所以你的错误是对称的?如果不是呢?为什么不计算和叠加标准差呢?还是 95% 的置信区间?顺便说一句,你的情节看起来很漂亮!
  • 顺便说一句:如果您显示您的代码,我可以告诉您是否可以用更少的代码完成。但是没有 1-liner 可以做到这一点。您需要为所有数据绘制一条带有plot 的线,并为带有误差线的二次采样数据点绘制一条带有errorbar 的线。
  • 错误不是对称的。几乎是这样,但这就是数据的本质——平均值两侧的数据分布几乎相同。如果您查看(例如,在 296K 处的前两个各向同性误差点 - 也请参见原始问题中的原始图,传播有点对称并随着应变而增加);我确实考虑过绘制误差条的中心标记,但情节变得过于混乱。我试图展示的是测量中的“传播”如何变化。
猜你喜欢
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多