Short Length Convolution Speed Up
Ältere Kommentare anzeigen
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 Kommentare
Matt J
am 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
am 23 Jan. 2022
Alexander Voznesensky
am 23 Jan. 2022
Alexander Voznesensky
am 23 Jan. 2022
Matt J
am 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
am 23 Jan. 2022
Alexander Voznesensky
am 23 Jan. 2022
Bearbeitet: Alexander Voznesensky
am 23 Jan. 2022
Akzeptierte Antwort
Weitere Antworten (1)
Matt J
am 23 Jan. 2022
0 Stimmen
Do you have the Parallel Computing Toolbox and a decently powerful GPU? If so, filter() is enabled for gpuArrays.
Kategorien
Mehr zu Signal Modeling finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
