我正在从 MATLAB 调用 Python 函数,但遇到错误:
clear all
% Initialize model
m = py.gekko.GEKKO();
% Initialize Variable
x = m.Var();
% Define Equation
m.Equation(x**2+2*x+1==0);
% Solve
m.solve();
% Extract values from Python lists using curly brackets
disp(['x: ' num2str(x.VALUE{1})]);
Error: File: test_gekko3.m Line: 7 Column: 14
Invalid use of operator.
当我将其更改为x^2
(MATLAB版本的power)时,没有错误。如果我调用 Python 函数,为什么需要在该函数中使用 MATLAB 运算符?
最佳答案
感谢 Cris Luengo 将参数作为字符串传递的建议。现在,它被解释为 Python 表达式,而不是 MATLAB 表达式。以下两种方法现在可以在 MATLAB 中使用。
方法一:Python表达式
clear all
% Initialize model
m = py.gekko.GEKKO();
% Initialize Variable
x = m.Var(pyargs('name','x'));
% Define Equation
m.Equation(pyargs('equation','x**2+2*x+1=0'));
% Solve
m.solve();
% Extract values from Python lists using curly brackets
disp(['x: ' num2str(x.VALUE{1})]);
在这种情况下,需要命名 x
变量,否则该变量的内部名称为 v1
,并且 x
不会被命名。表达式中允许。第二种方法更简单。
方法2:MATLAB表达式
clear all
% Initialize model
m = py.gekko.GEKKO();
% Initialize Variable
x = m.Var();
% Define Equation
m.Equation(x^2+2*x+1==0);
% Solve
m.solve();
% Extract values from Python lists using curly brackets
disp(['x: ' num2str(x.VALUE{1})]);
使用 MATLAB 表达式更加紧凑,并且与其他 MATLAB 代码更加一致。
关于python - 从 MATLAB 调用 Python 运算符错误 x**2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56639907/