zoukankan      html  css  js  c++  java
  • 无线智联-程序篇:让python与matlab牵手

    python和matlab本来是青梅竹马的好基友,奈何相爱相杀,经常放在一起做对比,就好比经常听到的,“你看看隔壁xx家的孩子”,其实每个孩子都有每个孩子的优点,如果能发挥每个孩子的优点,岂不是更好。这不,python和matlab这对好基友也牵手了。下面详细说说。

    我们让python来娶matlab,在python的程序中调用matlab。要在 Python® 会话内启动 MATLAB® 引擎,必须先安装 Python 包形式的引擎 API。MATLAB 提供了标准的 Python setup.py 文件,用于通过 distutils 模块编译和安装引擎。可以使用相同的 setup.py 命令在 Windows®、Mac 或 Linux® 系统上编译和安装引擎,所以不同系统下命令是兼容的。

    在安装之前,要确认您的 Python 和 MATLAB 配置:

    1.系统具有受支持的 Python 版本和 MATLAB R2014b 或更新版本。要检查系统上是否已安装 Python,在操作系统提示符下运行 Python。

    2.包含 Python 解释器的文件夹添加到您的路径(如果尚未在该路径中)。

    3. 找到 MATLAB 文件夹的路径。启动 MATLAB,并在命令行窗口中键入 matlabroot。复制 matlabroot 所返回的路径。

    然后运行setup.py:

    在 Windows 系统中 -

    cd "matlabrootexternenginespython"
    python setup.py install

    在 Mac 或 Linux 系统中 -

    cd "matlabroot/extern/engines/python"
    python setup.py install

    在python中调用matlab函数

    先在matlab中写一个简单的测试函数:

    function x=myLS(A,B)
    x = A/B;
    end

    然后在python中进行调用:

    import matlab.engine
    eng = matlab.engine.start_matlab()
    y = eng.myLS(matlab.double([[1.],[2.]]),matlab.double([[3.],[4.]]))
    print y

    从 MATLAB 函数返回多个输出参数

    默认情况下matlab返回一个参数到python,如果返回大于1个参数,需要在调用函数中使用 nargout 参数指定输出参数的数量。

    import matlab.engine
    eng = matlab.engine.start_matlab()
    t = eng.gcd(100.0,80.0,nargout=3)
    print(t)
    (20.0, 1.0, -1.0)

    不返回参数

    如果没有返回参数,,则将 nargout 设为 0即可:

    import matlab.engine
    eng = matlab.engine.start_matlab()
    eng.doc(nargout=0)

    矩阵转换问题

    python中经常使用numpy实现多维矩阵,但将ny矩阵转为matlab的double数组存在问题。

    解决办法是用numpy.ndarray的tolist()方法。

    data_list = data.tolist()
    看后请点赞
  • 相关阅读:
    取消GridView/ListView item被点击时的效果 记录学习
    EditText 几种显示方式,固定行数,自适应行数
    Android 判断当前屏幕是横屏还是竖屏
    Android 用代码设置Shape,corners,Gradient
    Android 横屏不让输入法全屏显示
    js-JavaScript高级程序设计学习笔记7
    js-FCC算法-Pairwise
    js-JavaScript高级程序设计学习笔记6
    js-JavaScript高级程序设计学习笔记5
    js-自制轮播插件!
  • 原文地址:https://www.cnblogs.com/hyb221512/p/10295761.html
Copyright © 2011-2022 走看看