Matlab中的直方图与约束

时间:2013-08-30 09:57:15

标签: matlab plot histogram

我想用以下输出绘制直方图:

   (a). number of bin
   (b). data in each bin
   (c). bin size for each bin
   (d). bin start & bin end for each 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

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

1 个答案:

答案 0 :(得分: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)

(a)中。箱数

nbin = length(bins);

(b)中。每个箱子中的数据

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

(c)中。每个箱的箱尺寸

hist使用同等大小的垃圾箱,因此

binsize = bins(2)-bins(1)

(d)。 bin start&amp; bin每个bin的结尾

binedges = [bins'-binsize/2 bins'+binsize/2]