You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Simulink中coder.extrinsic调用Python模块如何初始化复杂数据类型

解决方案

针对coder.extrinsic调用返回非MATLAB原生内置类型(如Python模块对象)的场景,需要用coder.opaque声明变量为不透明对象类型,无需预先赋值内置类型值,示例修改后的代码如下:

% foo(x)返回双精度标量
coder.extrinsic('foo', 'py.importlib.import_module');
y = 0; % 将y定义为双精度标量
y = foo(x); % 运行正常
np = coder.opaque('pyobject'); % 声明np为Python对象类型的不透明变量
np = py.importlib.import_module('numpy');

后续使用注意事项

  • 声明为pyobject类型的不透明变量,只能在标记为coder.extrinsic的函数之间传递,不能直接在Matlab System模块的代码中直接调用它的属性、方法,否则代码生成阶段会报错。
  • 如果需要使用numpy模块的功能,建议把所有Python相关操作封装到一个独立的MATLAB函数中,将该函数整体标记为coder.extrinsic,函数内部直接操作Python对象,最终只返回MATLAB原生支持的数值、数组等类型给Simulink链路使用。
  • 该方案仅支持Simulink仿真、生成带MATLAB Engine依赖的代码场景,无法生成完全独立的嵌入式C代码,因为Python解释器无法被直接编译到C代码中。

内容的提问来源于stack exchange,提问作者Hawkansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:18:00