How can I implement these for loops efficiently using covolution?
Show older comments
I have this code
for xx=1:length(x)
for kk=1:length(x)
xSinc(xx) = xSinc(xx)+x(kk)*sinc(xx-kk-delta/T);
end
end
How can implement this efficiently using convultion in MATLAB?
1 Comment
Torsten
on 1 Aug 2023
If you don't know how to spell the method, you'd better stick to your loop solution.
Accepted Answer
More Answers (1)
Bruno Luong
on 23 Aug 2023
Edited: Bruno Luong
on 25 Aug 2023
Use conv
x = (0:0.2:5).^2;
L = 3;
delta = rand; T = rand;
% Your method
xSinc = zeros(size(x));
for xx = 1:length(x)
for kk=max(xx-L,1):min(xx+L,length(x))
xSinc(xx) = xSinc(xx)+x(kk)*sinc(xx-kk-delta/T);
end
end
xSinc
% conv method
xSinc2 = conv(x, sinc((L:-1:-L)+delta/T), 'same')
norm(xSinc2-xSinc)
plot(xSinc, 'b')
hold on;
plot(xSinc2, 'r.')
3 Comments
MAWE
on 23 Aug 2023
MAWE
on 23 Aug 2023
Bruno Luong
on 23 Aug 2023
Edited: Bruno Luong
on 25 Aug 2023
Have you tried to do some study of the code or you just ask without study conv?
Categories
Find more on Dynamic System Models 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!