跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
MATLAB / OctaveAI算法

MATLAB 与 Python 混合编程实战指南

介绍 MATLAB 与 Python 混合编程的核心路径,包括 Engine API、Compiler SDK 及文件交互。通过 Python 调用 MATLAB 矩阵运算、MATLAB 调用 Python 机器学习库等实战案例,演示环境配置、代码实现及类型转换。涵盖开发阶段与生产环境部署方案,提供版本兼容、异常处理及性能优化建议,助力开发者打破语言壁垒,提升研发效率。

小熊软糖发布于 2026/3/30更新于 2026/10/26109 浏览
MATLAB 与 Python 混合编程实战指南

MATLAB 与 Python 混合编程实战指南

图片

在科学计算领域,MATLAB 和 Python 各有所长。MATLAB 擅长矩阵运算与工程仿真,Python 拥有开源生态与数据科学优势。单一语言难以覆盖全流程需求时,混合编程成为提升效率的关键。

一、核心技术路径对比

在动手编码前,先理清 MATLAB 与 Python 互调的核心方案,不同场景适配不同技术:

技术方案适用场景性能部署复杂度核心优势
MATLAB Engine APIPython 调用 MATLAB 函数(开发阶段)高低(需装 MATLAB)调用最直接,支持全量 MATLAB 功能
MATLAB Compiler SDKMATLAB 代码打包部署(生产环境)中中(需运行时)无需安装 MATLAB,适合分发
共享数据文件(HDF5/CSV)非实时数据交互低极低无语言依赖,兼容性最好
第三方库(pymatbridge)轻量级 Python 调 MATLAB中低无需管理员权限

二、实战 1:Python 调用 MATLAB(开发阶段首选)

前置条件
  1. 安装对应版本的 MATLAB(需匹配 Python 版本,建议 Python 3.8-3.11)
  2. 配置 MATLAB Engine API:
# 进入 MATLAB 安装目录下的 engine 文件夹(以 Windows 为例)
cd "C:\Program Files\MATLAB\R2023a\extern\engines\python"
# 安装 engine
python setup.py install
核心代码:Python 调用 MATLAB 函数
步骤 1:编写 MATLAB 函数(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
步骤 2:Python 调用上述 MATLAB 函数
import matlab.engine
 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()
import
as
def
call_matlab_from_python
# 1. 启动 MATLAB 引擎(background=True 表示后台运行)
# 可选:添加 MATLAB 脚本所在路径
r'C:\your_matlab_script_path'
0
# 2. 构造测试数据(Python 数组转 MATLAB 矩阵)
1
2
3
4
5
6
7
8
9
# 转换为 MATLAB 可识别的矩阵格式
try
# 3. 调用 MATLAB 函数(参数和返回值需匹配)
3
# 4. 结果转换与输出(MATLAB 类型转 Python/numpy)
print
"原始矩阵:"
print
print
"\nMATLAB 计算的矩阵伪逆:"
print
print
f"\n矩阵均值:{mat_mean:.2f}"
print
f"矩阵标准差:{mat_std:.2f}"
except
as
print
f"调用出错:{e}"
finally
# 5. 关闭 MATLAB 引擎(必须释放资源)
if
"__main__"
输出结果示例
原始矩阵: [[1. 2. 3.] [4. 5. 6.] [7. 8. 9.]]
MATLAB 计算的矩阵伪逆: [[-0.4815 -0.1481 0.1852] [-0.0741 -0.0000 0.0741] [ 0.3333 0.1481 -0.0370]]
矩阵均值:5.00
矩阵标准差:2.58
关键说明
  • nargout:必须指定返回值数量,否则 MATLAB 默认返回 1 个结果
  • 数据类型转换:Python 的 numpy.array 需先转 list 再转 matlab.double
  • 资源释放:eng.quit() 必须执行,否则会残留 MATLAB 进程

三、实战 2:MATLAB 调用 Python(工程验证场景)

前置条件
  1. MATLAB 中配置 Python 环境:在 MATLAB 命令行执行
% 查看已识别的 Python 版本
pyversion
% 手动指定 Python 路径(如需要)
pyversion('C:\Python39\python.exe')
核心代码:MATLAB 调用 Python 机器学习库
步骤 1:编写 Python 脚本(my_python_func.py)
# 功能:用 sklearn 做简单的线性回归
import numpy as np
from sklearn.linear_model import LinearRegression

def linear_regression_demo(x_data, y_data):
    """ 线性回归预测
    :param x_data: 自变量(二维数组)
    :param y_data: 因变量(一维数组)
    :return: 模型系数、截距、预测值
    """
    # 数据转换
    x = np.array(x_data).reshape(-1,1)
    y = np.array(y_data)
    # 训练模型
    model = LinearRegression()
    model.fit(x, y)
    # 预测
    y_pred = model.predict(x)
    # 返回结果(转为列表,方便 MATLAB 解析)
    return model.coef_.tolist(), model.intercept_.tolist(), y_pred.tolist()
步骤 2:MATLAB 调用 Python 脚本
function call_python_from_matlab()
    % 1. 配置 Python 路径(添加脚本所在目录)
    py.sys.path.append('C:\your_python_script_path');
    
    % 2. 构造测试数据
    x_data = [1,2,3,4,5]; % 自变量
    y_data = [2.1,3.9,6.2,7.8,10.1]; % 因变量(近似 y=2x)
    
    try
        % 3. 调用 Python 函数
        % 注意:MATLAB 数组转 Python 列表需用 num2cell+cell2mat,或直接传数组
        [coef, intercept, y_pred] = py.my_python_func.linear_regression_demo(x_data, y_data);
        
        % 4. 结果转换与输出(Python 类型转 MATLAB 类型)
        % Python 列表转 MATLAB 数组
        coef_mat = cell2mat(py.list(coef));
        intercept_mat = double(intercept);
        y_pred_mat = cell2mat(py.list(y_pred));
        
        disp('线性回归模型系数:');
        disp(coef_mat);
        disp(['截距:',num2str(intercept_mat)]);
        disp('预测值:');
        disp(y_pred_mat);
        
        % 5. 可视化(MATLAB 优势)
        plot(x_data, y_data,'o','DisplayName','原始数据');
        hold on;
        plot(x_data, y_pred_mat,'-r','DisplayName','拟合曲线');
        xlabel('X');
        ylabel('Y');
        title('MATLAB 调用 Python sklearn 线性回归');
        legend;
        grid on;
    catch ME
        disp(['调用出错:', ME.message]);
    end
end
% 执行函数
call_python_from_matlab();
输出结果示例
线性回归模型系数: 2.0020
截距:0.0800
预测值: 2.0820 4.0840 6.0860 8.0880 10.0900

同时会弹出 MATLAB 绘图窗口,显示原始数据点和 Python 拟合的回归曲线。

四、生产环境部署方案(无需安装 MATLAB)

开发阶段用 MATLAB Engine 很方便,但生产环境部署时,对方往往没有 MATLAB 授权,此时推荐MATLAB Compiler SDK:

核心步骤
  1. 在 MATLAB 中用 deploytool 打包函数为 Python 包
  2. 生成的包可在仅安装 MATLAB Runtime 的机器上运行
  3. Python 调用打包后的 MATLAB 函数(无需 MATLAB)
# 安装打包后的 MATLAB Python 包
pip install your_matlab_package.whl

五、避坑指南

  1. 版本兼容:MATLAB R2022b+ 建议搭配 Python 3.8-3.11,版本不匹配会导致 engine 安装失败
  2. 数据类型:跨语言传递时优先用基础类型(double/int/string),避免复杂对象
  3. 异常处理:两边都要加 try-catch,MATLAB 的 error 会直接抛到 Python 中
  4. 性能优化:避免频繁调用跨语言函数(一次传递批量数据),减少数据转换开销
总结
  1. Python 调 MATLAB:开发阶段用 MATLAB Engine API,直接高效;生产环境用 Compiler SDK 打包,无需 MATLAB 授权。
  2. MATLAB 调 Python:适合复用 Python 的 AI/机器学习库,重点做好数据类型转换和异常捕获。
  3. 混合编程核心价值:让 MATLAB 的工程仿真能力与 Python 的 AI 生态深度融合,覆盖'算法开发 - 模型训练 - 工程验证'全流程,大幅提升研发效率。

目录

  1. MATLAB 与 Python 混合编程实战指南
  2. 一、核心技术路径对比
  3. 二、实战 1:Python 调用 MATLAB(开发阶段首选)
  4. 前置条件
  5. 进入 MATLAB 安装目录下的 engine 文件夹(以 Windows 为例)
  6. 安装 engine
  7. 核心代码:Python 调用 MATLAB 函数
  8. 步骤 1:编写 MATLAB 函数(mymatlabfunc.m)
  9. 步骤 2:Python 调用上述 MATLAB 函数
  10. 输出结果示例
  11. 关键说明
  12. 三、实战 2:MATLAB 调用 Python(工程验证场景)
  13. 前置条件
  14. 核心代码:MATLAB 调用 Python 机器学习库
  15. 步骤 1:编写 Python 脚本(mypythonfunc.py)
  16. 功能:用 sklearn 做简单的线性回归
  17. 步骤 2:MATLAB 调用 Python 脚本
  18. 输出结果示例
  19. 四、生产环境部署方案(无需安装 MATLAB)
  20. 核心步骤
  21. 安装打包后的 MATLAB Python 包
  22. 五、避坑指南
  23. 总结

更多推荐文章

查看全部
  • Java 判断整数奇偶性的面试题解析与优化
  • 如何成为一名黑客:态度、技术与文化指南
  • C++ I/O 流详解:文件读写与字符串流
  • AI Agent 平台横评:ZeroClaw vs OpenClaw vs Nanobot
  • MySQL JOIN 底层原理、算法演进与多表性能分析
  • HackTheBox Expressway:ISAKMP 哈希破解与 Sudo 提权
  • Linux 进程间通信:命名管道(FIFO)原理与实战
  • OpenClaw 钉钉群聊多机器人配置实战
  • Java 后端架构演进:从单机到微服务的技术选型方案
  • C++ Qt 网络编程指南:QUdpSocket、QTcpSocket 与 Http
  • 哈希(Hash)核心概念与 C++ 应用
  • 基于 Trae 构建本地 AI 对话机器人
  • MyBatis-Plus 进阶:注解配置、条件构造器与自定义 SQL 操作
  • 分布式文件系统 HDFS 的数据读写过程
  • 基于 FastGPT 与 MCP 协议构建工具增强型智能体
  • Python、PyTorch、CUDA 与显卡版本兼容对照表
  • ChatGLM3 大模型本地化部署、应用开发与微调
  • 华为 ARM Linux 部署 Ollama 0.17.6 运行 Qwen3.5 模型测试
  • 网络安全工程师转行指南与行业发展前景
  • Unity 开发 Pico VR 基础应用:环境搭建与实战部署

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online