Easy convolution of multiple vectors
26 views (last 30 days)
Show older comments
For the convolution of three vectors I'm doing:
A = [1 2];
B = [3 4];
C = [5 6];
res_aux = conv(A,B);
res = conv(res_aux,C);
Is there an easier way? Something like: res = multiconv({A,B,C})
An alternative would be using cellfun but it's slower.
0 Comments
Accepted Answer
Matt J
on 23 Sep 2014
Edited: Matt J
on 23 Sep 2014
Here's an fft-based approach
data=[1 2;3 4;5 6].';
n=(size(data,1)-1)*size(data,2)+1;
result = ifft(prod(fft(data,n),2),'symmetric')
2 Comments
Matt J
on 23 Sep 2014
OK. I'm not sure it's faster/more efficient than a plain for-loop, though. It involves complex-valued arithmetic and probably about 4 times more memory consumption.
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!