Plotting gaussian on histograms

2 vues (au cours des 30 derniers jours)
Kash022
Kash022 le 2 Nov 2016
I have a hist distribution as shown. I now want to plot gaussians on top of this proportional to the number of occurences as shown. I am using the below code snippet to generate the histograms and then trying to plot the gaussians for each. The final output should look like a gaussian mixture which I am not getting. Please help! Thanks!
figure(3); subplot(1,5,1); clear x,y; [x,y] = hist(HW(1,:),[0:4]); stem(y,x); /* HW is a 16x16 matrix */
/**** for plotting gaussians ****/
x=[0:0.25:4];
for kk = 1:16
norm = pdf('Normal',x,HW(1,kk),0.25); /* my mean should be HW(1,kk) with sigma=0.25 */
plot(x,norm);hold on;
end

Réponses (2)

Steven Lord
Steven Lord le 2 Nov 2016
Rather than calling hist, call histogram and tell it to use 'pdf' Normalization.
% Create histogram from sample data A
A = repelem(0:4, [1 4 6 4 1]);
h = histogram(A, 'Normalization', 'pdf');
% Customize Y axis tick location and labels
ax = ancestor(h, 'axes');
ax.YTick = (0:6)./16;
ax.YTickLabel = {'0/16', '1/16', '2/16', '3/16', '4/16', '5/16', '6/16'};
  2 commentaires
Kash022
Kash022 le 3 Nov 2016
It does not plot the gaussian mixture. Simply the histograms have been plotted which I don't need. I just need to see the gaussian pdfs overlapping with one another for given mu and sigma.
Kash022
Kash022 le 3 Nov 2016
I have tried using the normpdf as shown below but do not get any output.
A = repelem(0:4, [1 4 6 4 1]);
for i = 1:size(A,2)
norm(i) = normpdf(A(i),HW(1,i),0.25);
plot(A(i),norm(i));
end

Connectez-vous pour commenter.


Tian Tian
Tian Tian le 4 Août 2017
Hi Kash022,was your problem get solved? I also need to apply Gaussian filter to a histogram plot and find smoothed peaks. Could you please give me some ideas on applying Gaussian filter? Which code did you use? Many thanks. Tian

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by