我正在将Matlab程序的部分转换为python和octave。
我正在使用octave生成两个矩阵,然后使用oct2py将这些矩阵导入python。我的问题的根源是matlab中的这些行(下面H_combined和f_combined
handles.options =optimset('algorithm','interior-point-convex','Display','off','TolFun',1e-15,'TolX',1e-10,'MaxFunEvals', 1E5);
handles.x_ridge_combined = quadprog(H_combined, f_combined, [], [], [], [], handles.lb_re, handles.ub_re, handles.x_re_0, handles.options);
当前,我正在寻找一个使用python或octave的解决方案,该解决方案将产生类似的输出而无济于事。
我已经尝试从八度'optim'中使用quadprog,但是在x_ridge_combined上得到的输出为'120,1,1,1,...,1',而不是我期望的各种float值。我已经验证过“ H_combined”和“ f_combined”与在matlab中运行时完全相同,但我想八度中的quadprog不能正常工作。
尝试八度音阶方法后,我尝试将值导入python以尝试使用quadprog包。
尝试quadprog,
print(quadprog.solve_qp(H,f))
产生错误
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
H和f的类型和形状如下:
<class 'numpy.ndarray'> #H
(123, 123)
<class 'numpy.ndarray'> #f
(1, 123)
有人知道为什么我会出现这些错误吗?或关于如何从matlab转换该行的任何其他建议?
谢谢
我有完全相同的问题。您最终解决了这个问题吗?