Сведения о вопросе

1234123213

16:03, 1st July, 2020

Теги

python   c   matlab    

У кого-нибудь есть опыт создания общей библиотеки в MATLAB?

Просмотров: 489   Ответов: 4

Исследователь создал небольшую симуляцию в MATLAB, и мы хотим сделать ее доступной для других. Мой план состоит в том, чтобы взять симуляцию, очистить несколько вещей и превратить ее в набор функций. Затем я планирую скомпилировать его в библиотеку C и использовать SWIG для создания оболочки Python. В этот момент я должен быть в состоянии вызвать симуляцию из небольшого приложения Django. По крайней мере, я на это надеюсь.

У меня есть правильный план? Кто-нибудь еще делал что-то подобное? Можете ли вы дать мне знать, есть ли какие-либо серьезные подводные камни, о которых я не знаю в данный момент?



  Сведения об ответе

SILA

18:03, 1st July, 2020

Следует помнить, что компилятор Matlab на самом деле не компилирует код Matlab в собственные машинные инструкции. Он просто оборачивает его в автономный исполняемый файл или библиотеку с собственным механизмом выполнения, который запускает его. Вы сможете запустить свой код без установки Matlab, и вы сможете связать его с другими языками, но он все равно будет интерпретирован кодом Matlab, поэтому ускорения не будет.


  Сведения об ответе

crush

18:03, 1st July, 2020

Я не буду сильно помогать, но я помню, что мне удалось обернуть симуляцию MATLAB в DLL, а затем вызвать ее из приложения Delphi. Это сработало очень хорошо.


  Сведения об ответе

SSESION

18:03, 1st July, 2020

Я бы тоже сначала попробовал ctypes.

  1. Используйте компилятор Matlab для компиляции кода в C.
  2. Скомпилируйте код C в код DLL.
  3. Используйте ctypes для загрузки и вызова кода из этого DLL

Самый трудный шаг, вероятно, 1, но если вы уже знаете Matlab и использовали компилятор Matlab, у вас не должно быть серьезных проблем с ним.


  Сведения об ответе

$DOLLAR

18:03, 1st July, 2020

Возможно, попробуем ctypes вместо SWIG. Если он был включен в состав Python 2.5, то он должен быть хорошим :-)


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться