Calling python from 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

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

当然可以!我同意文档在这方面可以稍微好一点,但无论如何。请注意,自MATLAB R2014b以来已提供Python支持。所以,首先你应该检查Python是否可用,并且你已经安装了正确的版本:

pyversion
接下来,创建一个包含测试类的Python文件/模块:
# MyTestModule.py
class MyPythonClass(object):
    def __init__(self):
        self.value = 5
    def set_value(self, v):
        self.value = v

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

if count(py.sys.path,'') == 0
    insert(py.sys.path,int32(0),'');
end

现在我们已经准备好创建自己的Python类了!所有Python命令都以py.开头,因此我们使用

创建类的实例
c = py.MyTestModule.MyPythonClass

显示

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

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

>> c.set_value(10)
>> c.value
ans =
    10
>> set_value(c,5)
>> c.value
ans =
    5

最新更新