文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

matlab调用python的各种方法详解

2023-09-01 12:50

关注

matlab调用python的各种方法详解

文章目录

在MATLAB中,可以使用py函数来调用Python模块和函数。在此基础上,我们可以很轻易的调用python中的各种模块,方便我们在神经网络上的应用仿真。

以下是使用MATLAB调用Python模块的基本步骤:

  1. 确保你的系统已经正确安装了Python,并且将Python添加到了系统的环境变量中。

  2. 在MATLAB命令窗口中,使用pyversion命令检查MATLAB当前使用的Python版本。确保它是你希望调用的Python版本。

  3. 使用py.module_name语法来引入Python模块。module_name是你要调用的Python模块的名称。

  4. 调用Python模块中的函数或方法。使用.操作符来访问模块中的函数和方法。

1 调用自定义python函数

% 添加函数模块路径, 如果路径不在则搜索不到py.sys.path().append('fun/to/path')mymod = py.importlib.import_module('py_name')  % 不要带py后缀,不然报错a = mymod.print_num(1)disp(a)

例子

# num.pydef print_num(num):   return num
% 添加函数模块路径, 如果路径不在则搜索不到py.sys.path().append('fun/to/path')mymod = py.importlib.import_module('num')  % 不要带py后缀,不然报错a = mymod.print_num(1)disp(pwd)disp(a)

在这里插入图片描述

2 访问 Python 内置模块

要访问 Python 库,请在 Python 名称前添加 py. 前缀。
访问math模块:

% 引入Python模块% py.math;% 调用Python模块中的函数result = py.math.sqrt(4);disp(result);  % 显示结果

在这里插入图片描述
调用list、textwrap:

a = py.list({'This','is a','list'});disp(a);b = py.textwrap.wrap('This is a string');disp(b);

在这里插入图片描述

3 从 MATLAB 运行python脚本

3.1 PYRUNFILE(FILE)

PYRUNFILE(FILE) 执行 Python 脚本文件 FILE,它可以被提供为标量字符串、cellstr 或 char 数组。 FILE 必须指定绝对路径或相对路径-相对于当前工作目录,扩展名为“.py”的文件的路径。如果脚本文件需要任何命令行参数,则可以通过提供它们在要执行的文件路径之后的 FILE 中,由空格字符分隔。

格式

% 返回值的pyrunfile("fun.py")

例子

# 定义num.py的函数def print_num(num=1):  print("执行print_num函数")  return numif __name__ == "__main__":  b = print_num(3)  print("hello world!") 

matlab中调用,命令行窗口可以得到print打印出的值:

% a string, cellstr or a char array% 添加当前python的文件路径py.sys.path().append('fun/to/path')% 调用这个函数pyrunfile("num.py")

在这里插入图片描述

3.2 [ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS)

[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS) 执行文件并返回任何变量由 Python 生成到 MATLAB,通过指定 Python 变量的名称在 OUTPUTS 中并在 OUTVARS 中捕获返回值。 可以提供输出作为字符串、cellstr 或 char 数组。

格式

% 返回值的out_vulue = pyrunfile("fun.py", "var_nam")

例子

# num.pydef print_num(num=1):  return numif __name__ == "__main__":  b = print_num(3)

matlab中调用,这里不需要导入这个函数,程序会自动搜索这个函数:

% a string, cellstr or a char array% 添加当前python的文件路径py.sys.path().append('fun/to/path')% 调用这个函数myListFile = pyrunfile("num.py", "b")

在这里插入图片描述
denominator分母,imag虚部,real实部,numerator分子

获取更多的返回变量

# 已经定义的num.pydef print_num(num=1):  c = 1  print("执行print_num函数")  return numif __name__ == "__main__":  a =  print_num(2)  b = print_num(3)  print("hello world!") 

上面代码中,我们定义了a、b、c三个变量,这是我们都想获取,则可以通过下面的方法:

[a, b, c] = pyrunfile("num.py", ["a", "b", "c"]);

可以发现,a、b的值都成功获取了,但是c没有成功,应为c为在函数print_num中,为零时变量,获取不到。

在这里插入图片描述
在这里插入图片描述

3.3 [ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{INPUTS})

[ OUTVARS ] = PYRUNFILE(FILE, OUTPUTS, varargin{INPUTS}) 执行文件并返回OUTPUTS, 并将它们分配给 OUTVARS,使用 varargin{INPUTS} 传递的 MATLAB 数据。 varargin{INPUTS} 可用于将 MATLAB 数据传递给 Python 表达式,格式:名称-值对,其中名称是要分配的 Python 变量的名称,并且该值是 MATLAB 数据或可访问工作区中的变量名称。 varargin{INPUTS}只能用于传递可自动转换为python格式的数据。

格式一

% 返回值的out_vulue = pyrunfile("fun.py argv1 argv2 ...argvn", "var_nam")
例子
# num.pyimport sysdef print_num(num=1):  ans = num+1  return ansif __name__ == "__main__":  arg = sys.argv[1]  print(type(arg))  b = print_num(int(arg))  print(b)

调用

b = pyrunfile("num.py 1", "b");

在这里插入图片描述

格式二

% 返回值的out_vulue = pyrunfile("fun.py", "var_nam", arg1=v1, arg2=v2)
例子
# num.pydef print_num(num=1):  ans = num+1  return ansif __name__ == "__main__":  num1= x  num2 = y  a = print_num(num1)  b = print_num(num2)  print(a)  print(b)

调用:

[a, b] = pyrunfile("num.py", ["a", "b"], x=1, y=2);

在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_45248370/article/details/130905363

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯