【问题标题】:Averaging many curves with different x and y values平均许多具有不同 x 和 y 值的曲线
【发布时间】:2016-01-28 20:45:09
【问题描述】:

我有几条包含许多数据点的曲线。 x 轴是时间,假设我有 n 条曲线,其中数据点对应于 x 轴上的时间。

尽管数据点位于不同的 x 点,但有没有办法获得 n 条曲线的“平均值”?

我在想可能是使用直方图对值进行分类,但我不确定从哪个代码开始可以完成这样的事情。

Excel 或 MATLAB 可以做到这一点吗?

我还想绘制平均曲线的标准差。

一个问题是:x 值之间的分布不均匀。有更多接近 t=0 的值,但在 t=5(例如)时,数据点的频率要少得多。

另一个问题。如果两个值落在 1 个 bin 内会发生什么?我假设在计算平均曲线之前我需要这些值的平均值。

我希望这表达了我想做的事情。

关于我可以使用哪些代码(MATLAB、EXCEL 等)来实现我的目标的任何想法?

【问题讨论】:

  • 插值 -> 然后平均。这对你有用吗?
  • 请发布一些示例值...
  • @AnderBiguri 我喜欢安德的回答。我没有考虑先插值。我想 MATLAB 可以做到这一点
  • 另一个想法是 (1) 将数据连接成一个大集合,(2) 根据 x 排序(如果您的各个数据集已经 x 排序,那么您可以同时连接和排序为了加快速度),(3)选择一个 bin 大小 B(也许 B = 数据集的数量),(4)计算前 B 个点的 Avg 和 StDev(x 和 y),并且(5)对每个点重复随后的一组 B 点,(6)绘制平均数据

标签: excel matlab average


【解决方案1】:

由于您的系列不是均匀分布的,因此在计算平均值之前进行插值是避免偏向于您拥有更频繁样本的时间的一种方法。请注意,根据定义,插值可能会缩小您的值的范围,即插值点不太可能恰好落在您测量点的时间。这对极端统计数据(例如第 5 个和第 95 个百分位数)而不是平均值有更大的影响。如果你打算走这条路,你需要interp1mean 函数

另一种方法是进行加权平均。这样可以避免截断测量值的范围。假设x 是一个测量值向量,t 是一个测量时间向量(以秒为单位),那么您可以通过以下方式计算加权平均值:

timeStep = diff(t);
weightedMean = timeStep .* x(1:end-1) / sum(timeStep);

如上述 cmets 所述,您的数据样本将有助于建议计算“平均值”的适当方法。

【讨论】:

  • 谢谢! interp 函数是我一直在寻找的!像魅力一样工作!
猜你喜欢
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 2020-05-06
相关资源
最近更新 更多