function ff = showbylevel( w, L, levels) % FUNCTION: showbylevel % % SYNOPSIS: FF = showbylevel( W, L, [LEVELS]) % % DESCRIPTION: Given a vector of wavelet coefficients W and % a low-pass wavelet filter L, SHOWBYLEVEL plots the % components at each level of the inverse DPWT % of W from coarsest down to finest resolution. % % LEVELS is an optional argument specifying the % levels the use wishes to be reconstructed and % plotted. If only the first 2 arguments are % used reconstructions at all levels are % plotted. level numbers must be integers % between -1 and log2(length(w)) - 1. % % FF is a length(W) by length(LEVELS) % matrix (If LEVELS is not specified then % length(LEVELS) = log2(length(w)). % % EXAMPLE: figure, % f = sin(pi*[0:(2^7 - 1)]/2^5)'; % w = dpwt(f,daubcofs(2)); % ff = showbylevel(w,daubcofs(2)); % % To see the cumulative result of adding the % contributions of decreasing levels together % enter, after the above: % % figure, waterfall(cumsum(ff')) % % NOTE: The run time of this function can take awhile since % log2(length(w)) IDPWT's are being performed on sequences % of length length(w). % % AUTHOR: Neil Getz % DATE: 5-4-92 % % COPYRIGHT 1992, Neil Getz % if (nargin > 3 | nargin <2 ), help showbylevel; return; end lenw = length(w); p = log(lenw)/log(2); if(nargin==2), levels = ( p - 1 ):-1:-1; % default else % nargin is 3. Check for legitimate level numbers Validlevels = ( rem(levels,1) == 0 ) & (levels >= -1) ... & ( levels <= p-1 ); if ( sum(~Validlevels ~= 0 ) ), error('showbylevel: Invalid level numbers (arg4).'); end end ff = zeros(lenw, length(levels)); for i = 1:length(levels), z = zeros(size(w)); coordsati = getlevel( w, levels(i) ); wffi = putlevel( z, coordsati, levels(i) ); ff(:,i) = column(idpwt( wffi , L )); end S = waterfall(ff'); view([142,30])