View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Normalized histogram

4.3 | 18 ratings Rate this file 42 Downloads (last 30 days) File Size: 1.66 KB File ID: #22802 Version: 1.1
image thumbnail

Normalized histogram


Arturo Serrano (view profile)


28 Jan 2009 (Updated )

Same as histogram, but the area sum is 1.

| Watch this File

File Information

HISTNORM Histogram normalized
  [...] = HISTNORM(...) works like HIST, but the frequency is normalized so that area sum is 1.

  Bonus usage!
  [...] = HISTNORM(..., 'plot') plots and returns the output arguments. Be sure 'plot' is the last argument.

      data = randn(1)+randn(1)*randn (10000, 1);
      [xo,no] = histnorm(data, 101, 'plot');
      hold on
      plot (no, normpdf(no, mean(data), std(data)), 'r');
      hold off

  See also: HIST.

  Copyright 2009 DWTFYW.

MATLAB release MATLAB 7.7 (R2008b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (28)
08 Jun 2016 RAM KUMAR J

07 Apr 2016 Ruben

Ruben (view profile)

To work with data values lower than 1 replace 'xonorm' (line 33) var by:
xonorm = xo/sum (xo);

Note: function valid to normalize data in a vector, it is NOT valid for data in matrix format with more than one distribution to be represented.
To do multi-distributions normalization it is required further adjustments.

15 Mar 2016 Mbvalentin

It doesn't seem to work for values of data lower than 1. (mu < 1).

Comment only
16 Feb 2016 Andoni Medina

Sorry just found out the answer! many thanks!!

16 Feb 2016 Andoni Medina

Very nice! How can we add the distribution fitting? (as shown on the image) thanks!

09 Apr 2015 Thangarajah Akilan

22 Nov 2014 ?

? (view profile)

10 Jul 2013 R

R (view profile)

it work fantastic:)how could we use histnorm to calculate normalized histogram for hsv histogram

Comment only
10 Jul 2013 R

R (view profile)

10 Jul 2013 R

R (view profile)

26 Apr 2013 Damien

Damien (view profile)


25 Mar 2013 arnold

arnold (view profile)

nice one, thanks!

22 Mar 2013 Arturo Serrano

Arturo Serrano (view profile)

The *area* must sum up to 1.
Thanks for rating!

Comment only
21 Mar 2013 Linpeng

The columns sum up to 10 instead of 1. Any ideas?

13 Mar 2013 Arturo Serrano

Arturo Serrano (view profile)

*Why* is not working? I don't see any problems. Maybe if you give some clues, we can help.

Comment only
12 Mar 2013 Bernoulli Lizard

This does not work. The height of my bins is on the order of 10^4. What is wrong?

Comment only
22 Jun 2012 ww

ww (view profile)

Fantastic :)

04 Sep 2011 Flavio Prattico


18 Aug 2011 Bob

Bob (view profile)

disregard above comment about the mean...

Comment only
18 Aug 2011 Bob

Bob (view profile)

Doesn't seem to work with non-zero mean data sets. I found that the code below works better. It can not handle the case where you specify your own bin widths. But it can handle a matrix of data.
e.g.: histnorm([randn(1e3,1) randn(1e3,1)+8],50)

function varargout = histnorm(varargin)

len = size(varargin{1});
n = len(2);
[xo,no] = hist (varargin{:});
binwidths = diff(no);
xonorm = xo/sum (xo .* (binwidths(1)*ones(size(xo))))*n;

13 Oct 2010 Anne Calder

Thank you! Works perfect!

Comment only
04 Oct 2010 Arturo Serrano

Arturo Serrano (view profile)

Hi Anne,
you can change the colors by setting properties from the matlab command window. This should does the trick:

>> set (findobj (gca, 'type', 'patch'), 'edgecolor', [0.5 0.5 0.5], 'facecolor', [0.1 0.1 0.1]);

Edgecolor and facecolor values are the RGB values for bin colors (you can use letters also as plot does).

Comment only
03 Oct 2010 Anne Calder

Super useful... was wondering if you can change the colors in the bins. This isn't working for me.

17 Jun 2010 Gustavo

05 Mar 2010 Shahzad Bhatti

It didn't work for me. It is giving same histogram as does hist ... I mean it is not normlizing !!!

@ Author - Any idea - what i am doing wrong ?

Comment only
25 Feb 2010 Ian Baldwin

very useful

Comment only
16 Nov 2009 abdelhamid alhassi

thanks very helpful

20 Feb 2009 Darcy Sabatino

Very helpful. The histnorm() function is virtually as easy as the hist() function.

22 Mar 2013 1.1

Updated the example.

Contact us