许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB如何调用Python?3步搞定跨语言编程

MATLAB如何调用Python?3步搞定跨语言编程

阅读数 2485
点赞 0
article_banner

还在纠结用MATLAB还是Python?其实可以两个都要。2026年,数据科学和工程计算越来越复杂,单一工具常常不够用。MATLAB擅长数值计算和矩阵运算,Python有海量开源库和最新算法。两者结合起来,工作效率能翻倍。下面教你3步实现MATLAB调用Python,直接在MATLAB里跑Python代码。

1. 环境检查:让MATLAB找到你的Python

想调用Python,先得让MATLAB知道你家Python装在哪。用pyversion命令检查:

pyversion

如果配置正确,会显示类似这样的信息:

version: '3.10'executable: 'C:\Python310\python.exe'library: 'C:\Python310\python310.dll'isloaded: 0

isloaded为0表示Python还没加载,执行一句Python代码就能载入:

py.print('Hello')pyversion

这时候isloaded就变成1了。

报错了怎么办?  如果pyversion返回空,说明MATLAB没找到Python。两种解决办法:

  • 把Python安装路径加到系统环境变量PATH里
  • 直接指定路径:pyversion('C:\Python310\python.exe')

我用Anaconda的用户注意:虚拟环境路径也能这样指定。比如pyversion('D:\Anaconda3\envs\tf\python.exe'),实测有效。

2. 简单调用:直接执行Python语句

环境通了,先试试最直接的玩法——在MATLAB命令行里敲Python语句:

py.print('Hello, Python!')

输出:Hello, Python!

查看Python的sys.path:

py.sys.path

把MATLAB数组转成Python列表:

py.list([1,2,3])

返回:[1.0, 2.0, 3.0]

是不是跟写Python一样顺滑?注意MATLAB的double型数字传过去会变成Python的float。

3. 调用自定义Python函数和类

这才是重头戏。假设你写了一个Python脚本myfun.py,内容如下:

def test():    print('Hello, Matlab!')​def add(a, b):    return a + b

把MATLAB当前目录切换到myfun.py所在文件夹,然后直接调:

py.myfun.test()

输出:Hello, Matlab!

result = py.myfun.add(3, 5)

result的值是8(注意这是Python int,但MATLAB会自动转成double)。

坑:修改Python代码后MATLAB不生效怎么办?  MATLAB会把Python模块缓存起来。改了.py文件,需要强制重载:

clear classes
mod = py.importlib.import_module('myfun');
py.importlib.reload(mod);

执行完这3行,新代码就生效了。我刚开始不知道这个,改了半天函数死活没反应,差点砸电脑。

调用Python类  写一个简单的计数器类myclass.py

class myclass():
    def __init__(self):
        self.count = 0
    def add(self):
        self.count += 1
        print('count =', self.count)

MATLAB里这样用:

obj = py.myclass.myclass();
for i = 1:5
    obj.add();
end

输出:

count = 1
count = 2
count = 3
count = 4
count = 5

4. 数据传递:MATLAB和Python之间的类型转换

来回传数据,类型搞不对容易翻车。记住下面几条就行。

MATLAB → Python


MATLAB类型Python接收类型
double标量float
int32标量int
逻辑标量bool
字符串str
数值数组array.array('d')

举个例子,MATLAB里[1,2,3]传过去变成array.array('d', [1.0, 2.0, 3.0])。如果你习惯用numpy,可以在Python里转一下:

import numpy as np
def my_func(arr):
    np_arr = np.array(arr)   # array.array转numpy数组
    return np_arr.mean()

Python → MATLAB

Python返回的基本类型(int、float、bool、str)MATLAB能直接认。但返回list、dict、自定义对象就需要手动转。

比如Python函数返回字符串:

def get_msg():
    return 'Hello, Matlab!'

MATLAB里收到的是Python str对象,直接显示没问题,但要做字符串操作就得转:

msg = py.myfun.get_msg();
msg_str = string(msg);    % 转成MATLAB string
msg_char = char(msg);     % 或者转成字符数组

返回数组  推荐让Python返回array.array,MATLAB收到后直接double()转换:

import arraydef get_array():    return array.array('d', [1, 2, 3, 4])
a = double(py.myfun.get_array())

a就是[1 2 3 4],完美。

如果Python那边已经是numpy数组,先转成array.array再返回。别直接传numpy数组,MATLAB认起来很麻烦。

5. 实战案例:用Python的yfinance库拉取股票数据

MATLAB没有现成的免费股票数据接口?借Python的轮子。

先写一个Python脚本stock.py

import yfinance as yfdef get_price(symbol, period='1d'):    ticker = yf.Ticker(symbol)    hist = ticker.history(period=period)    return hist['Close'].values.tolist()

MATLAB里调用:

prices = py.stock.get_price('AAPL', '5d');price_array = double(py.array.array('d', prices));plot(price_array)

3行代码画出苹果公司最近5天的收盘价曲线。没有MATLAB的Datafeed工具箱?不存在的。




最后总结一下  MATLAB调用Python分三步:先pyversion检查环境,再py.模块名.函数名直接调用,注意数据类型的自动转换和手动处理。修改Python代码后记得reload。这套方法在2026年依然管用,让你同时拥有MATLAB的矩阵运算优势和Python的生态灵活性。下次遇到MATLAB没有现成函数的场景,别自己造轮子了,试试把Python叫过来帮忙。

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空