在matlab中对直方图进行归一化

  • 本文关键字:直方图 matlab matlab
  • 更新时间 :
  • 英文 :


我有一个直方图

hist(A, 801)

其当前类似于正常曲线,但在y=1500处具有最大值,在x=0.5处具有平均值。我想让它正常化,所以我尝试了

h = hist(A, 801)
h = h ./ sum(h)
bar(h)

现在我得到了一条法线曲线,在y=.03时最大,但在x=450时平均。

如何在保持相同x范围的情况下降低频率,使总和为1?

A源自

A = walk(50000, 800, .05, 2, .25, 0)

其中

function [X_new] = walk(N_sim, N, mu, T, sigma, X_init)
delt = T/N;
up = sigma*sqrt(delt);
down = -sigma*sqrt(delt);
p = 1./2.*(1.+mu/sigma*sqrt(delt));
X_new = zeros(N_sim,1);
X_new(1:N_sim,1) = X_init;
ptest = zeros(N_sim,1);
for i = 1:N
    ptest(:,1) = rand(N_sim,1);
    ptest(:,1) = (ptest(:,1) <= p);
    X_new(:,1) = X_new(:,1) + ptest(:,1)*up + (1.-ptest(:,1))*down;
end

代码的总和为1。

您可能希望积分等于1(以便与理论pdf进行比较)。在这种情况下:

[h, c] = hist(A, 801); %// c contains bin centers. They are equally spaced
h = h / sum(h) / (c(2)-c(1)); %// normalize to area 1
trapz(c,h) %// compute integral. Should be approximately 1

最新更新