Main Content

MATLAB 访问 Python 模块 - 快速入门

您可以从 MATLAB® 访问所有标准 Python® 库内容。同样,您可以使用第三方或用户创建的模块中的功能。要直接从 MATLAB 调用 Python 功能,请将 py. 前缀添加到要调用的 Python 函数的名称。

  • 要调用 Python 标准库中的内容,请在 Python 函数或类名称的前面添加 py.

    py.list({"This","is a","list"}) % Call built-in function list
  • 要调用可用模块中的内容,请在后跟 Python 函数或类名称的 Python 模块名称前面添加 py.

    py.textwrap.wrap("This is a string") % Call wrap function in module textwrap

无需导入模块便可使用它们。但您可以将 Python 名称导入到您的 MATLAB 函数中,方法与导入 MATLAB 命名空间中的内容的方法相同。有关详细信息,请参阅了解 Python 和 MATLAB 导入命令

MATLAB 还提供了一种直接从 MATLAB 在 Python 解释器中运行 Python 代码的方法。有关详细信息,请参阅直接从 MATLAB 调用 Python 功能

学习目标

本教程解释如何:

  • 检查您计算机上的 Python 版本。

  • 创建一个 Python 对象并对其调用方法。

  • 显示 Python 模块的帮助。

  • 创建专用的 Python listtupledict(字典)类型

  • 对 Python 对象调用与 MATLAB 函数同名的方法。

  • 从您自己的 Python 模块调用功能。

  • 查找示例。

验证 Python 配置

要在 MATLAB 中使用 Python,您的计算机上必须安装受支持的 Python 版本。有关详细信息,请参阅配置您的系统使用 Python

确保 Python 路径包含在您的系统路径环境变量中。要验证您是否安装了受支持的 Python 版本,请键入:

pyenv
ans = 

  PythonEnvironment with properties:

          Version: "3.11"
       Executable: "C:\Users\aname\AppData\Local\Programs\Python\Python311\pythonw.exe"
          Library: "C:\Users\aname\AppData\Local\Programs\Python\Python311\python311.dll"
             Home: "C:\Users\aname\AppData\Local\Programs\Python\Python311"
           Status: NotLoaded
    ExecutionMode: OutOfProcess

如果 Version 属性的值为空,则您没有可用的受支持版本。有关安装 Python 的详细信息,请参阅配置您的系统使用 Python

MATLAB 中访问 Python 标准库模块

MATLAB 与您计算机上的 Python 解释器交互,让您可以访问所有标准库内容。例如,创建一个 Python list 数据类型。

res = py.list({"Name1","Name2","Name3"})
res = 

  Python list with values:

    ['Name1', 'Name2', 'Name3']

MATLAB 会识别 Python 对象,并自动将 MATLAB 元胞数组转换为适当的 Python 类型。

您可以对一个对象调用 Python 方法。要显示对 list 对象可用的方法,请键入 methods(py.list)。例如,使用 Python append 函数更新列表 res

res.append("Name4")
res
res = 

  Python list with values:

    ['Name1', 'Name2', 'Name3', 'Name4']

要将 list 变量转换为 MATLAB 变量,请调用 string

mylist = string(res)
mylist =

  1×4 string array

    'Name1'    'Name2'    'Name3'    'Name4'

MATLAB 中显示 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 函数的帮助

创建列表、元组和字典类型

下表显示用于创建 listtupledict 类型的语句。左边是从 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(Robert=357,Mary=229,Joe=391)

方法和函数的优先顺序

如果 Python 类为 Python 类型定义了与 MATLAB 转换器方法同名的方法,则 MATLAB 会调用 Python 方法。这意味着您无法对该类的对象调用 MATLAB 转换器方法。

例如,如果 Python 类定义了 char 方法,以下语句将调用 Python 方法。

char(obj)

要使用 MATLAB char 函数,请键入:

char(py.str(obj))

访问其他 Python 模块

您可以在 MATLAB 中使用自己的 Python 代码和第三方模块。内容必须位于 Python 路径中。安装第三方模块会将内容放在 Python 路径中。如果您创建自己的模块,则由您负责将它们放到路径中。

有关示例,请参阅调用用户定义的 Python 模块

Python 示例

有关可在 MATLAB 实时编辑器中打开的示例代码,请在 从 MATLAB 中调用 Python页上查找“精选示例”。有关搜索 MATLAB 示例的信息,请参阅 MATLAB 代码示例

有关使用在线数据集的示例,请参阅此 MathWorks 博客文章

另请参阅

相关主题