Cucco’s Compute Hack

コンピュータ関係の記事を書いていきます。

PythonからMatlabの関数を呼び出す

matlab.engineのインストール

管理者権限で起動したコマンドプロンプトで以下を実行

cd "C:\Program Files\MATLAB\R2016a\extern\engines\python\"
C:\Python34\python.exe "C:\Program Files\MATLAB\R2016a\extern\engines\python\setup.py" install

なぜか「ImportError: No module named 'matlab'」

実行するとこんなエラーに。
ImportError: No module named 'matlab'

matlab.engineは以下にあります。
C:\Python34\Lib\site-packages\matlab\engine

解決策1 環境変数でPYTHONPATHを指定して実行する

C:\Program Files\MATLAB\R2016a\extern\engines\python>SET PYTHONPATH="C:\Python34\Lib\site-packages"

C:\Program Files\MATLAB\R2016a\extern\engines\python>"C:\Python34\python.exe" "C:\Users\Cucco\Documents\MATLAB\matengen.py"
[[1.0,2.0,3.0,4.0,5.0]]

解決策2 実行する.pyファイルの中でパスを記載する

# -*- coding: utf-8
import sys
sys.path.append('C:\Python34\Lib\site-packages')
import matlab.engine

eng = matlab.engine.start_matlab()
a = matlab.double([1,4,9,16,25])
b = eng.sqrt(a)
print(b)

実行結果

C:\Python34>C:\Users\Cucco\Documents\MATLAB\matengen.py
[[1.0,2.0,3.0,4.0,5.0]]
参考文献

yak-shaver.blogspot.jp