find the minimal value of a vector

1 ビュー (過去 30 日間)
Chaoyang Jiang
Chaoyang Jiang 2018 年 4 月 30 日
コメント済み: Chaoyang Jiang 2018 年 5 月 1 日
I wanna find the minimal value of column b with logical c of vector a. When b is super big , max operation takes a very long time(as shown in fig below). How to vectorize the for loop to reduce the calling times of max (the simplified code is shown below)?
a=[1 3 4 52];
b=[2 3 4];%column index
c=logical([1 0 1;1 1 0; 0 0 1]);
for i=1:length(b)


Walter Roberson
Walter Roberson 2018 年 4 月 30 日
No, there is no faster version. We discussed this already in one of your previous questions where you were asking about max(). As I said then in
"If you break out the timing, you will likely find that the cost is in extracting the sub-array c(1,d) to send to the min() function. min() is at worst a linear operation (I say at worst because in theory it could be run in parallel for sufficiently large arrays.)"
If you calculate
>> 9925.39/14867689025
ans =
You can see that it is taking about 6.6E-7 seconds per iteration. That is twice as fast as just making one anonymous function call:
>> timeit(@() fun(),0)
ans =
so that is really pretty efficient; the Just In Time compiler must be doing a really good job with it.
  1 件のコメント
Chaoyang Jiang
Chaoyang Jiang 2018 年 5 月 1 日
Thanks a lot for your answer!


その他の回答 (0 件)


Community Treasure Hunt

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

Start Hunting!

Translated by