Python против Matlab

Я рассматриваю возможность перехода с MATLAB на Python. Приложение представляет собой количественную торговлю, а стоимость не является проблемой. Есть несколько вещей, которые мне нравятся в MATLAB, и мне интересно, как Python складывается (не удалось найти ответы в обзорах, которые я читал).

  • Есть ли IDE для Python, который так же хорош, как MATLAB (редактор переменных, отладчик, профилировщик)? Я хорошо читал о Spyder, но есть ли у него профилировщик?

  • Когда вы меняете функцию на пути в MATLAB, она автоматически перезагружается. Вам нужно вручную повторно импортировать библиотеки при их изменении, или это можно сделать автоматически? Это незначительная вещь, но на самом деле значительно улучшает мою производительность.

Ответ 1

IDE: Нет. Идентификаторы Python не так хороши или зрелы, как MATLAB, хотя я хорошо слышал о Wing IDE. Как правило, я обнаруживаю, что IDE являются полным избытком для разработки Python и обнаруживают, что я более продуктивен с хорошо настроенным текстовым редактором (vim в моем случае) и отдельным визуальным отладчиком (WinPDB).

Изменение функций: Модули необходимо перезагрузить после изменений с помощью встроенной функции reload().

import foo
#now you've changed foo.py and want to reload it
foo = reload(foo)

Я переключил себя с MATLAB на Python, потому что обнаружил, что Python гораздо сложнее справляется со сложностью, т.е. мне легче писать, отлаживать и поддерживать сложный код в Python. Одна из причин этого заключается в том, что Python - это язык общего назначения, а не специальный язык манипулирования матрицей. Из-за этого объекты, такие как строки, нечисловые массивы и (решающие) ассоциативные массивы (или карты или словари), являются первоклассными конструкциями в Python, как и классы.

Что касается возможностей, с NumPy, SciPy и Matplotlib, у вас в значительной степени есть весь набор функций, которые MATLAB предоставляет из коробки, и довольно много материала, для которого вам придется покупать отдельные панели инструментов.

Ответ 2

Я хорошо разбираюсь в IDE Spyder в дистрибутиве Python (x, y). Я долговременный пользователь Matlab и знаю о существовании Python в течение 10 лет или около того, но это только с тех пор, как я установил Python (x, y), что я начал регулярно использовать Python.

Ответ 3

Вы также можете проверить некоторые ответы в следующем потоке, хотя они не затрагивают две основные проблемы:

Должен ли я переключиться на Python?

Я тоже полный конверт из Matlab:

  • Мне еще нужно использовать полнофункциональную Python IDE, но в IPython она очень хорошо работает в сочетании с Matplotlib, Numpy, Scipy и т.д. Я на самом деле использую дистрибутив Enthough Python, который поставляется с предустановленной большей частью научные/количественные пакеты, которые мне нужны. Я также слышал хорошие вещи о Python (x, y) и Sage

  • Возможно, другая IDE обрабатывает это, но в IPython я использую autoreload, который работает достаточно хорошо.

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

Ответ 4

Я уже некоторое время занимаюсь инженерным полем, и я всегда использовал MATLAB для математических вычислений с высокой сложностью. У меня никогда не было серьезных проблем с этим, но я тоже не был в восторге от этого. Несколько месяцев назад я узнал, что я буду TA для класса численных методов и что его будут изучать с помощью Python, поэтому мне нужно будет изучить язык.  То, что я вначале считал дополнительной работой, оказалось удивительным хобби. Я даже не могу описать, насколько плохо сравнивается MATLAB с Python! То, что раньше меня целыми днями вводило в Matlab, забирает у меня всего несколько часов, чтобы писать на Python. Мой код выглядит бесконечно привлекательнее. Производительность и гибкость Python действительно удивили меня. С Python я могу буквально делать все, что я делал в MATLAB, и я могу сделать это намного лучше.

Если кто-то еще думает о переключении, я предлагаю вам это сделать. Это облегчило мою жизнь. Я приведу "Python Scripting for Computational Science", потому что они лучше описывают преимущества Python над MATLAB, чем я:

  • язык программирования python более мощный
  • среда python полностью открыта и предназначена для интеграции      с внешними инструментами,
  • полный набор инструментов/модулей с множеством функций и классов может содержаться в одном файле (в отличие от множества M файлов),
  • передача функций в качестве аргументов в функции проще,
  • Вложенные гетерогенные структуры данных просты в построении и использовании,
  • объектно-ориентированное программирование более удобно,
  • интерфейс C, С++ и fortran лучше поддерживается и, следовательно, проще,
  • скалярные функции работают с аргументами массива в большей степени (без модификаций арифметических операторов),
  • источник свободен и работает на других платформах.

Ответ 5

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

Что касается (2), я точно знаю, что вы имеете в виду, так как я пропускаю ту же самую функцию из Lisp, и насколько я знаю, вам нужно активно reimport библиотеки после их изменения. Однако это не реальная зависания, так как вы можете легко написать (один раз) небольшую функцию, которая делает это для каждого интересующего вас модуля, а затем поместить эту функцию на ключевой макрос, чтобы все, что вам нужно сделать, это, например, нажать CTRL -T после изменения кода.

Ответ 6

почти все покрыто другими. Надеюсь, вам не нужны какие-либо панели инструментов, такие как оптимизатор, нейронная сеть и т.д. [Я не нашел их для python, возможно, есть некоторые.. Я серьезно сомневаюсь, что они могут лучше, чем Matlab.]

если u не нуждается в возможности символической манипуляции и использует windows python (x, y) - это путь [они не имеют большой активности на своем Linux-порту (более старые версии доступны)] (или нужны некоторые незначительные символические манипуляции, использующие sympy, я думаю, что он поставляется с EPD, а python (x, y) заменяет/интегрирует EPD)

если вам нужны символические способности, шалфей - это путь, мудрец ИМХО отлично справляется с Matlab, а также Mathematica..

Я также пытаюсь сделать переключатель... (нужно для моих engg projs)

Надеюсь, это поможет.

Ответ 7

после долгих длительных опросов со многими редакторами, я поселился для aptana ide + ipython (включая ноутбук в интернет-браузере) отлично подходит для редактирования, облегчения получения помощи, быстрого поиска новых вещей

aptana - это то же самое, что и затмение (из-за pydev), но у aptana есть темы и разные мелочи, которых не хватает eclipse.

о python немного, не забывайте pandas, поскольку он (я считаю) чрезвычайно мощный инструмент для анализа данных это будет зверь в будущем, мое мнение

Я изучаю matlab, и я вижу там некоторые опрятные вещи, особенно интерфейсы gui и некоторые другие приятные вещи

но python дает вам гибкость и легкость, во всяком случае, вам все равно нужно изучить основы python, matplotlib, numpy (и в конечном итоге pandas)

но из того, что я вижу, numpy и matplotlib похожи на концепции matplotlib (возможно, они были созданы с учетом Matlab, верно?)

Ответ 8

Этот вопрос был задан в 2011 году.

Совсем недавно, в середине 2013 года, я был полностью преобразован в Python, в первую очередь из-за доступности Matlab-подобной IDE Spyder, а также инсталляторов "все-в-одном" для всей среды Scientific Python и среды IDE.

PythonXY (только окна) и Continuum Analytics 'Anaconda (Mac/Win/Linux) быстро и быстро запускается и работает без малейшей конфигурации IDE (Spyder) с переменным инспектором, файловым проводником, инспектором объектов (отображает живую справку по введенным вами функциям) и т.д. Это теперь полная замена Matlab для меня.

Ответ 10

Недавно я переключился с MATLAB на Python (мне около 2 месяцев на переход), и я довольно хорошо использую Sublime Text 2, используя плагины SublimeRope и SublimeLinter, чтобы предоставить некоторые IDE-подобные возможности, а также pudb, чтобы предоставить некоторые графические возможности интерактивной отладки.

Я еще не изучил профилировщики или редакторы переменных. (Я вообще никогда не использовал редактор переменных MATLAB).

Ответ 11

Можно переключиться с MATLAB на Python, потому что Python намного лучше справляется со сложностью, т.е. легче писать, отлаживать и поддерживать сложный код. Одной из хороших причин этого является то, что Python - это язык общего назначения, а не язык манипуляции матрицей. Из-за этого такие объекты, как нечисловые массивы, строки и ассоциативные массивы, являются первоклассными конструкциями в Python.

Мы регулярно слышим о людях и целых исследовательских группах, которые переходят от Matlab к Python. Научная экосистема Python созревает быстро, и Python - привлекательная альтернатива, потому что ее свободный, с открытым исходным кодом и становится все более мощным. Давайте подробно изучим их.


Экосистемы Matlab и Python

Python, по определению, является языком программирования. Наиболее распространенная реализация заключается в том, что в C также известен как CPython и в основном упоминается как Python. Помимо языка программирования и интерпретатора, Python также состоит из обширной стандартной библиотеки. Эта библиотека ориентирована на программирование в целом и содержит модули для конкретных событий ОС, потоков, сетей, баз данных и т.д.

Matlab - это коммерческая вычислительная среда и язык программирования. Концепция Matlab относится ко всему пакету, включая IDE. Стандартная библиотека не содержит столько общих функций программирования, но включает матричную алгебру и обширную библиотеку для обработки данных и построения графика. Для дополнительной функциональности Mathworks предоставляет инструментальные средства (но эти дополнительные возможности).

Для выполнения научных вычислений на Python вам нужны дополнительные пакеты (например, Numpy, Scipy, Matplotlib). Кроме того, вам понадобится IDE. Многие питончики происходят из среды Linux и используют оболочку Python и редактор (например, vi или Emacs), но люди из Matlab предпочитают многофункциональную среду IDE. Теперь на сегодняшний день для Python имеется множество полезных и мощных IDE, таких как PyCharm, Spyder, Jupyter Notebook и многое другое.

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


Преимущества Matlab

Возьмем некоторые из преимуществ, которые мы можем получить от Matlab:

  • Он имеет много функций. Simulink - произведение, для которого пока нет хорошей альтернативы.
  • Это может быть проще для новичков, потому что пакет включает все вам нужно, в то время как в Python вам нужно установить дополнительные пакеты и IDE.
  • У этого есть большое научное сообщество; он используется во многих университетах (хотя у немногих компаний есть деньги, чтобы купить лицензию).

Проблема с Matlab

Здесь мы не собираемся заставлять Matlab выглядеть плохо. Я сам любил Матлаба. Однако, я думаю, что Matlab имеет несколько фундаментальных недостатков. Большинство из них вытекает из его коммерческого характера:

  • Алгоритмы являются собственностью, что означает, что вы не видите код большинства алгоритмов, которые вы используете, и имейте в виду, что они были выполнены правильно.

  • Matlab довольно дорог, а это значит, что код, написанный в Матлаб может использовать только люди с достаточными средствами для покупки лицензия.

  • Естественно, Mathworks ставит ограничения на переносимость кода, возможность запуска вашего кода на компьютере пользователя elses. Вы можете управлять своим скомпилированное приложение, используя Matlab Component Runtime (MCR), но ваше портативное приложение должно точно соответствовать версии установленного MCR, что может быть неприятным, учитывая, что Matlab выпускает новую версии каждые 6 месяцев.

  • Собственный характер также затрудняет для 3-х сторон функциональность Matlab.

Более того, есть некоторые другие проблемы, которые вытекают из происхождения Matlabs как пакет манипуляции матрицей:

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

Преимущества Python

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

  • Расширенные библиотеки поддержки

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

  • Функция интеграции

    Python интегрирует интеграцию Enterprise Application Integration, что упрощает создавать веб-службы, вызывая компоненты COM или COBRA. Он обладает мощным как он называет непосредственно через C, С++ или Java через Jython. Python также обрабатывает XML и другие языки разметки, поскольку он может работать на всех современные операционные системы с помощью одного и того же байтового кода.

  • Улучшенная производительность программистов

    Язык имеет обширные библиотеки поддержки и чистые объектно-ориентированные проекты что увеличивает производительность программистов в два-десять раз при использовании такие языки, как Java, VB, Perl, C, С++ и С#.

  • Производительность

    Благодаря своим сильным технологическим функциям интеграции, модульной структуре тестирования и расширенные возможности управления способствуют увеличению скорости для большинства приложений и производительности приложений. Это отличный вариант для создание масштабируемых многопротокольных сетевых приложений.


Недостатки Python

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

  • Сложность в использовании других языков

    Любители Python настолько привыкли к своим особенностям и своим обширным библиотек, поэтому они сталкиваются с проблемой обучения или работы над другим программированием языки. Эксперты Python могут видеть объявление cast values или переменной types, синтаксические требования добавления фигурных скобок или полуколонок в качестве обременительная задача.

  • Слабые в мобильных вычислениях

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

  • Медленная скорость

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

  • Ошибки времени выполнения

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

  • Недоразвитые слои доступа к базам данных

    По сравнению с популярными технологиями, такими как JDBC и ODBC, Pythons уровень доступа к базам данных оказывается немного недоразвитым и примитивным. Однако он не может применяться на предприятиях, нуждающихся в плавном взаимодействии сложных устаревших данных


Преимущества Python над Matlab

  • Код Python более компактный и более легкий для чтения, чем код Matlab

    • В отличие от Matlab, который использует конечную инструкцию для указания конца блока, Python определяет размер блока на основе отступов.

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

    • Улучшенная читаемость Pythons приводит к меньшему количеству ошибок и более быстрой отладке.

  • Хотя большинство языков программирования, включая Python, используют индексирование с нулевым индексом, Matlab использует однонаправленную индексацию, что делает ее более запутанной для пользователей перевод.

  • Объектно-ориентированное программирование (OOP) в Python - это простая гибкость, в то время как Схема Matlab OOP сложна и запутанна.

  • Python свободен и открыт

    • Хотя Python является открытым исходным кодом, большая часть Matlab закрыта

    • Разработчики Python поощряют пользователей вводить предложения для программное обеспечение, в то время как разработчики Matlab не предлагают такого взаимодействия

    • Python предлагает более широкий набор вариантов в графическом пакете и инструментах

С Numpy, Scipy и Matplotlib у вас в значительной степени есть весь набор функций, которые MATLAB предоставляет из коробки, и довольно много вещей, которые вам придется покупать для отдельных панелей инструментов.

Однако сообщество MatLab имеет свои собственные аргументы, чтобы выбрать Matlab или Python (да серьезно). Хорошее чтение.