| function maxabsdiff=tailscrap() |
| % test code for circular convolution with the scrapped portion |
| % at the tail of the buffer, rather than the front |
| % |
| % The idea is to rotate the zero-padded h (impulse response) buffer |
| % to the left nh-1 samples, rotating the junk samples as well. |
| % This could be very handy in avoiding buffer copies during fast filtering. |
| nh=10; |
| nfft=256; |
| |
| h=rand(1,nh); |
| x=rand(1,nfft); |
| |
| hpad=[ h(nh) zeros(1,nfft-nh) h(1:nh-1) ]; |
| |
| % baseline comparison |
| y1 = filter(h,1,x); |
| y1_notrans = y1(nh:nfft); |
| |
| % fast convolution |
| y2 = ifft( fft(hpad) .* fft(x) ); |
| y2_notrans=y2(1:nfft-nh+1); |
| |
| maxabsdiff = max(abs(y2_notrans - y1_notrans)) |
| |
| end |