histc computes an histogram Syntax [cf, ind] = histc(n, data [,normalization]) [cf, ind] = histc(x, data [,normalization]) Arguments n positive integer (number of classes) x increasing vector defining the classes (x may have at least 2 components) data vector (data to be analysed) cf vector representing the number of values of data falling in the classes defined by n or x ind vector or matrix of same size as data, representing the respective belonging of each element of data data to the classes defined by n or x normalization scalar boolean. normalization=%f (default): cf represents the total number of points in each class, normalization=%t: cf represents the number of points in each class, relatively to the total number of points Description This function computes a histogram of the data vector using the classes x. When the number n of classes is provided instead of x, the classes are chosen equally spaced and x(1) = min(data) < x(2) = x(1) + dx < ... < x(n+1) = max(data) with dx = (x(n+1)-x(1))/n. The classes are defined by C1 = [x(1), x(2)] and Ci = ( x(i), x(i+1)] for i >= 2. Noting Nmax the total number of data (Nmax = length(data)) and Ni the number of data components falling in Ci, the value of the histogram for x in Ci is equal to Ni/(Nmax (x(i+1)-x(i))) when "normalized" is selected and else, simply equal to Ni. When normalization occurs the histogram verifies: when x(1)<=min(data) and max(data) <= x(n+1) Examples Example #1: variations around a histogram of a gaussian random sample d = rand(1, 10000, 'normal'); [cf, ind] = histc(20, d) clf(); histplot(20, d); Example #2: histogram of a binomial (B(6,0.5)) random sample d = grand(1000,1,"bin", 6, 0.5); c = linspace(-0.5,6.5,8); clf() subplot(2,1,1) [cf, ind] = histc(c, d) histplot(c, d, style=2); xtitle("Normalized histogram") subplot(2,1,2) [cf, ind] = histc(c, d, normalization=%f) histplot(c, d, normalization=%f, style=5); xtitle("Non normalized histogram") Example #3: histogram of an exponential random sample lambda = 2; X = grand(100000,1,"exp", 1/lambda); Xmax = max(X); [cf, ind] = histc(40, X) clf() histplot(40, X, style=2); x = linspace(0, max(Xmax), 100)'; plot2d(x, lambda*exp(-lambda*x), strf="000", style=5) legend(["exponential random sample histogram" "exact density curve"]); Example #4: the frequency polygon chart and the histogram of a gaussian random sample n = 10; data = rand(1, 1000, "normal"); [cf, ind] = histc(n, data) clf(); histplot(n, data, style=12, polygon=%t); legend(["normalized histogram" "frequency polygon chart"]); See Also histplot hist3d plot2d dsearch History 5.5.0 Introduction