Заменив Matlab на python

Я студент-инженер, и мне приходится делать много числовой обработки, графики, симуляции и т.д. Инструментом, который я использую в настоящее время, является Matlab. Я использую его на своих университетских компьютерах для большинства моих заданий. Тем не менее, я хочу знать, какие бесплатные варианты доступны.

Я провел некоторое исследование, и многие говорили, что python - достойная замена для Matlab в различных сценариях. Я хочу знать, как сделать все это с помощью python. Я использую mac, так как я могу установить различные пакеты python. какие пакеты? действительно ли это жизнеспособная альтернатива? какие вещи я могу и не могу сделать, используя эту настройку python?

Ответ 1

На Mac самые простые способы начать (без особого порядка):

  • Enthought Python Distribution, который включает в себя большинство научных пакетов, которые вам, скорее всего, понадобятся. Бесплатно для академического/некоммерческого использования.
  • Macports - актуально с последними выпусками, поэтому sudo port install py26-numpy py26-scipy py26-matplotlib py26-ipython должен начать работу.
  • Scipy Superpack - script для установки последних версий svn всех важных пакетов.

Я сделал именно это (замените Matlab на Python) около 2 лет назад и не оглядывался назад. Трансляция в Python, более интуитивно понятная модель памяти и другие преимущества Numpy делают численное произведение полным удовольствием. Кроме того, с f2py, cython, невероятно легко поместить внутренние петли на другой язык. Это хорошее место для начала - другие впечатляющие страницы для мотивации PerformancePython и ParallelProgramming. Не забудьте понять, что Pythons "переменная является ссылкой на объект" семантикой... после этой настройки все просто плавно. Одна из самых классных вещей, которая превосходит Matlab, состоит из двух строк, я запускаю более 8 ядер... p = Pool(8); res = p.map(analysis_function,list_of_data) - MATLAB Parallels toolboxes настолько дороги, что я еще не видел университет, который на самом деле их имеет.

Ответ 2

Я программировал Matlab около 15 лет, а с Python около 10. Обычно он ломается следующим образом:

Если вы можете удовлетворять следующим условиям:   1. Вы в первую очередь используете матрицы и матричные операции   2. У вас есть деньги на лицензию Matlab   3. Вы работаете на платформе, поддерживаемой mathworks.

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

Язык Matlab неуклюже, но пользовательский интерфейс является гладким. Язык Python очень хорош - с итераторами, генераторами и инструментами функционального программирования, которых нет в Matlab; однако вам нужно будет выбрать и выбрать хороший интерфейс, если вам не нравится (или не может использовать) SAGE.

Я надеюсь, что это поможет.

Ответ 3

При замене Matlab на Python необходимо учитывать три аспекта; возможности основного языка, IDE и цена.

Сравнение возможностей

В этом разделе описываются все возможности каждой платформы. Короче говоря, все, что может сделать Matlab, Python также может делать плюс многое другое. Однако такие вещи, как линейная алгебра и быстрое прототипирование Matlab, делают более чисто.

Matlab

Все в Matlab готово в комплекте, а панели инструментов легко интегрированы. Он также намного более зрелый - но не был разработан для программирования общего назначения, означая, что ничего, что не связано с линейной алгеброй, является болезненным для реализации.

  • Toolboxes: Ярлыки Matlab очень хороши, и реализации python часто пытаются конкурировать с ними (даже для не столь специализированных вещей, как алгоритмы оптимизации).
  • Линейная алгебра: Matlab имеет сжатые возможности линейной алгебры, которые легче читать и интерпретировать.
  • Возможности визуализации: Имеет очень хороший и очень широкий спектр возможностей визуализации.

Python

Python потребует нескольких дополнительных модулей, чтобы он стал хорошим Matlabreplacement.

  • Программирование общего назначения: Python - это правильный язык программирования, который обеспечивает намного большую гибкость по сравнению с Matlab.
  • Numpy: Предоставляет массивы и процедуры линейной алгебры, однако имеет более неудобный синтаксис, чем Matlab. Я влюбился в broadcasting, но не более repmat мусор.
  • SciPy: Статистика, оптимизация и другие полезные математические материалы.
  • MatPlotLib: Предоставляет, на мой взгляд, более качественные графики, чем Matlab. Кроме того, он должен быть синтаксически подобен Matlab, поэтому его легко подбирать.
  • SymPy: Хороший символический пакет программ.

Сравнение IDE

Здесь, на мой взгляд, недостает питона. Я просто нахожу разработку алгоритма (в частности, используя много линейной алгебры), менее болезненную в среде Matlab IDE.

Matlab

Вот некоторые ключевые функции Matlab, с которыми трудно жить, не будучи студентом-инженером. Обратите внимание, что в IDE Python также есть некоторые из этих возможностей, но они более небрежно реализованы.

  • Мощная отладка:. Легко анализировать функции очень не ограничивающим образом. Python также позволяет отлаживать, но часто не так хорошо реализуется в среде IDE.
  • Переменная Explorer: MATLAB имеет хороший проводник переменных, который всегда хорош для просмотра многих поддерживаемых типов данных. Некоторые IDE-среды python пытаются отображать массивы numpy, которые могут раздражать.
  • Переменная выживаемость:. Если во время выполнения кода ломается код, переменные все еще сохраняются, что помогает отлаживать. Кроме того, проще запускать разные скрипты в строке, предполагая постоянные переменные. В Python вам придется вручную сохранять переменные в script, чтобы они были доступны для других скриптов.
  • Профилировщик: Очень хорошо для разбивки того, где ваши алгоритмы являются узкими местами.
  • Командная строка В командной строке могут выполняться однострочные команды. Python полностью поддерживает это также во всех хороших IDE.
  • Инструменты графического интерфейса GUI: Результаты и переменные могут быть быстро и безболезненно построены из пользовательского интерфейса. Большинство Python IDE ориентированы на разработку программного обеспечения и поэтому не поддерживают это (хотя sypder имеет ограниченную поддержку через matplotlib).
  • Документация: Все функции имеют встроенную документацию в среде IDE.

Python

Появились несколько новых IDE python, которые начинают конкурировать с некоторыми из ключевых преимуществ MATLAB. Мне лично нравится PyCharm, который был недавно выпущен как бесплатная версия сообщества. Он имеет следующие возможности и очень хорошо разработан с точки зрения пользовательского интерфейса.

  • Bebugging
  • Переменный проводник
  • Командная строка
  • Документация

Сравнение цен

Python является бесплатным и имеет активное сообщество поддержки. У Matlab также было хорошее сообщество поддержки, но ничего, кроме бесплатного.

Ответ 4

Может вам понравится sagemath, который "сочетает в себе мощь многих существующих пакетов с открытым исходным кодом в общий интерфейс на основе Python", Вот тур по функциям.

Ответ 5

Попробуйте Sage - он разработан как замена с открытым исходным кодом для Matlab, Mathematica и т.д. Он реализован на Python и может быть написанный с помощью Python, но он также добавляет множество математических особенностей. Существует установщик для Mac, поэтому вам не нужно загружать множество отдельных пакетов.

Существует также GNU Octave - другая альтернатива с открытым исходным кодом для Mathematica/Matab, которая имеет собственный язык программирования. Однако я не нашел никакой информации о версии Mac (хотя я не очень сильно смотрел).

Ответ 6

python (x, y) достаточно мощный, но только для Windows или Linux, поэтому вам придется использовать bootcamp или Linux. Более легкий пакет для математики Matplotlib, который в основном добавляет возможности построения на язык Python (лучше использовать вместе с IPython).

Ответ 7

Дубликат этого.

Я считаю, что для вычислений и визуализации чистой численной/линейной алгебры Matlab - несколько более последовательная среда разработки. Numpy/Scipy/Matplotlib чувствуют, для меня, немного беспорядочно. Если вы создаете полную программу - автоматизировать систему или отображать результаты на веб-странице - Python - это преимущество того, чтобы в первую очередь быть настоящим языком программирования. Но для интерактивной цифровой обработки я думаю, что Matlab все еще выигрывает. Отсутствие элементарных инфиксных операторов в Python - это один маленький пример (PEP 225). Для статистических вычислений, исследования и визуализации данных трудно выполнить R.

Ответ 8

Было бы здорово, если бы проект matlab для преобразования python mat2py в sourcefourge снял..