您可以通过将 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
输出结果:
您可以在 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 。 |
我们可以在 MATLAB 中使用自己的 Python 代码和第三方模块。
内容必须位于 Python 路径中。安装第三方模块会将内容放在 Python 路径中。
如果我们创建自己的模块,则由我们负责将它们放到路径中。
调用用户定义的 Python 模块。