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()
    看后请点赞
  • 相关阅读:
    HDU 2116 Has the sum exceeded
    HDU 1233 还是畅通工程
    HDU 1234 开门人和关门人
    HDU 1283 最简单的计算机
    HDU 2552 三足鼎立
    HDU 1202 The calculation of GPA
    HDU 1248 寒冰王座
    HDU 1863 畅通工程
    HDU 1879 继续畅通工程
    颜色对话框CColorDialog,字体对话框CFontDialog使用实例
  • 原文地址:https://www.cnblogs.com/hyb221512/p/10295761.html
Copyright © 2011-2022 走看看