How can I implement these for loops efficiently using covolution?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaire
Torsten
le 1 Août 2023
If you don't know how to spell the method, you'd better stick to your loop solution.
Réponse acceptée
Dyuman Joshi
le 1 Août 2023
Modifié(e) : Dyuman Joshi
le 1 Août 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 commentaires
Dyuman Joshi
le 22 Août 2023
Please attach your code, so that I can reproduce the error and suggest solutions to tackle the issue.
Plus de réponses (1)
Bruno Luong
le 23 Août 2023
Modifié(e) : Bruno Luong
le 25 Août 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 commentaires
Bruno Luong
le 23 Août 2023
Modifié(e) : Bruno Luong
le 25 Août 2023
Have you tried to do some study of the code or you just ask without study conv?
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!