Mercurial > hg > qm-dsp
annotate ext/kissfft/test/tailscrap.m @ 416:1f3244a6884c
Add filter test
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Wed, 07 Oct 2015 10:07:30 +0100 |
parents | 1f1999b0f577 |
children |
rev | line source |
---|---|
c@409 | 1 function maxabsdiff=tailscrap() |
c@409 | 2 % test code for circular convolution with the scrapped portion |
c@409 | 3 % at the tail of the buffer, rather than the front |
c@409 | 4 % |
c@409 | 5 % The idea is to rotate the zero-padded h (impulse response) buffer |
c@409 | 6 % to the left nh-1 samples, rotating the junk samples as well. |
c@409 | 7 % This could be very handy in avoiding buffer copies during fast filtering. |
c@409 | 8 nh=10; |
c@409 | 9 nfft=256; |
c@409 | 10 |
c@409 | 11 h=rand(1,nh); |
c@409 | 12 x=rand(1,nfft); |
c@409 | 13 |
c@409 | 14 hpad=[ h(nh) zeros(1,nfft-nh) h(1:nh-1) ]; |
c@409 | 15 |
c@409 | 16 % baseline comparison |
c@409 | 17 y1 = filter(h,1,x); |
c@409 | 18 y1_notrans = y1(nh:nfft); |
c@409 | 19 |
c@409 | 20 % fast convolution |
c@409 | 21 y2 = ifft( fft(hpad) .* fft(x) ); |
c@409 | 22 y2_notrans=y2(1:nfft-nh+1); |
c@409 | 23 |
c@409 | 24 maxabsdiff = max(abs(y2_notrans - y1_notrans)) |
c@409 | 25 |
c@409 | 26 end |