%% circconvs.m % usage: Y = circconvs(X,hp,hn) % Sparse circular convolution % by a causal anti-causal filter pair % Performs circular convolution by hp+hn on X, % the result has the same size as X. % It is assumed that length(hp)+length(hn) <= length(X). % The result is the same as computing the circular % convolution by h = [hp 0 ... 0,hn] % where h has been zero-padded out to the length of X, % hp is the causal part of h and hn is the anticausal part % S. Allen Broughton 28 Oct 10 function Y=circconvs(X,hp,hn) s = length(hn); t = length(X); Z = X(:); Yp = circconv(Z,hp); Yn = circconv(Z,hn); Yn = [Yn(s+1:t);Yn(1,s)]; Y= Yp+Yn; if (size(X,1)==1) Y = Y.'; end;