function y = dconv( x, f1, f2) x = x(:); f1 = f1(:); f2 = f2(:); % Cache these guys l = max( size( x)); lf = length( f1); y = zeros( l, 1); % Preprocess filters to speed up things f1 = f1'/l; f2 = f2'/l; % Do transient state convolution for i = 1:lf-1 f = i*f2 + (l-i)*f1; y(i) = f(1:i) * x(i:-1:1); end % Do steady state convolution for i = lf:l f = i*f2 + (l-i)*f1; y(i) = f * x(i:-1:i-lf+1); end