MATLAB Answers

qrqr
0

pythonからMATLABにデータを送る方法

Asked by qrqr
on 1 Aug 2019
Latest activity Commented on by Kojiro Saito on 2 Aug 2019
pythonで定義した変数をMATLABに送る方法がわかりません。
仮に、pythonでA=2と定義した場合、MATLABのワークスペースにA=2をどのように
移転させられますか?

  0 Comments

Sign in to comment.

Tags

Products


Release

R2019a

1 Answer

Answer by Kojiro Saito on 2 Aug 2019
 Accepted Answer

こちらのドキュメントが一番近い例だと思います。
2通り紹介します。
どちらも前提としてPython用MATLABエンジンを使用しますので、まず、こちらのドキュメントを参考に、Pythonでインストールを行います。
ここではWindowsの場合を紹介します。コマンドプロンプトを起動し、以下のコマンドを実行します。
cd "$MATLAB_INSTALL\extern\engines\python"
python setup.py install
ここで、$MATLAB_INSTALLはMATLABのインストールフォルダー(例: C:\Program Files\MATLAB\R2019a)です。
これで、Pythonでimport matlab.engineが使えるようになります。
(1) 起動中のMATLABのワークスペースにPythonから変数を送る場合
起動したMATLABで、セッションを共有セッションにします。
【MATLAB側で実行】
% MATLABセッションを共有セッションにする
matlab.engine.shareEngine
次に、Pythonからmatlab.engine.connect_matlab()で接続し、eng.workspace['A'] = Aの形でPythonの変数をMATLABに送ります。
【Python側で実行
sample.py
import matlab.engine
eng = matlab.engine.connect_matlab()
A = 2.0
eng.workspace['A'] = A
# セッションへの接続を切断
eng.quit()
sample.pyをPythonで実行すると、MATLABのワークスペースに変数が追加されます。
Capture.PNG
(2) MATLABを起動してワークスペースにPythonから変数を送る場合
MATLABを新規に起動させるにはmatlab.engine.start_matlab()を使います。
【Python側で実行】
import matlab.engine
eng = matlab.engine.start_matlab()
A = 2.0
eng.workspace['A'] = A
# 確認用(MATLABのワークスペースから変数Aを取得して、Python側で表示)
B = eng.workspace['A']
print(B)
# エンジンの停止
eng.quit()

  2 Comments

qrqr
on 2 Aug 2019
ありがとうございます。
コマンドプロンプトで試したのですが、'python'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
このようなエラーが出ますが、原因がわかりません。
宜しくお願いします。
※MATLAB R2019a
※python2.7
Kojiro Saito on 2 Aug 2019
python.exeが環境変数PATHに追加されていないのかもですね。フルパスで指定してみたらどうでしょうか?
C:\Python27\python.exe setup.py install

Sign in to comment.