Bins 2d data quickly inputs: xmin, xmax, ymin,ymax - limits for gridder pixel_size xx,yy,zz are your x-,y- and z-data to be binned outputs: Zmap - binned data ZmapIdx - no. of points in each pixel yidx - y-axis of new grid xidx - x-axis of new grid
0001 function [Zmap, xidx, yidx, ZmapIdx] = bin_quickly2d(xmin,xmax,ymin,ymax, pixel_size, xx, yy, zz) 0002 0003 % Bins 2d data quickly 0004 % inputs: 0005 % xmin, xmax, ymin,ymax - limits for gridder 0006 % pixel_size 0007 % xx,yy,zz are your x-,y- and z-data to be binned 0008 % 0009 % outputs: 0010 % Zmap - binned data 0011 % ZmapIdx - no. of points in each pixel 0012 % yidx - y-axis of new grid 0013 % xidx - x-axis of new grid 0014 0015 yidx=[ymin:pixel_size:ymax]; 0016 xidx=[xmin:pixel_size:xmax]; 0017 0018 %yidx=[min(yy):dy:max(yy)]; 0019 %xidx=[min(xx):dx:max(xx)]; 0020 ZmapSum=zeros(length(yidx),length(xidx)); 0021 ZmapIdx=zeros(size(ZmapSum)); 0022 0023 [nx,binx] = histc(xx,xidx); 0024 [ny,biny] = histc(yy,yidx); 0025 %bin==0 means the value is out of range 0026 binx=binx+1; biny=biny+1; 0027 %binzero=( (binx==0) | (biny==0) ); 0028 %binx(binzero) = []; 0029 %biny(binzero) = []; 0030 %xx(binzero) = []; 0031 %yy(binzero) = []; 0032 %zz(binzero) = []; 0033 0034 %binx and biny give their respective bin locations 0035 for i=1:1:length(xx) 0036 ZmapSum(biny(i),binx(i))=ZmapSum(biny(i),binx(i))+zz(i); 0037 ZmapIdx(biny(i),binx(i))=ZmapIdx(biny(i),binx(i))+1; 0038 end 0039 0040 Zmap=ZmapSum./ZmapIdx;