MATLAB fminsearch优化错误



我想优化以下等式中的x值

formula_1=((x(1)+x(2).*exp(-TR./x(3)))./(1+cos(time_stamps).* exp(-TR./x(3))));
diff =@(x)sum((formula_1-img_vol).^2);
[pa,fval,exfl]= fminsearch(diff,startingvals,opts);
startingvals=[1,1,0.1];
opts = optimset('Display','off','TolFun',1e-9,'TolX',1e-9);
img_vol = 32x32x11 vector.

这些都是我在主脚本文件中所做的。但出现的错误是

Error in fminsearch (line 191)
fv(:,1) = funfcn(x,varargin{:});
Error in biexp_main (line 65)
            [pa,fval,exfl]=fminsearch(diff,startingvals,opts);

请帮我想做什么??

由于缺少许多信息,因此很难重现错误。(确切的误差是多少?TRtime_stamps的大小是多少?)。

应该有所帮助的是:

  • 如果当前情况并非如此,请更改函数diff,使其返回标量(请使用diff(startginvals)进行检查)。也许把它改成sum(sum(sum(.)))

  • 如评论所示:在当前形式中,diff独立于x。您提到的"间接贡献"不起作用:它将formula_1x视为常数。

把这些放在一起,试试:

TR = rand; %?
time_stamps = rand; %?
img_vol = rand(32,32,11);
formula_1 = @(x) (x(1)+x(2).*exp(-TR./x(3))) ./ (1+cos(time_stamps).*exp(-TR./x(3)));
diff = @(x) sum(sum(sum((formula_1(x)-img_vol).^2)));
opts = optimset('Display','off','TolFun',1e-9,'TolX',1e-9);
startingvals=[1,1,0.1];
[xOpt,diffOpt] = fminsearch(diff,startingvals,opts);

最新更新