我想用以下输出绘制直方图:
(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
但我犯了一些错误。谢谢你的帮助。
答案 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
当然hist
(将副本作为你自己的个人版本)以返回运行的histc
的输出在hist
之内,或在确定直方图的边缘后调用histc
。(c)中。每个箱的箱尺寸
hist
使用同等大小的垃圾箱,因此
binsize = bins(2)-bins(1)
(d)。 bin start&amp; bin每个bin的结尾
binedges = [bins'-binsize/2 bins'+binsize/2]