annotate histogram/hist2d.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents ce9021da6ce2
children
rev   line source
samer@57 1 function [NN,map1,map2]=hist2d(X,m1spec,m2spec,varargin)
samer@57 2 % hist2d - 2D histogram
samer@57 3 %
samer@57 4 % hist2d ::
samer@57 5 % [[N,2]] ~'N rows of 2D data',
samer@57 6 % (K1:natural | dmap(K1)) ~'num bins for dim 1, or bins',
samer@57 7 % (K2:natural | dmap(K2)) ~'num bins for dim 1, or bins'
samer@57 8 % -> [[K1,K2]->natural] ~'bin counts',
samer@57 9 % dmap(K1),
samer@57 10 % dmap(K2).
samer@57 11 %
samer@57 12 % if second map spec is empty, it means use the same map
samer@57 13 % for both dimensions.
samer@57 14
samer@57 15 mins=min(X); mm=max(X); maxs=mm+eps(mm);
samer@57 16 map1=mkdmap(mins(1),maxs(1),m1spec,[]);
samer@57 17 map2=mkdmap(mins(2),maxs(2),m2spec,m1spec);
samer@57 18
samer@57 19 N=accumhist([map1(X(:,1)) map2(X(:,2))],1,[cardr(map1) cardr(map2)]);
samer@57 20 if nargout==0,
samer@57 21 opts=prefs('cmap',@(t)log(1+t),varargin{:});
samer@57 22 imagexy(centres(map2),centres(map1),opts.cmap(N));
samer@57 23 else
samer@57 24 NN=N;
samer@57 25 end
samer@57 26
samer@57 27
samer@57 28 function M=mkdmap(min,max,spec,def)
samer@57 29 if isempty(spec), spec=def; end
samer@57 30 if isa(spec,'dmap') % is alread a dmap
samer@57 31 M=spec;
samer@57 32 elseif length(spec)==1, % spec=number of bins
samer@57 33 M=linmap(min,max,spec);
samer@57 34 else
samer@57 35 error('invalid discretisation map');
samer@57 36 end
samer@57 37