Info
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
How can i vectorize this loop?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hi, I have to compute the stucture functions of velocity increments of a velocity sample (vector v) of size 1X13'000'000. My code is the following
for li = 1:20000
vl = v(1+li:end)-v(1:end-li);
S_2(li) = mean(vl.^2);
S_3(li) = mean(vl.^3);
S_4(li) = mean(vl.^4);
end
Is it possible to vectorize this loop to speed up computation ?
Thanks for your answers
3 comentarios
Rik
el 24 de Mayo de 2020
@William, feel free to move that to the answer section.
@Julien, I don't see a way to use a convolution or the mov___ functions, which generally would do something like this. What are you using this for? There might be a way to do a different calculation that gets you the downstream result. A change of algorithm will speed up your code much more than optimizing your code.
Respuestas (1)
William Alberg
el 25 de Mayo de 2020
@Rik told me to move my comment to the answer section, i hope he ment copy-paste :)
I don't know if you can vectorize that, since vl change size every iteration
You can still speed it up a bit by doing the following:
S_2 = nan(L,1);
S_3 = nan(L,1);
S_4 = nan(L,1);
for li = 1:L
vl = v(1+li:end)-v(1:end-li);
temp = vl.^2;
S_2(li) = mean(temp);
temp = temp .* vl;
S_3(li) = mean(temp);
temp = temp .* vl;
S_4(li) = mean(temp);
end
1 comentario
Rik
el 25 de Mayo de 2020
Yes, I did mean copy-pasting the contents of your comment. Actually moving posts between the answer and comment section has been on the wish-list for years now, so I doubt that will be possible any time soon.
La pregunta está cerrada.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!