脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - matlab调用python的各种方法详解

matlab调用python的各种方法详解

2023-10-11 14:43不当菜虚困 Python

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

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.py

def 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)

matlab调用python的各种方法详解

2 访问 Python 内置模块

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

访问math模块:

% 引入Python模块
% py.math;

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

matlab调用python的各种方法详解

调用list、textwrap:

a = py.list({'This','is a','list'});
disp(a);

b = py.textwrap.wrap('This is a string');
disp(b);

matlab调用python的各种方法详解

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 num

if __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")

matlab调用python的各种方法详解

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.py

def print_num(num=1):
  return num

if __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")

matlab调用python的各种方法详解

denominator分母,imag虚部,real实部,numerator分子

获取更多的返回变量
# 已经定义的num.py

def print_num(num=1):
  c = 1
  print("执行print_num函数")
  return num

if __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中,为零时变量,获取不到。

matlab调用python的各种方法详解

matlab调用python的各种方法详解

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.py
import sys

def print_num(num=1):
  ans = num+1
  return ans

if __name__ == "__main__":
  arg = sys.argv[1]
  print(type(arg))
  b = print_num(int(arg))
  print(b)

调用

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

matlab调用python的各种方法详解

格式二
% 返回值的
out_vulue = pyrunfile("fun.py", "var_nam", arg1=v1, arg2=v2)
例子
# num.py
def print_num(num=1):
  ans = num+1
  return ans

if __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);

matlab调用python的各种方法详解

到此这篇关于matlab调用python的各种方法详解的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/weixin_45248370/article/details/130905363

延伸 · 阅读

精彩推荐
  • PythonLinux下Pycharm、Anaconda环境配置及使用踩坑

    Linux下Pycharm、Anaconda环境配置及使用踩坑

    这篇文章主要介绍了Linux下Pycharm、Anaconda环境配置及使用踩坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    周博u01008332712182021-05-04
  • Pythonpython决策树预测学生成绩等级实现详情

    python决策树预测学生成绩等级实现详情

    这篇文章主要为介绍了python决策树预测学生成绩等级,使用决策树完成学生成绩等级预测,可选取部分或全部特征,分析参数对结果的影响,并进行调参优...

    极客范儿5972022-12-07
  • PythonPython爬虫基础之爬虫的分类知识总结

    Python爬虫基础之爬虫的分类知识总结

    来给大家讲python爬虫的基础啦,首先我们从爬虫的分类开始讲起,下文有非常详细的知识总结,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下...

    松鼠爱吃饼干9482021-11-01
  • Pythonpytorch自定义二值化网络层方式

    pytorch自定义二值化网络层方式

    今天小编就为大家分享一篇pytorch自定义二值化网络层方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    ChLee988592020-05-06
  • Python解决jupyter notebook启动后没有token的坑

    解决jupyter notebook启动后没有token的坑

    这篇文章主要介绍了解决jupyter notebook启动后没有token的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    GHower10862021-10-19
  • Python在Lighttpd服务器中运行Django应用的方法

    在Lighttpd服务器中运行Django应用的方法

    这篇文章主要介绍了在Lighttpd服务器中运行Django应用的方法,本文所采用的是最流行的FastCGI模块,包括同时运行多个Django应用的方法,需要的朋友可以参考下...

    服务器之家3022020-07-25
  • PythonPython3实现自定义比较排序/运算符

    Python3实现自定义比较排序/运算符

    这篇文章主要介绍了Python3实现自定义比较排序/运算符,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    as11717992534482022-09-16
  • Python解决import tensorflow导致jupyter内核死亡的问题

    解决import tensorflow导致jupyter内核死亡的问题

    这篇文章主要介绍了解决import tensorflow导致jupyter内核死亡的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    凛雨时冽7432021-09-03