Home > wafo > kdetools > bincount.m

# bincount

## PURPOSE

1-dimensional Bin Count

## SYNOPSIS

[len,bin,val] = bincount(x,f)

## DESCRIPTION

``` BINCOUNT 1-dimensional Bin Count

CALL: [len,bin, val] = bincount(x,f);
[len,bin]      = bincount(x);

len = vector with the number of equal values in x,
i.e., len(k) = sum(x==bin(k)).
bin = same values as in x, but with no repetitions,
i.e., bin = unique(x).
val = vector with the sum of the corresponding values
i.e., val(k) = sum(f(x==bin(k))).
x   = vector of function arguments, e.g. an integer index vector.
f   = vector of function values, i.e., f(x).

BINCOUNT counts the number of equal values in X, and optionally
adds together any elements of F which have duplicate values of X into VAL.

Example:
N  = 500; dx = 0.2;
f  = wraylrnd(1,N,1);
ix = floor(f/dx)+1;
[len,bin] = bincount(ix);
plot((bin-.5)*dx,len/N/dx,'.') % 1D probability density plot
bar((bin-.5)*dx,len/N/dx)      % 1D probability density plot
bar((bin-.5)*dx,len)           % 1D Histogram

## CROSS-REFERENCE INFORMATION

This function calls:
 csort Counting sorting diff Difference and approximate derivative. error Display message and abort function.
This function is called by:
 dist2dfit Parameter estimates for DIST2D data. gridcount D-dimensional histogram using linear binning.

## SOURCE CODE

```001 function [len,bin,val] = bincount(x,f)
002 %BINCOUNT 1-dimensional Bin Count
003 %
004 %  CALL: [len,bin, val] = bincount(x,f);
005 %        [len,bin]      = bincount(x);
006 %
007 %  len = vector with the number of equal values in x,
008 %        i.e., len(k) = sum(x==bin(k)).
009 %  bin = same values as in x, but with no repetitions,
010 %        i.e., bin = unique(x).
011 %  val = vector with the sum of the corresponding values
012 %        i.e., val(k) = sum(f(x==bin(k))).
013 %  x   = vector of function arguments, e.g. an integer index vector.
014 %  f   = vector of function values, i.e., f(x).
015 %
016 % BINCOUNT counts the number of equal values in X, and optionally
017 % adds together any elements of F which have duplicate values of X into VAL.
018 %
019 %  Example:
020 %  N  = 500; dx = 0.2;
021 %  f  = wraylrnd(1,N,1);
022 %  ix = floor(f/dx)+1;
023 %  [len,bin] = bincount(ix);
024 %  plot((bin-.5)*dx,len/N/dx,'.') % 1D probability density plot
025 %  bar((bin-.5)*dx,len/N/dx)      % 1D probability density plot
026 %  bar((bin-.5)*dx,len)           % 1D Histogram
027 %
029
030 %Tested on: Matlab 5.3
031 %History:
032 % revised pab Dec2003
033 % renamed from binc to bincount
034 % by pab 14.08.2001
035
036 % check number of input arguments
037 error(nargchk(1, 2, nargin));
038
039 isiz = size(x);
040 ldim = isiz > 1;
041 if sum(ldim) > 1
042   error('Input must be a vector.');
043 end
044
045 % make sure input is a column vector
046 x = x(:);
047
048 %
049 try,
050   % Try counting sort
051   [x, ind] = csort(x); % assuming integer values
052 catch
053   [x, ind] = sort(x); % general
054 end
055 % Find indices to unique values
056 i = [ find(diff(x)) ; length(x) ];
057
058 if nargout>1,
059   bin = x(i); % bin = unique(x);
060 end
061 i = [ 0 ; i ];
062
063 len = diff(i);
064
065 % Make sure that the output is a vector in the same dimension as input
066 osiz       = isiz;
067 osiz(ldim) = length(len);
068 len        = reshape(len, osiz);
069
070 val = [];
071 if (nargin>1 & nargout>2),
072   if any(isiz~=size(f)),
073     error('The size of x and f must be equal!'),
074   end
075   f   = f(:);
076   f   = [ 0; cumsum(f(ind))];
077   val = diff(f(i+1));
078   val = reshape(val, osiz);
079 end
080
081
082
083
084
085
086
087```

Mathematical Statistics
Centre for Mathematical Sciences
Lund University with Lund Institute of Technology

Comments or corrections to the WAFO group

Generated on Thu 06-Oct-2005 02:21:16 for WAFO by m2html © 2003