How can I implement these for loops efficiently using covolution?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Torsten
il 1 Ago 2023
If you don't know how to spell the method, you'd better stick to your loop solution.
Risposta accettata
Dyuman Joshi
il 1 Ago 2023
Modificato: Dyuman Joshi
il 1 Ago 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 Commenti
Dyuman Joshi
il 22 Ago 2023
Please attach your code, so that I can reproduce the error and suggest solutions to tackle the issue.
Più risposte (1)
Bruno Luong
il 23 Ago 2023
Modificato: Bruno Luong
il 25 Ago 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 Commenti
Bruno Luong
il 23 Ago 2023
Modificato: Bruno Luong
il 25 Ago 2023
Have you tried to do some study of the code or you just ask without study conv?
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!