web-dev-qa-db-ja.com

PythonからMATLABと対話するにはどうすればよいですか?

友人から、いくつかの入力を受け入れ、それらをMATLABに送信して数値を計算し、結果を出力する小さなWebインターフェイスの作成について尋ねられました。私はPython/Djangoの開発者であるため、Webインターフェイスを処理できますが、MATLABに関しては無知です。具体的には:

  • 私は本当にこれをWindowsサーバーでホストすることを避けたいと思います。 Windowsで作成されたスクリプトを使用してLinuxでMATLABを実行する際に問題はありますか?
  • コマンドをシェルアウトするか、Cにコンパイルし、ctypesを使用してコマンドを操作するかを検討する必要がありますか?
  • コンパイルが進むべき道である場合、それをコンパイルしてPythonで動作させることについて知っておくべきことはありますか? (私がCをコンパイルまたは使用してから長い時間が経ちました)

これを実現する方法に関する提案、ヒント、またはトリックはありますか?

24
Pete

python-matlab bridge があります。これは、Matlabがサーバーとしてバックグラウンドで実行されるという意味でユニークであるため、Matlab関数を呼び出すたびに起動コストがかかりません。

ダウンロードと次のコードと同じくらい簡単です。

from pymatbridge import Matlab
mlab = Matlab(matlab='/Applications/MATLAB_R2011a.app/bin/matlab')
mlab.start()
res = mlab.run('path/to/yourfunc.m', {'arg1': 3, 'arg2': 5})
print res['result']

yourfunc.mの内容は次のようになります。

%% MATLAB
function lol = yourfunc(args)
    arg1 = args.arg1;
    arg2 = args.arg2;
    lol = arg1 + arg2;
end
17
Max Jaderberg

mlabwrap を見てください。これにより、python APIを介してMatlabを呼び出すことができます。

13
Jon

別の方法として、Matlab R2014b以降、Pythonライブラリが提供され、Python MATLAB Engine API for Python を使用してMatlabを呼び出すことができます。 。

6
gaborous

OSの互換性に関しては、Linux用のmatlabバージョンを使用する場合、Windowsで記述されたスクリプトは変更なしで機能するはずです。可能であれば、Pythonですべてを実行する可能性も検討してください。 Matplotlibを使用したScipy/numpyは、Matlabの完全な代替品を提供します。

1
Raja Selvaraj