Matlab 从直方图生成概率

Matlab 从直方图生成概率,matlab,histogram,probability,Matlab,Histogram,Probability,假设我们有以下代码 >> B=xlsread('data_generations1','A1','g8:g301'); >> [pxx,f]=periodogram(B,[],[],100); >> [peaks,location]=findpeaks(pxx); >> length(peaks) ans = 88 >> hist(peaks,40) >> [pxx,f]=periodogram(B,[],[]

假设我们有以下代码

>> B=xlsread('data_generations1','A1','g8:g301');
>> [pxx,f]=periodogram(B,[],[],100);
>> [peaks,location]=findpeaks(pxx);
>> length(peaks)

ans =

    88

>> hist(peaks,40)
>> [pxx,f]=periodogram(B,[],[],100);
>> pxn=pxx./sum(pxx);
>> [peaks,location]=findpeaks(pxn);
>> hist(peaks,40)
>> 
我们有以下图片

我想从matlab中的这个直方图生成概率,这样所有这些概率的总和应该等于1,但我不知道怎么做,所以请帮助我,提前谢谢

编辑: 按照指示,我得到了下面的图片


你必须规范化,使总概率总和为1


通常,这意味着对直方图求和或积分(如果函数是连续的),然后进行除法。

如果您不知道底层分布,那么函数ksdensity(需要统计工具箱)可能很有用:

x = [randn(3000,1); 15+randn(3000,1)];
figure; hist(x,40)


peaks./sum(peaks)像这样?@datodatuashvili-是的,但如何确定分布类型?我将绘制结果,请告诉我它是什么类型的分布?它是什么类型的分布?我上传了图片我不知道数据的分布类型,但ksdensity不需要这些信息。如果你知道发行版,很可能函数是一个更好的选择。我问了另一个与发行版相关的问题,提前谢谢
[f,xi] = ksdensity(x);
figure; plot(xi,f);