Assignment statement very time consuming
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
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.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!