python 執行matlab文件

環境:matlab2014b,mac os,python 2.7html

1. windows用戶能夠用win32com,COM只適用於WINDOWS系統,這裏沒有嘗試。python

2. 若是是執行簡單的命令,能夠用matlab2014b提供的引擎,個人在/Applications/MATLAB_R2014b.app/extern/engines/python。linux

###Matlab Engine for Python
#Call Matlab Function from Python
 
------------------------------
##Step 1: Installation
 
#Install with Administrator Privileges
  cd "matlabroot\extern\engines\python"
  python setup.py install
 
#Install without Administrator Privileges
 
  cd "matlabroot\extern\engines\python"
  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)
------------------------------git

3. python直接調用執行matlab,現有不少工具:github

3.1. pymatwindows

  沒有python2.7的支持api

3.2. pymat2app

  在pymat基礎上改良過的。python2.7

3.3. mlabwrapasync

  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

相關文章
相關標籤/搜索