Comment construire des histogrammes de largeur inégale avec Matlab?
Question
Je voudrais construire un histogramme avec des bacs inégales (intervalles) .. Matlab construire seulement avec bacs égaux histogrammes comme si elle est un diagramme .. !!!
S'il vous plaît aidez-moi ... merci beaucoup !!
La solution
Voici un exemple:
x = randn(100,1)*3; %# some random data
e = [-10 -5 -3 -1 1 2 3 20]; %# edges of intervals: e(i) <= x < end(i+1)
c = histc(x,e); %# get count in each interval
bar(e, c, 'histc') %# bar plot
set(gca, 'xlim',[e(1) e(end)])
Autres conseils
Vous pouvez construire votre propre outil d'histogramme pour créer un histogramme personnalisé que vous le souhaitez.
-
Utilisez histc pour déterminer quels bacs chaque point se trouve à l'intérieur.
-
Utilisez ensuite accumArray pour compter le nombre d'éléments dans chaque bac.
-
Utilisez ensuite pour tirer des barres de vos largeurs choisies. Ou tout simplement créer patches des tailles données. patch utilisation pour cela.
Ou plus simplement, il suffit d'utiliser hist.
hist(rand(1000,1),[0 .1 .3 .6 1])