对于此运算,数组的大小不兼容。 出错 untitled4>@(i)costfun(x0+cumtrapz(t(i:end),[u(i:end);u(end)]),u(i)) (第 21 行) objfun = @(u) sum(dt*arrayfun(@(i) costfun(x0 + cumtrapz(t(i:end),[u(i:end);u(end)]),u(i)),1:N-1)); 出错 untitled4>@(u)sum(dt*arrayfun(@(i)costfun(x0+cumtrapz(t(i:end),[u(i:end);u(end)]),u(i)),1:N-1)) (第 21 行) objfun = @(u) sum(dt*arrayfun(@(i) costfun(x0 + cumtrapz(t(i:end),[u(i:end);u(end)]),u(i)),1:N-1)); 出错 fmincon (第 568 行) initVals.f = feval(funfcn{3},X,varargin{:}); 出错 untitled4 (第 30 行) [uopt,fopt] = fmincon(objfun,x0,[],[],Aeq,beq,lb,ub,[],options); 原因: Failure in initial objective function evaluation. FMINCON cannot continue. 相关文档
时间: 2023-08-05 20:03:04 浏览: 117
根据错误信息,这是一个使用 MATLAB 中的 fmincon 函数进行优化的问题。出错信息中提到了函数参数不兼容,导致无法计算初始目标函数值。建议检查代码中的变量维度是否正确,并确认函数参数的类型和数量是否与 fmincon 函数要求的一致。同时,也可以尝试使用调试工具逐步检查代码,确定错误出现的具体位置和原因。如果问题仍然存在,可以参考 MATLAB 的官方文档或者向 MATLAB 的官方支持团队寻求帮助。
相关问题
对于此运算,数组的大小不兼容。 出错 untitled (第 21 行) error_func = @(params) sqrt(sum(((ellipse_model(params, linspace(0, 2*pi, length(x_data))) - [x_data; y_data]).^2), 1)); 出错 fminsearch (第 201 行) fv(:,1) = funfcn(x,varargin{:}); 相关文档
这个错误是由于拟合过程中的数组大小不兼容引起的。可能是由于数据点的数量或者参数的数量不匹配导致的。
请确保以下几点:
1. 确定 `x_data` 和 `y_data` 的大小相同,且都是行向量或列向量。
2. 确保 `fit_params` 的初始参数数量与椭圆曲线模型函数 `ellipse_model` 中的参数数量一致。
3. 检查你的椭圆曲线模型函数 `ellipse_model` 是否正确定义,确保它返回与数据点相同大小的输出。
你可以尝试打印一些变量的大小,例如 `size(x_data)`、`size(y_data)`、`size(fit_params)`,以帮助你找出问题所在。
如果问题仍然存在,请提供更多代码和数据的细节,以便我更好地帮助你解决问题。
位置 1 处的索引超出数组边界(不能超出 49)。 出错 crossover (line 12) newPop(i,:) = [pop(i1,1:c), pop(i2,c:end)]; 出错 Untitled (line 51) pop = crossover(pop, nPop, pCross);
这个错误提示表明,你在对一个数组进行访问时越过了它的边界。错误发生在第 12 行的交叉函数 `crossover` 中,第 51 行调用了这个函数。
具体来说,`newPop(i,:)` 这个语句中的 `i` 取值超出了 `pop` 数组的范围(大于等于 `size(pop,1)`)。这可能是因为在代码中对 `pop` 数组进行了修改,导致其大小发生了变化,超出了原来的范围。
你可以检查一下在 `crossover` 函数中对 `pop` 数组的修改是否正确,以及在调用 `crossover` 函数之前是否正确初始化了 `pop` 数组。如果还有问题,建议贴出相关代码以便更好地帮助你解决问题。
阅读全文