Заменив 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 снял..