Matlab的quadprog函数不能被Octave识别
Matlab's quadprog function is not recognized by Octave
我今天第一次使用 Octave 作为 Matlab 的替代品,尝试从我的 Python 脚本调用它,而不是使用 matlab.engine。根据我的发现,这两个是兼容的,所以 Octave 中的 运行 Matlab 文件并不复杂。但是,我的一个 Matlab 脚本包含函数“quadprog”,当在我的 Octave 命令提示符中调用该函数时会产生以下错误:
error: Invalid call to __qp__. Correct usage is:
-- [X, LAMBDA, INFO, ITER] = __qp__ (X0, H, Q, AEQ, BEQ, AIN, BIN,
MAXIT, RTOL)
error: called from
print_usage at line 98 column 5
quadprog at line 352 column 36
FRPY at line 606 column 14
RPdriver at line 388 column 21
my_VF_electrical_equivalent_circuit at line 119 column 23
hi at line 60 column 49
我该如何解决这个问题?
此外,我在我的 Octave 脚本中加载了 optim 包。但没有用,当使用此命令 pkg list
检查它是否已安装时,它后面跟着一个星号(碰巧 optim*
)这是什么意思?
此致。
optim 旁边的星号表示包已正确加载。
显然我无法回答你问题的另一部分,因为没有代码。我能告诉你的是,无论你做什么,都会导致调用无效。
编辑:我想我可能发现了一个错误。转到安装 optim 包的位置,然后编辑 quadprog.m。从
更改第 353 行
__qp__ (x0, H, f, Aeq, beq, Ain, bin, maxit);
到
__qp__ (x0, H, f, Aeq, beq, Ain, bin, maxit, rtol);
让我知道这是否神奇地使它起作用。
既然如此,我将向 octave/optim 团队报告错误。
编辑 2:事实证明这是八度音阶 6 中引入的一个已知错误,它更改了 __qp__
函数(由 quadprog.m 调用)的函数签名). https://savannah.gnu.org/bugs/?59051
此问题已在下一版本的软件包中修复;与此同时,您可以像上面那样编辑代码(由于某种原因,实际的修复更加复杂)。
我今天第一次使用 Octave 作为 Matlab 的替代品,尝试从我的 Python 脚本调用它,而不是使用 matlab.engine。根据我的发现,这两个是兼容的,所以 Octave 中的 运行 Matlab 文件并不复杂。但是,我的一个 Matlab 脚本包含函数“quadprog”,当在我的 Octave 命令提示符中调用该函数时会产生以下错误:
error: Invalid call to __qp__. Correct usage is:
-- [X, LAMBDA, INFO, ITER] = __qp__ (X0, H, Q, AEQ, BEQ, AIN, BIN,
MAXIT, RTOL)
error: called from
print_usage at line 98 column 5
quadprog at line 352 column 36
FRPY at line 606 column 14
RPdriver at line 388 column 21
my_VF_electrical_equivalent_circuit at line 119 column 23
hi at line 60 column 49
我该如何解决这个问题?
此外,我在我的 Octave 脚本中加载了 optim 包。但没有用,当使用此命令 pkg list
检查它是否已安装时,它后面跟着一个星号(碰巧 optim*
)这是什么意思?
此致。
optim 旁边的星号表示包已正确加载。
显然我无法回答你问题的另一部分,因为没有代码。我能告诉你的是,无论你做什么,都会导致调用无效。
编辑:我想我可能发现了一个错误。转到安装 optim 包的位置,然后编辑 quadprog.m。从
更改第 353 行__qp__ (x0, H, f, Aeq, beq, Ain, bin, maxit);
到
__qp__ (x0, H, f, Aeq, beq, Ain, bin, maxit, rtol);
让我知道这是否神奇地使它起作用。
既然如此,我将向 octave/optim 团队报告错误。
编辑 2:事实证明这是八度音阶 6 中引入的一个已知错误,它更改了 __qp__
函数(由 quadprog.m 调用)的函数签名). https://savannah.gnu.org/bugs/?59051
此问题已在下一版本的软件包中修复;与此同时,您可以像上面那样编辑代码(由于某种原因,实际的修复更加复杂)。