Как мне взаимодействовать с MATLAB с Python?
Друг спросил меня о создании небольшого веб-интерфейса, который принимает некоторые входы, отправляет их в MATLAB для свертывания числа и выводит результаты. Я разработчик Python/Django по профессии, поэтому я могу работать с веб-интерфейсом, но я не знаю, когда дело доходит до MATLAB. В частности:
- Мне бы хотелось действительно избежать хостинга на сервере Windows. Любые проблемы с запуском MATLAB в Linux со сценариями, созданными в Windows?
- Должен ли я искать команды обнуления или компилировать его на C и использовать
ctypes
для взаимодействия с ним?
- Если компиляция - это способ пойти, есть ли что-нибудь, что я должен знать о том, чтобы скомпилировать его и работать в Python? (Я давно не компилировал или не работал с C)
Любые предложения, советы и трюки о том, как это сделать?
Ответы
Ответ 1
Существует мост python-matlab, который уникален в том смысле, что 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
Ответ 2
Посмотрите mlabwrap, который позволяет вам вызывать Matlab через API-интерфейс python
Ответ 3
В качестве альтернативы, поскольку Matlab R2014b предоставляется библиотека Python для вызова Matlab из Python с помощью MATLAB Engine API для Python.
Ответ 4
Что касается совместимости ОС, если вы используете версию matlab для Linux, скрипты, написанные в окнах, должны работать без каких-либо изменений.
Если возможно, вы также можете рассмотреть возможность делать все с помощью python. Scipy/numpy с Matplotlib обеспечивают полную замену Matlab.
Ответ 5
Возможно, вы найдете здесь полезную информацию.
PyMat - интерфейс между Python и MATLAB