首页 > 解决方案 > 如何在使用“lsqnonlin”函数时修复 Octave 中的“fields2cell”错误

问题描述

我对lsqnonlinOctave 中的函数有疑问。

我的代码:

% Heston calibration, local optimization (Matlab’s lsqnonlin)
% Input on data.txt
% Data = [So, t, k, r, mid price, bid, ask]
clear all
global data; global cost; global finalcost;
load data.txt
% Initial parameters and parameter bounds
% Bounds [v0, Vbar, vvol, rho, 2*a*vbar - vvol^2]
% Last bound include non-negativity constraint and bounds for mean-reversion
x0 = [.5,.5,1,-0.5,1];
lb = [0, 0, 0, -1, 0];
ub = [1, 1, 5, 1, 20];
% Optimization: calls function costf.m:
tic;
x = lsqnonlin(@costf,x0,lb,ub);
toc;
% Solution:
Heston_sol = [x(1), x(2), x(3), x(4), (x(5)+x(3)^2)/(2*x(2))]
x
min = finalcost

调用后出现问题:

x = lsqnonlin(@costf,x0,lb,ub);

它返回:

错误:'fields2cell'未定义在第 75 行第 14 列附近错误:从 第 75 行第 12 列 的jacobian_constants调用,第 413 行第 5 列 nonlin_residmin 第 98 行第 25 列 lsqnonlin 第 264 行第 21 列

有没有人遇到过这样的问题?如果是,您是如何解决的?

标签: octavemathematical-optimizationnonlinear-optimization

解决方案


我有同样的错误。只需要重新安装 struct 包:

pkg install -forge struct

我猜它有问题。


推荐阅读