在 MATLAB 中调用 Python
在MATLAB中调用 Python
您可以通过将 py.
前缀添加到 Python 名称,直接从 MATLAB 访问 Python 库。要调用 Python 标准库中的内容,请在 Python 函数或类名称的前面添加 py.
。要调用可用模块中的内容,请在后跟 Python 函数或类名称的 Python 模块名称前面添加 py.
。例如:
py.list({'This','is a','list'}) % Calls built-in function list
py.textwrap.wrap('This is a string') % Calls wrap function in module textwrap
无需导入模块便可使用它们。但您可以将 Python 名称导入到您的 MATLAB 函数中,方法与导入 MATLAB 包中的内容的方法相同。
MATLAB 中的 Python 库 – MATLAB & Simulink – MathWorks 中国
检查环境
使用 pyversion
检查Matlab能否调用Python:
其中isloaded表示是否已加载Python,如果执行了Python语句或调用了Python模块,isloaded就变为1:
如果Matlab没有找到Python,则返回为空,这主要是由于Python路径未添加到环境变量所致
解决办法:将Python安装目录添加到环境变量,或者直接指定Python可执行文件的路径
pyenv
也可以检测验证是否安装了受支持的版本
直接执行 python 语句:
函数调用
点击左上角的新建脚本,输入以下代码:
# myfun.py
def test():
print('Hello, Matlab!')
def add(a, b):
c = a + b
return c
将文件保存命名为:myfun.py
注意:如果修改了myfun.py,Matlab不会立即使用新的代码,需要重载Python模块
% 重载Python模块
clear classes
obj = py.importlib.import_module('myfun');
py.importlib.reload(obj);
执行上面语句后,就可以调用修改过的Python代码了。
类调用
在 myfun.py 中添加代码:
class myclass():
def __init__(self):
self.count = 0
def add(self):
self.count = self.count + 1
print('count = ', self.count)
在Matlab中执行:(注意此时代码已经被修改,需要重新加载python模块)
mycalss = py.myfun.myclass;
for i = 1:5
mycalss.add()
end
输出结果:
Python 帮助文档
您可以在 MATLAB 中显示 Python 函数的帮助文本。例如:
py.help('list.append')
Help on method_descriptor in list:
list.append = append(...)
L.append(object) -> None -- append object to end
键入 py.
时的 Tab 键自动填充不显示可用的 Python 功能。有关详细信息,请参阅Python 函数的帮助。
创建数据
下表显示用于创建 list
、tuple
和 dict
类型的命令。左侧的命令从 Python 解释器运行。右侧的命令是 MATLAB 命令。
Python list – [] |
MATLAB py.list |
---|---|
>>> ['Robert', 'Mary', 'Joseph'] |
>> py.list({'Robert','Mary','Joseph'}) |
>>> [[1,2],[3,4]] |
>> py.list({py.list([1,2]),py.list([3,4])}) |
Python tuple – () |
MATLAB py.tuple |
---|---|
>>> ('Robert', 19, 'Biology') |
>> py.tuple({'Robert',19,'Biology'}) |
Python dict – {} |
MATLAB py.dict |
---|---|
>>> {'Robert': 357, 'Joe': 391, 'Mary': 229} |
>> py.dict(pyargs(...'Robert',357,'Mary',229,'Joe',391)) 有关传递关键字参数的信息,请参阅 pyargs 。 |
访问python模块
我们可以在 MATLAB 中使用自己的 Python 代码和第三方模块。
内容必须位于 Python 路径中。安装第三方模块会将内容放在 Python 路径中。
如果我们创建自己的模块,则由我们负责将它们放到路径中。