2017-08-12 4 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'は0を返しませんか?私は、 'x = 0'で常に'(x * v)^ 2'の最小値はないのですか? –

+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)))) 

結果はほぼ同じである例を提供する 。

関連する問題