python - 从 MATLAB 调用 Python 运算符错误 x**2

标签 python matlab gekko

我正在从 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/

相关文章:

python - 如何用 turtle 模块画圆和六边形?

excel - 将日期从 Excel 转换为 Matlab

python - 从 PuLP 到 GEKKO : Syntax Mapping for Constraints, 目标函数

python - 优化求解时返回函数调用和其他信息

python - 项目不包含在 Scrapy 中的 for 循环中

python - 如何在一个容器中运行 Flask 和 celery?

python - 如何正确覆盖 QWidget 或 QMainWindow 的 showEvent ?是否应该始终调用 super?如果是,如何调用?

matlab - 在 Matlab 中定义全局常量

matlab - 显示多个数据时更好的错误栏

python - 如何在了解时间常数和稳态值的 gekko 中构建过程模拟器