1

我想绘制具有以下输出的直方图:

   (a). number of bin
   (b). data in each bin
   (c). bin size for each bin
   (d). bin start & bin end for each bin

每个 bin 必须至少有 7 个元素。我尝试了这样的事情

  data = rand(100,1);
  n = hist(data);

这将给出这样的结果

  10     8    12    12    10     3    10    12    12    11

当我尝试

  n = hist(data,7);

我有

  15    14    17     9    11    16    18

&这正是我想要的,每个垃圾箱中至少有 7 个元素!& 同时我也想介绍 (c) & (d) 部分。

所以,为了确保我在每个 bin 中获得了正确数量的元素,我尝试了这样的方法:

  data = rand(100,1);
  i = length(data);
  n = hist(data, i);
  min_number = 7;   % minimum no. in each bin
  for j = 1:length(n)
     if n(j) < min_number
      i = i-1;
      n = hist(data,i);
     end
  end

但我犯了一些错误。谢谢你的帮助。

4

1 回答 1

1

我认为这个基于你自己的代码会做到这一点:

data = rand(100,1);
i = length(data);
n = hist(data, i);
min_number = 7;   % minimum no. in each bin
while any(n < min_number)
     i = i-1;
     [n bins] = hist(data,i);
end

figure
bar(bins,n)

(一种)。仓数

nbin = length(bins);

(b)。每个 bin 中的数据

  • 如果您的意思是每个 bin 的计数,那当然是直接返回histn
  • 如果您的意思是,从每个数据条目指向其相应 bin 的指针,我建议修改hist(将副本作为您自己的个人版本)以返回在histc内运行的输出,或者在找出直方图的边缘后hist调用。histc

(C)。每个 bin 的 bin 大小

hist使用同样大小的箱子,因此

binsize = bins(2)-bins(1)

(d)。每个 bin 的 bin start 和 bin end

binedges = [bins'-binsize/2 bins'+binsize/2]
于 2013-08-30T15:18:38.493 回答