从matlab调用python

时间:2016-10-06 13:08:16

标签: python matlab

我正在使用matlab 2016b,很高兴看到Matlab中有一些python支持(https://uk.mathworks.com/help/matlab/matlab_external/call-python-from-matlab.html

我想知道是否有办法将用户设计的python类暴露给Matlab。所以,假设我有一个python类:

class MyPythonClass(object):
    def __init__(self):
        self.value = 5

    def set_value(self, v):
        self.value = v

在较新版本的Matlab中,这个简单的python类是否可以某种方式暴露给Matlab?我看到python支持,但没有提到任何matlab到python桥。

1 个答案:

答案 0 :(得分:2)

是的,确定!我同意该部分的文档可能略胜一筹,但无论如何。请注意,自MATLAB R2014b起,Python支持已经可用。所以,首先你要检查Python是否可用,并且你安装了正确的版本:

select * from yourtable where 
    (DAYNAME(start_date) = 'Saturday' or DAYNAME(start_date) = 'Sunday') and
    (DAYNAME(end_date) = 'Saturday' or DAYNAME(end_date) = 'Sunday'); 

接下来,创建一个包含测试类的Python文件/模块:

pyversion

非常重要的一步:我们必须将当前的MATLAB路径添加到Python路径中,以便Python可以找到您的模块。记录在案here

# MyTestModule.py
class MyPythonClass(object):
    def __init__(self):
        self.value = 5

    def set_value(self, v):
        self.value = v

现在我们已经准备好了自己的Python类!所有Python命令都以if count(py.sys.path,'') == 0 insert(py.sys.path,int32(0),''); end 开头,因此我们使用

创建一个类的实例
py.

显示

c = py.MyTestModule.MyPythonClass

我们的Python类可以像“普通”MATLAB类一样使用:

c = 
  Python MyPythonClass with properties:
    value: 5
    <MyTestModule.MyPythonClass object at 0x12b23cbd0>