How can I implement these for loops efficiently using covolution?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
Torsten
2023-8-1
If you don't know how to spell the method, you'd better stick to your loop solution.
采纳的回答
Dyuman Joshi
2023-8-1
编辑:Dyuman Joshi
2023-8-1
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 个评论
Dyuman Joshi
2023-8-22
Please attach your code, so that I can reproduce the error and suggest solutions to tackle the issue.
更多回答(1 个)
Bruno Luong
2023-8-23
编辑:Bruno Luong
2023-8-25
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 个评论
Bruno Luong
2023-8-23
编辑:Bruno Luong
2023-8-25
Have you tried to do some study of the code or you just ask without study conv?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!