MATLAB 与 Python 混合编程实战:原理、代码与部署
在科学计算领域,MATLAB 和 Python 就像两把各有所长的工具——MATLAB 凭借矩阵运算的独门绝技称霸工程仿真,Python 则依靠开源生态横扫 AI 与数据科学。但在实际研发中,单一语言往往难以覆盖全流程需求:用 MATLAB 做完工程仿真,想对接 Python 的机器学习模型;用 Python 训练好 AI 模型,又需要 MATLAB 做工程验证。
这种场景下,MATLAB 与 Python 的混合编程不再是锦上添花,而是提升研发效率的刚需。本文将打通两大语言的壁垒,从技术原理到代码实战,全方位解析跨语言协作的最优路径。
核心技术路径对比
在动手编码前,先理清互调的核心方案,不同场景适配不同技术:
| 技术方案 | 适用场景 | 性能 | 部署复杂度 | 核心优势 |
|---|---|---|---|---|
| MATLAB Engine API | Python 调用 MATLAB 函数(开发阶段) | 高 | 低(需装 MATLAB) | 调用最直接,支持全量 MATLAB 功能 |
| MATLAB Compiler SDK | MATLAB 代码打包部署(生产环境) | 中 | 中(需运行时) | 无需安装 MATLAB,适合分发 |
| 共享数据文件(HDF5/CSV) | 非实时数据交互 | 低 | 极低 | 无语言依赖,兼容性最好 |
| 第三方库(pymatbridge) | 轻量级 Python 调 MATLAB | 中 | 低 | 无需管理员权限 |
实战一:Python 调用 MATLAB(开发阶段首选)
前置条件
- 安装对应版本的 MATLAB(需匹配 Python 版本,建议 Python 3.8-3.11)
- 配置 MATLAB Engine API:
# 进入 MATLAB 安装目录下的 engine 文件夹(以 Windows 为例)
cd "C:\Program Files\MATLAB\R2023a\extern\engines\python"
# 安装 engine
python setup.py install
核心代码:Python 调用 MATLAB 函数
编写 MATLAB 函数
首先创建一个 .m 文件,例如 my_matlab_func.m,定义矩阵运算逻辑:
% 功能:矩阵运算 + 简单统计
% 输入:二维矩阵
% 输出:矩阵的逆、均值、标准差
function[mat_inv, mat_mean, mat_std] = my_matlab_func(mat)
% 异常处理:检查输入是否为矩阵
if ~ismatrix(mat)
error('输入必须为矩阵!');
end
% 计算矩阵的逆(伪逆,避免奇异矩阵报错)
mat_inv = pinv(mat);
% 计算全局均值
mat_mean = mean(mat(:));
% 计算全局标准差
mat_std = std(mat(:));
end
Python 调用上述 MATLAB 函数
准备好后,在 Python 脚本中启动引擎并传递数据。注意数据类型转换和资源释放:
import matlab.engine
import numpy np
():
eng = matlab.engine.start_matlab()
eng.addpath(, nargout=)
np_mat = np.array([[, , ], [, , ], [, , ]], dtype=np.float64)
mat_mat = matlab.double(np_mat.tolist())
:
mat_inv, mat_mean, mat_std = eng.my_matlab_func(mat_mat, nargout=)
()
(np_mat)
()
(np.array(mat_inv))
()
()
Exception e:
()
:
eng.quit()
__name__ == :
call_matlab_from_python()


