Mercurial > hg > smallbox
view Problems/private/countcover.m @ 57:3a58e70e8cbe
(none)
author | idamnjanovic |
---|---|
date | Mon, 14 Mar 2011 17:06:07 +0000 |
parents | 41a5a3c26961 |
children |
line wrap: on
line source
function cnt = countcover(sz,blocksize,stepsize) %COUNTCOVER Covering of signal samples by blocks % CNT = COUNTCOVER(SZ,BLOCKSIZE,STEPSIZE) assumes a p-dimensional signal % of size SZ=[N1 N2 ... Np] covered by (possibly overlapping) blocks of % size BLOCKSIZE=[M1 M2 ... Mp]. The blocks start at position (1,1,..,1) % and are shifted between them by steps of size STEPSIZE=[S1 S2 ... Sp]. % COUNTCOVER returns a matrix the same size as the signal, containing in % each entry the number of blocks covering that sample. % % See also IM2COLSTEP, COL2IMSTEP, IM2COL. % Ron Rubinstein % Computer Science Department % Technion, Haifa 32000 Israel % ronrubin@cs % % August 2008 cnt = ones(sz); for k = 1:length(sz) % this code is modified from function NDGRID, so it computes one % output argument of NDGRID at a time (to conserve memory) ids = (1:sz(k))'; s = sz; s(k) = []; ids = reshape(ids(:,ones(1,prod(s))),[length(ids) s]); ids = permute(ids,[2:k 1 k+1:length(sz)]); cnt = cnt .* max( min(floor((ids-1)/stepsize(k)),floor((sz(k)-blocksize(k))/stepsize(k))) - ... max(ceil((ids-blocksize(k))/stepsize(k)),0) + 1 , 0 ); end