Assignment statement very time consuming

조회 수: 5 (최근 30일)
Bryan Ehlers
Bryan Ehlers 2021년 12월 14일
답변: Walter Roberson 2021년 12월 15일
I ran the profiler on a time consuming function that I have and found that the most time consuming line of code is:
avgVal(:, :, k) = mean(val);
I preallocate the avgVal and val is an array of numbers. I'm wondering is there something I'm doing that is inefficient? The only reason I could think of is that the first and second dimensions of avgVal are large so this statement is requiring a lot of entries to be filled in.
Is there anything that I may be overlooking?
Edit:
The size of avgVal is 4000-by-100-by-6 and the size of val is 36-by-1.
  댓글 수: 2
James Tursa
James Tursa 2021년 12월 15일
We need to see the surrounding code and the actual sizes involved.
Bryan Ehlers
Bryan Ehlers 2021년 12월 15일
I have added the sizes

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2021년 12월 15일
Are you sure that you want to set an entire 4000 x 100 slice of avgVal to be the same scalar? With val being 36 by 1, mean() of it would be a scalar.
If you are doing all 6 slices, it would possibly be faster to record the 6 means as a 1 x 1 x 6 vector, and then repmat() it to the 4000 x 100 x 6 size.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by