matlab中的直方图,但不使用hist函数

时间:2015-10-18 13:47:52

标签: matlab matlab-figure matlab-guide

我有点担心如何在不使用hist函数的情况下在MatLab中绘制直方图

问题是

在(0,100)之间生成一个随机数,并在xy上绘制1000个随机数字,计划为直方图

示例 让间隔为10

x | ÿ

0 -10 | 5

10-20 | 9

20-30 | 15

等等......

其中x是区间,y表示该区间中的重复随机数

我尝试编写此代码

function []=drawhist(a,b)

x=a+(b-a)*rand(1,1000);

bar(x)

end

但是没有给我所需的输出,请帮我理解如何编写这个函数

1 个答案:

答案 0 :(得分:1)

这应该做你想要的,但这是整数。 如果您希望将此概括为flots,则需要定义采样的准确性并定义精度的一半

function [centers,freq] = drawhist(range,interval,density)
% example 
% generate 1000 random integers ranging between 0 and 100;
% drawhist([0,100],10,1000);
V = randi([0,100],density,1); 
min_x = range(1); max_x = range(2); 
bin = linspace(min_x,max_x,interval+1);
freq = zeros(interval,1);
for ii=1:interval
   freq(ii) = sum(V>bin(ii)&V<bin(ii+1));
end
centers = bin(2:end)-(bin(2:end)-bin(1:end-1))/2;
bar(centers,freq);

end

享受