Short Length Convolution Speed Up
Show older comments
Hi! I need to perform a short-length convolution. The signal length is N=2^18=262144, and the filter length is M=1...64. The most interesting filter length is M=15. The basic solution is to use the filter function. To increase the speed, I use fftfilt, but it is more efficient for long sequences. I need to get a gain in speed compared to the filter function with N=262144 and M=15. What is possible to do in this case?
Сonvolution complexity is M*N, FFT - Nlog2N. So the gain is for M>log2N. In my case M>18. But I have M between 256 and 512. Why?

8 Comments
Matt J
on 23 Jan 2022
So the gain is for M>log2N. In my case M>18.
Don't you mean M<log2N and M<18?
Alexander Voznesensky
on 23 Jan 2022
Alexander Voznesensky
on 23 Jan 2022
Alexander Voznesensky
on 23 Jan 2022
Matt J
on 23 Jan 2022
It is not necessarily the number of multiplications that matters. If fftfilt is highly parallelized (it probably is), it can be faster than a non-parallelized routine that has lower computational complexity.
Alexander Voznesensky
on 23 Jan 2022
Alexander Voznesensky
on 23 Jan 2022
Edited: Alexander Voznesensky
on 23 Jan 2022
Accepted Answer
More Answers (1)
Matt J
on 23 Jan 2022
0 votes
Do you have the Parallel Computing Toolbox and a decently powerful GPU? If so, filter() is enabled for gpuArrays.
Categories
Find more on Fourier Analysis and Filtering in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!