2017-08-12 121 views
-1

我想优化这段代码。我在向量上使用函数fminbnd,并使用循环将其单个条目上的任务分开。MATLAB:使用矢量化加速fminbnd

是否有可能加速向量化过程?

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,-2,2); 
      end 
     end 
    end 

感谢您的关注。

真诚

卢卡

+0

不会'fminbnd'return总是?我的意思是不是'(x * v)^ 2'总是在'x = 0'的最小值? –

+0

无论如何,答案是否定的:原则上,最小化函数并不是矢量化适用的一种任务。 – FTP

回答

0

如果我离散x的域名? 为了提供例如:

x = permute(repmat([-2:0.01:2]',[1,A,B,C]),[2,3,4,1]); 
variable2 = repmat(variable,[1,1,1,length([-2:0.01:2]')]); 
fun = (x.*variable2).^2; 
min_2 = min(fun,[],4); 

要检查结果:

max(max(max(abs(min_ - min_2)))) 

结果是大致相同。