【问题标题】:Getting mean and standard deviation from a histogram从直方图获取均值和标准差
【发布时间】:2014-01-07 19:31:40
【问题描述】:

我是否有可能在直方图中获得该特定条形 (bin) 的平均值和标准偏差?如果是,我应该使用什么功能或命令?

例如, 假设我有一个 (1000,1) 测量矩阵,我想将它分组为直方图。 y 轴是测量次数,x 轴是测量值。对于 x 轴,我们将有 0-9、10-19、20-29、30-39 等范围。我怎么可能得到 20-29 范围内的标准差和平均值?

我正在使用八度。谢谢。

【问题讨论】:

  • 对不起,我忘了说。顺便说一下,我正在使用 Octave
  • 让我们先看看你计算直方图的代码?
  • 我正在使用 hist(x) 函数。

标签: matlab octave histogram mean


【解决方案1】:

我怀疑您是否可以从直方图本身中获取该信息,我认为您需要从原始数据中获取它。

data = rand(1000,1)*100;

提取您的 bin 中的数据

data_subset = data(data >= 20 & data < 30);

然后得到平均值和标准

m = mean(data_subset);
s = std(data_subset);

我猜你想一次性完成所有垃圾箱,为此你需要accumarray

data = sort(data);
bin_size = 10;
subs = ceil(data/bin_size);
M = accumarray(subs, data', [length(unique(subs)),1], @mean)
S = accumarray(subs, data', [length(unique(subs)),1], @std)

【讨论】:

  • 感谢您的建议。我在想是否可以直接从直方图箱本身获得平均值和标准偏差。显然不是 =(
  • @user3082696 我敢肯定你不能。该信息不在直方图中。但我已经添加了代码,说明如何使用accumarray 轻松获得它
猜你喜欢
  • 2012-10-15
  • 2016-08-21
  • 2020-12-26
  • 1970-01-01
  • 2016-02-07
  • 2014-04-27
  • 2013-05-22
  • 1970-01-01
  • 2015-11-23
相关资源
最近更新 更多