MATLAB:使用矢量化加速 fminbnd

MATLAB: Speed up fminbnd using vectorization

我正在尝试优化这段代码。我在向量上使用函数 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

感谢关注

此致

卢卡

如果我将 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))))

结果差不多