zoukankan      html  css  js  c++  java
  • python 执行matlab文件

    环境:matlab2014b,mac os,python 2.7

    1. windows用户可以用win32com,COM只适用于WINDOWS系统,这里没有尝试。

    2. 如果是执行简单的命令,可以用matlab2014b提供的引擎,我的在/Applications/MATLAB_R2014b.app/extern/engines/python。

    ###Matlab Engine for Python
    #Call Matlab Function from Python
     
    ------------------------------
    ##Step 1: Installation
     
    #Install with Administrator Privileges
      cd "matlabrootexternenginespython"
      python setup.py install
     
    #Install without Administrator Privileges
     
      cd "matlabrootexternenginespython"
      python setup.py build --build-base builddir install --install-base installdir
     
      Include 'installdir' in the search path for Python packages
      Add 'installdir' to the PYTHONPATH environment variavle
     
     
    ------------------------------
    ##Step 2: Using Matlab Engine
     
      #Start and quit
      import matlab.engine
      eng = matlab.engine.start_matlab()
      eng.quit()
     
      #Call Matlab Functions:
      #Just call with form eng.xxx()
      #the function xxx should in the namespace of matlab.
     
     
      #Asynchronously Call
      import matlab.engine
      eng = matlab.engine.start_matlab()
      future = eng.sqrt(4.0,async=True)
      ret = future.result()
      print(ret)
     
     
      #WorkSpace Usage:
      import matlab.engine
      eng = matlab.engine.start_matlab()
      eng.workspace['y'] = x
      a = eng.eval('sqrt(y)')
      print(a)
     
     
      #Skills for unsupported features in python
      #eng.eval()
      import matlab.engine
      eng = matlab.engine.start_matlab()
      eng.eval("T = readtable('patients.dat');",nargout=0)
     
      #Plot With Matlab:
      import matlab.engine
      eng = matlab.engine.start_matlab()
      data = eng.peaks(100)
      eng.mesh(data)
    ------------------------------

    3. python直接调用执行matlab,现有很多工具:

    3.1. pymat

      没有python2.7的支持

    3.2. pymat2

      在pymat基础上改良过的。

    3.3. mlabwrap

      http://mlabwrap.sourceforge.net/

      需要用root权限。最初安装不成功,报OSError: [Errno 2] No such file or directory,应该是找不到MATLAB2014b的路径,更改PATH加上MATLAB的安装目录后成功(在setup.py中更改安装参数应该也可以,没有尝试)。export PATH=/Applications/MATLAB_R2014b.app/bin:$PATH

      from mlabwrap import mlab的时候又报import mlabraw引入不成功,google之后发现export DYLD_LIBRARY_PATH=/Applications/MATLAB_R2014b.app/bin/maci64:$DYLD_LIBRARY_PATH即可,

      这里runmodel.m文件内容是Function result = runmodel() ..... END

      调用方式为mlab.runmodel()

    解决方案参考了http://stackoverflow.com/questions/13311415/run-a-matlab-script-from-python-pass-args/13316939#13316939

    http://sourceforge.net/p/mlabwrap/mailman/message/26145026/

    传入参数:

      mlab.runmodel('[1,2,3,4,5]',...)注意参数必须为字符串,python会将其转换为各种形式。

    3.4. mlab

      貌似在mac上不稳定,执行不了后就放弃了。

    3.5. python-matlab-bridge

    https://github.com/jaderberg/python-matlab-bridge

    only work on unix, and is based on TCP transmission while messages are decoded in JSON format。

    3.6. Nipype

    http://nipy.sourceforge.net/nipype/api/generated/nipype.interfaces.matlab.html

  • 相关阅读:
    json_encode不编码中文字符的方式
    网站备份脚本
    英语动词大全
    多线程和多进程的区别【转载网络】
    解决curl中errno为51和60的错误
    ps修改图片文字
    如何设计充值消费的数据表
    LoRa与NB-IoT对比(转载)
    vuejs 使用vue-cli引入bootstrap
    关于防火墙的规则
  • 原文地址:https://www.cnblogs.com/hxvicky/p/4646044.html
Copyright © 2011-2022 走看看