百木园-与人分享,
就是让自己快乐。

在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:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oVFldTSz-1646290090554)(C:\\Users\\14158\\AppData\\Roaming\\Typora\\typora-user-images\\1646139574963.png)]

其中isloaded表示是否已加载Python,如果执行了Python语句或调用了Python模块,isloaded就变为1:

如果Matlab没有找到Python,则返回为空,这主要是由于Python路径未添加到环境变量所致

解决办法:将Python安装目录添加到环境变量,或者直接指定Python可执行文件的路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVVZ7Hu3-1646290090556)(C:\\Users\\14158\\AppData\\Roaming\\Typora\\typora-user-images\\1646139701590.png)]

pyenv 也可以检测验证是否安装了受支持的版本

直接执行 python 语句:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dJE7lsoy-1646290090556)(C:\\Users\\14158\\AppData\\Roaming\\Typora\\typora-user-images\\1646202549839.png)]

函数调用

点击左上角的新建脚本,输入以下代码:

# myfun.py
def test():
    print(\'Hello, Matlab!\')

def add(a, b):
    c = a + b
    return c

将文件保存命名为:myfun.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LkhKgf06-1646290090557)(C:\\Users\\14158\\AppData\\Roaming\\Typora\\typora-user-images\\1646202970021.png)]

注意:如果修改了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

输出结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XhUTJJys-1646290090558)(C:\\Users\\14158\\AppData\\Roaming\\Typora\\typora-user-images\\1646287527165.png)]

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(pyargs(...\'Robert\',357,\'Mary\',229,\'Joe\',391)) 有关传递关键字参数的信息,请参阅 pyargs

访问python模块

我们可以在 MATLAB 中使用自己的 Python 代码和第三方模块。

内容必须位于 Python 路径中。安装第三方模块会将内容放在 Python 路径中。

如果我们创建自己的模块,则由我们负责将它们放到路径中。

调用用户定义的 Python 模块。


来源:https://blog.csdn.net/weixin_45468845/article/details/123254066
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 在MATLAB中调用 Python

相关推荐

  • 暂无文章