How can I implement these for loops efficiently using covolution?
1 view (last 30 days)
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
Dyuman Joshi
on 1 Aug 2023
Edited: Dyuman Joshi
on 1 Aug 2023
Simple multiplication would be good enough -
xx = 1:length(x);
kk = 1:length(x);
xSinc(xx) = xSinc(xx) + x(kk)*sinc(xx-kk'-delta/T);
5 Comments
Dyuman Joshi
on 22 Aug 2023
Please attach your code, so that I can reproduce the error and suggest solutions to tackle the issue.
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
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?
See Also
Categories
Find more on Loops and Conditional Statements 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!