Matlab下调用Python接口

MATLAB 到 C 语言程序的转换可以由两种途径完成,其一是 MATLAB 自己提供的 C 语言翻译程序 mcc, 另一种是原第 3 方公司 MathTools 开发的 MATCOM。后者出现较早,功能远比 MATLAB 自己的翻译程序强大,可以直接将Matlab脚本转换为C/C++代码,MathWorks感受到了威胁,找人家谈判,花巨资收购了MathTools 公司,并已将其开发技术融于MATLAB 中。最后Matlab又推出了C/C++接口,这也是适应市场需要。这不,不知道什么时候起,Matlab也开始支持Python调用了,并且Python也可以调用Matlab。这是大势所趋啊,虽然目前的Matlab(本人用的Matlab2015b)对Python接口的支持还不是很完美,只支持一部分,但这也是Matlab担心被Python取代,担心被边缘化而做出的改进,相信以后会有更多改进。下面介绍一下Matlab调用Python接口的一些示例。

首先说一下本人的环境配置,WIN7 64位系统,Matlab2015b, Anaconda4集成的Python3.6,亲测不需要在Matlab下的Set Path下配置Python的路径,Matlab会直接搜索Python安装路径,即使你添加了路径,有些Python库,如果Matlab不支持,自然无法调用。下面来看一些具体的示例:

1. Matlab对Python下OpenCV库的调用



这是在默认你已经成功安装了Python下OpenCV的情况下,Matlab调用的结果。

下面看一对应的Python代码:

import cv2
img=cv2.imread('Lee02.png')
cv2.imshow('Img',img)

有人可能会想,可不可以在Matlab直接 import cv2或 import py.cv2。前者目前没有,后者针对OpenCV的也没有,但是有类似后者的语法:



S = py.textwrap.wrap('This is a string');
import py.textwrap.wrap
S = wrap('This is a string');
clear import

Matlab在对字符串的处理方面不如Python,所以Matlab对这方面Python接口的支持就非常好,而对于自己家有的,就支持不那么好了,当然是担心被取代了。 上述代码中的 clear import一定要有,当你使用了 import语句的时候,否则它会覆盖Matlab内置的对应函数或类。

2. 创建Python对象

创建Python对象的语法如下:

pyObj = py.modulename.ClassName(varargin)
其中 varargin表示送入Python构造器的__init__方法的列表参数。关于构造函数的相关帮助文档示例如下:

py.help('textwrap.TextWrapper.__init__')
3. 调用自定义Python模块

自定义Python模块如下:

# mymod.py
"""Python module demonstrates passing MATLAB types to Python functions"""
def search(words):
    """Return list of words containing 'son'"""
    newlist = [w for w in words if 'son' in w]
    return newlist

def theend(words):
    """Append 'The End' to list of words"""
    words.append('The End')
    return words
从Matlab命令行窗口把该模块加入到Python搜索路径:

if count(py.sys.path,'') == 0
    insert(py.sys.path,int32(0),'');
end
调用mymod.py模块有一个输入参数,现在在Matlab下创建一个输入参数:

N = py.list({'Jones','Johnson','James'})

在Matlab下调用这个函数的具体语法如下:

names = py.mymod.search(N)

完整运行结果如下:



还有更多功能,请参阅Matlab官方文档。












参考:

1. MATLAB与C语言的接口

2. MATLAB中调用Python



  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值