2014-07-10 7 views
1

suppose que nous avons le code suivantgénérer des probabilités d'histogramme

>> 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) 
>> 

et nous avons ci-dessous des photos

enter image description here

je veux générer des probabilités de cet histogramme en Matlab de sorte que la somme de tous ces les probabilités devraient être égales à 1, mais je ne sais pas bien comment faire, alors s'il vous plaît aidez-moi, merci d'avance

EDITED: après l'instruction suivante, j'ai l'image suivante

enter image description here

Répondre

1

Si vous ne connaissez pas la distribution sous-jacente, peut-être la fonction ksdensity (Statistics Toolbox requise) est utile:

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

enter image description here

[f,xi] = ksdensity(x); 
figure; plot(xi,f); 

enter image description here

+0

je vais tracer le résultat, et les moyens etell meell ce type de distribution c'est ok? –

+0

quel type de distribution il est? J'ai mis photo –

+0

Je ne connais pas le type de distribution de vos données, mais ksdensity ne nécessite pas cette information. Si vous connaissez la distribution, probabily la fonction [histfit] (http://www.mathworks.es/es/help/stats/histfit.html#inputarg_dist) est une meilleure option. –

2

Vous devez normaliser afin que les probabilités somme totale à un.

Typiquement, cela signifie faire une somme sur l'histogramme ou l'intégrer si la fonction est continue, puis diviser.

+0

peaks./sum (pics) comme ça? –

+0

@datodatuashvili - Oui – rayryeng

+0

mais comment déterminer le type de distributions? –

Questions connexes