Speed up fminbnd using vectorization
3 次查看(过去 30 天)
显示 更早的评论
I am trying to optimize this piece of code. I am using the function fminbnd on a vector, splitting the task on its single entries using a loop.
Would it be possible to speed it up vectorizing the process?
for i = 1:A
for ii= 1:B
for iii = 1:C
fun = @(x) (x * variable(i,ii,iii))^2 ;
[arg_min(i,ii,iii), min_(i,ii,iii)] = fminbnd(fun,0,2);
end
end
end
Thanks for the attention.
Sincerely
Luca
0 个评论
采纳的回答
Matt J
2017-8-12
In your example, the solution is always x=0, so a trivial vectorized solution would be
arg_min=zeros(A,B,C);
min_ = arg_min;
More generally, no, vectorization will not help in a situation like this. You could consider parallelizing the loop using PARFOR.
0 个评论
更多回答(2 个)
Nick Durkee
2018-5-24
编辑:Matt J
2018-5-24
I actually developed a solution to this problem for my research. It's available on the file exchange.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!