from ndhistc by Kangwon Lee
Multi dimensional histogram

ndHistc.m
% function qHistogram = ndHistc (mData, vEdge1, vEdge2, ... )
%
% * Input Arguments: 
%
%      + mData: nRecord by nDim 2-dimensional array of doubles
%      + vEdge1, vEdge2, ... : nDim vectors of histogram edges
%
% * Return value:
%
%      + qHistogram: nDim-dimensional data cube 
%           containing number of points in each cell 
%           defined by histogram edges. For instance, 
%           qHistogram(1,1,1,...) means number of data points
%           satisfying 
%               vEdge1(1) <= mData(:,1) < vEdge1(2) & ...
%               vEdge2(1) <= mData(:,2) < vEdge2(1) & ...
%               vEdge3(1) <= mData(:,3) < vEdge3(1) & ...
%               ...
% * Example
%       mRand = rand(1e6,5);
%       ve1 = linspace(0,1,5);
%       ve2 = linspace(0,1,6);
%       ve3 = linspace(0,1,7);
%       ve4 = linspace(0,1,8);
%       ve5 = linspace(0,1,9);
%       qHist = ndhistc(mRand, ve1, ve2, ve3, ve4, ve5);
%      
% * Comparison with ndhist.m (compiled using mcc -x ndhist)
%      + 1e6 by 2 data -> 5 by 6
%          ndhist.m    79.49   sec
%          ndhistc.c    0.4610 sec
%
%      + 1e6 by 5 data -> 5 by 6 by 7 by 8 by 9
%          ndhist.m   199.32   sec
%          ndhistc.c    2.4430 sec
%
%      ==> More efficient if More data points & Less dimensions
%

%   CopyLEFT (c) 2003 by Kangwon "Wayne" Lee. ;)
%   $Revision: 1.0 $
%   Implemented in a MATLAB mex file.
%#mex

Contact us at files@mathworks.com