Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

How can i vectorize this loop?

조회 수: 1 (최근 30일)
Julien Neuhaus
Julien Neuhaus 2020년 5월 24일
마감: MATLAB Answer Bot 2021년 8월 20일
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
Rik
Rik 2020년 5월 24일
@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.
Julien Neuhaus
Julien Neuhaus 2020년 5월 25일
@William, Thank you it works better like this.
@Rik I have to compute it in a project about turbulence in a fluid flow at university, but the solution from William is already a good optimization.
Thanks to you two

답변 (1개)

William Alberg
William Alberg 2020년 5월 25일
@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
Rik
Rik 2020년 5월 25일
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.

제품


릴리스

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by