Matlab 错误:A和B必须是浮点标量
我正在尝试使用fminsearch和函数句柄优化函数 但是,我得到错误A和B必须是浮点标量。具体来说 使用积分时出错(第86行) A和B必须是浮点标量 @(x,p)(整数(@(n)((p(1)-p(2))*exp(n)),-inf,x+3))中的错误 @(x)((x-f2(x,p))中的错误。^2) integralCalc/IterateScalavalue中的错误(第314行) fx=乐趣(t) integralCalc/vadapt中的错误(第133行) [q,errbnd]=迭代Calavaled(u,tinterval,pathlen) 积分计算错误(第76行) [q,errbnd]=vadapt(@AtoBInvTransform,interval) 积分误差(第89行) Q=积分计算器(fun、a、b、opstruct) @(p)(积分(@(x)((x-f2(x,p))。^2),-3,3)中的错误 fminsearch中的错误(第191行) fv(:,1)=funfcn(x,varargin{:}) 我怎样才能解决这个问题 我认为x-3会成为一个问题,但我无法解决它。 x在f2中应该是可变的,以便对q3中的x进行积分 先谢谢你Matlab 错误:A和B必须是浮点标量,matlab,Matlab,我正在尝试使用fminsearch和函数句柄优化函数 但是,我得到错误A和B必须是浮点标量。具体来说 使用积分时出错(第86行) A和B必须是浮点标量 @(x,p)(整数(@(n)((p(1)-p(2))*exp(n)),-inf,x+3))中的错误 @(x)((x-f2(x,p))中的错误。^2) integralCalc/IterateScalavalue中的错误(第314行) fx=乐趣(t) integralCalc/vadapt中的错误(第133行) [q,errbnd]=迭代Cala
sigma=0.1;
f2=@(x,p)(integral(@(n)((p(1)-p(2))*exp(n)),-inf,x+3));
q3=@(p)(integral(@(x)((x-f2(x,p)).^2),-3,3));
[p, fval] = fminsearch(q3,[0.1 0.4]);
问题是当你对x积分时,函数“integrate”给了f2一个向量来计算。这与在函数“q3”中使用点表示法的原因相同
快速修复是在“F2”周围使用ARARYFAY,但是您应该真正考虑到在评论中建议使用USER 20160,即生成完整的函数,然后调试更容易,并且在向量中,可以创建一个for循环,它在输入端点上运行。标准for循环比标准arrayfun快。
问题是,当对x进行积分时,函数“integrate”会给f2一个向量进行求值。这与在函数“q3”中使用点表示法的原因相同快速修复是在“F2”周围使用ARARYFAY,但是您应该真正考虑到在评论中建议使用USER 20160,即生成完整的函数,然后调试更容易,并且在向量中,可以创建一个for循环,它在输入端点上运行。标准for循环比标准arrayfun快。
欢迎来到stackoverflow J.Lee。用你正在使用的编程语言标记你的问题是很有帮助的——我添加了“matlab”,这是它的样子,并删除了“floating”,这是css中用于浮点div之类的标记。为了调试,请尝试将代码编写为完整函数,而不是函数句柄。然后,matlab将告诉您有关错误发生位置的更多有用信息(如行号)。能否提供p
和n
?如果它们很大,请只发布足够的内容来重新创建您的问题。yuo也可以复制粘贴整个错误堆栈吗?谢谢,我复制了patste整个错误堆栈来stackoverflow J.Lee。用你正在使用的编程语言标记你的问题是很有帮助的——我添加了“matlab”,这是它的样子,并删除了“floating”,这是css中用于浮点div之类的标记。为了调试,请尝试将代码编写为完整函数,而不是函数句柄。然后,matlab将告诉您有关错误发生位置的更多有用信息(如行号)。能否提供p
和n
?如果它们很大,请只发布足够的内容来重新创建您的问题。yuo也可以复制粘贴整个错误堆栈吗?谢谢,我复制了整个错误堆栈