MATLAB 优化拟合函数调用
MATLAB optimizing fitting function calls
我有一个 3D 维度数组(行 x 列 x 8)。对于前两个维度中的每个元素,我在第三个维度上有 8 个值,我必须将它们拟合到一个方程式中,例如指数、多项式等。我已经为这个函数编写了代码,我目前正在通过循环生成我的输出前两个维度,如下:
for i=1:rows
for j=1:cols
outputArray(i,j) = functionHandle(inputArray(i,j,1:8));
end
end
我能否以某种方式使用 bsxfun、arrayfun 或其他一些矢量化方法来摆脱 for 循环,以便我使用类似的方法生成我的输出?
outputArray = bsxfun(@functionHandle,inputArray)
添加函数句柄
function output = functionHandle(xData,yData)
ft = fittype( 'a*exp(-b*x)+c','independent', 'x','dependent','y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Algorithm = 'Trust-Region';
opts.Display = 'Off';
opts.MaxFunEvals = 100;
opts.MaxIter = 100;
opts.Robust = 'LAR';
opts.Lower = [-Inf 0 -Inf];
opts.StartPoint = [0.35 0.05 0.90];
% Fit model to data.
[FitResult,~] = fit(xData,yData,ft,opts);
output = FitResult.a;
end
我有一个 3D 维度数组(行 x 列 x 8)。对于前两个维度中的每个元素,我在第三个维度上有 8 个值,我必须将它们拟合到一个方程式中,例如指数、多项式等。我已经为这个函数编写了代码,我目前正在通过循环生成我的输出前两个维度,如下:
for i=1:rows
for j=1:cols
outputArray(i,j) = functionHandle(inputArray(i,j,1:8));
end
end
我能否以某种方式使用 bsxfun、arrayfun 或其他一些矢量化方法来摆脱 for 循环,以便我使用类似的方法生成我的输出?
outputArray = bsxfun(@functionHandle,inputArray)
添加函数句柄
function output = functionHandle(xData,yData)
ft = fittype( 'a*exp(-b*x)+c','independent', 'x','dependent','y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Algorithm = 'Trust-Region';
opts.Display = 'Off';
opts.MaxFunEvals = 100;
opts.MaxIter = 100;
opts.Robust = 'LAR';
opts.Lower = [-Inf 0 -Inf];
opts.StartPoint = [0.35 0.05 0.90];
% Fit model to data.
[FitResult,~] = fit(xData,yData,ft,opts);
output = FitResult.a;
end