Как мне взаимодействовать с MATLAB из Python? - PullRequest
24 голосов
/ 13 февраля 2010

Друг спросил меня о создании небольшого веб-интерфейса, который принимает некоторые входные данные, отправляет их в MATLAB для обработки чисел и выводит результаты. Я по профессии разработчик Python / Django, поэтому я могу работать с веб-интерфейсом, но я не знаю, когда речь заходит о MATLAB. В частности:

  • Я бы действительно хотел бы избежать размещения этого на сервере Windows. Есть ли проблемы при запуске MATLAB в Linux с помощью скриптов, созданных в Windows?
  • Должен ли я изучать команды оболочки или компилировать ее в C и использовать ctypes для взаимодействия с ней?
  • Если компиляция - это путь, я должен знать что-нибудь о том, как его скомпилировать и работать в Python? (Прошло много времени с тех пор, как я скомпилировал или работал с C)

Любые предложения, советы или хитрости о том, как это осуществить?

Ответы [ 5 ]

17 голосов
/ 13 июля 2012

Существует 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
13 голосов
/ 13 февраля 2010

Взгляните на mlabwrap , который позволяет вам вызывать Matlab через API Python

6 голосов
/ 25 марта 2016

В качестве альтернативы, начиная с Matlab R2014b, предоставляется библиотека Python для вызова Matlab из Python с использованием MATLAB Engine API для Python .

1 голос
/ 13 февраля 2010

Что касается совместимости с ОС, если вы используете версию Matlab для Linux, сценарии, написанные в Windows, должны работать без каких-либо изменений. Если возможно, вы также можете рассмотреть возможность сделать все с Python. Scipy / numpy с Matplotlib обеспечивают полную замену Matlab.

0 голосов
/ 13 февраля 2010

Возможно, вы найдете здесь полезную информацию

PyMat - интерфейс между Python и MATLAB

...