Что может сделать MATLAB, чего не может сделать R? [закрытый]


Я часто слышу, как люди жалуются, насколько дороги лицензии MATLAB. Тогда я удивляюсь, почему они просто не используют Октаву или R. Но верно ли последнее? Вы можете использовать R для замены MATLAB?

11 137

11 ответов:

Можно ли использовать R для замены MATLAB?

Да.

Я использовал MATLAB в течение многих лет, но переключился в основном на R в последние 3 года. На данный момент у них гораздо больше общего, чем нет. Это частично зависит от вашей области и случая использования. И, как сказал ранее Спенсер Грейвс, это также зависит от того, в какой "церкви вы часто бываете". Лучше всего, если вы посмотрите на MATLAB toolkit против CRAN для конкретной задачи, прежде чем принимать решение.

A подобный вопрос задавали на R-Help несколько лет назади еще раз совсем недавно. Дэвид Хибелер (David Hiebeler) (в Университете штата Мэн) ведет обширную сравнение R / MATLAB, и это лучшая ссылка на эту тему. Вы также можете просмотретьэто сравнение основных функций .

Вот некоторые из вещей, которые я наблюдал в прошлом, ни одна из которых не должна быть нарушителем сделки.
  • Как правило, MATLAB имеет лучший среда программирования (например, лучшая документация, лучшие отладчики, лучший обозреватель объектов) и "проще" в использовании (вы можете использовать MATLAB, не занимаясь никаким программированием, если хотите). Simulink позволяет визуально программировать, соединяя блоки в графах. REvolution R решает некоторые из этих различий , предоставляя лучшую IDE с улучшенной отладкой, но это все еще на шаг позади.
  • MATLAB немного быстрее с нормальной конфигурацией (смотрите это бенчмарк для примера ), хотя есть вещи, которые можно сделать, чтобы улучшить производительность R, если это станет проблемой.
  • Поскольку он коммерческий, он также, возможно, имеет больше "продуктов" (в смысле интегрированных дополнений) и поддержки (но вы платите за это). Смотрите список продуктов . Например, он имеет такие вещи, каккомпилятор MATLAB , который создает исполняемые программы MATLAB, которые могут быть развернуты.
  • Что касается пакетов / наборов инструментов, MATLAB имеет гораздо больше поддержки для физических наук, в то время как R сильнее для статистики, что не означает, что другие не могут выполнять эти задачи. И они оба могут быть легко расширены.

Итак, если простота использования не является главной заботой (и нет никаких других бизнес-причин избегать использования инструмента с открытым исходным кодом), то я думаю, что есть реальный случай для использования R. Он имеет очень сильное сообщество вокруг него (списки рассылки R удивительны), быстро развивается (см. CRAN), и это очень важно. бесплатно (что не так уж и мало!).

Edit: я бы просто добавил еще один пункт к этому: книга "функциональный анализ данных с помощью R и MATLAB" включает главу о "существенных сравнениях языков Matlab и R". Это касается некоторых важных синтаксических различий (например, интерпретации точки или значения квадратных скобок []). Сама книга хорошо подходит для чтения всем, кто интересуется функциональным программированием (в любом случае язык).

R-это среда для статистического анализа данных и графики. Истоки MATLAB лежат в численных вычислениях. Реализации базового языка имеют много общих черт, если вы используете их для манипулирования данными (например, матричные/векторные операции).

R имеет статистическую функциональность, которую трудно найти в другом месте (>2000 пакетов на CRAN), и многие статистики используют ее. С другой стороны, MATLAB имеет множество (дорогих) наборов инструментов для инженерных приложений как

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

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

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

  • Наборы инструментов, такие как набор инструментов обработки изображений. Я не нашел пакета R, который обеспечивает эквивалентная реализация инструментов, таких как алгоритм водораздела.

На мой взгляд, MATLAB предоставляет гораздо лучшие возможности интерактивной графики. Тем не менее, я думаю, что R производит лучшую статическую графику качества печати, в зависимости от приложения. Matlab's symbolic math toolbox также лучше интегрирован и более способен, чем R-эквиваленты, такие как Ryacas или rSymPy. Существование компилятора MATLAB также позволяет развертывать системы, основанные на коде MATLAB, независимо от Среда MATLAB - хотя ее доступность будет зависеть от того, сколько денег вам придется разбрасывать.

Еще я должен отметить, что отладчик MATLAB-один из лучших, с которыми я работал.

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

Открытость R также распространяется на связывание в скомпилированном коде. Некоторое время назад у меня была модель, написанная на Fortran, и я пытался решить, использовать ли R или MATLAB в качестве интерфейса, чтобы помочь подготовить входные данные и обработать результаты. Я провел час, читая об интерфейсе MEX для скомпилированного кода. Когда я обнаружил, что мне придется писать и поддерживать отдельную процедуру Fortran, которая выполняла некоторые сложные манипуляции указателями, чтобы управлять интерфейсом, я стеллаж MATLAB.

Интерфейс R состоит из вызова .Fortran ([имя подпрограммы], [список аргументов]) и просто быстрее и чище.

Одним из больших преимуществ MATLAB перед R является качество документации MATLAB. R, будучи открытым исходным кодом, страдает в этом отношении, что характерно для многих проектов с открытым исходным кодом.

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

Альтернативой R является Октава (http://www.gnu.org/software/octave/), который очень похож на MATLAB, он может запускать MATLAB файлы сценариев.

По моему опыту переход от MATLAB к Python является более легким переходом-Python с numpy/scipy ближе к MATLAB с точки зрения стиля и функций, чем R. существуют также прямые клоны MATLAB с открытым исходным кодом Octave и Scilab.

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

Короткий ответ: Нет, конечно, нет. В то время как любой набор математических программных пакетов будет иметь свои перекрытия, они всегда будут иметь предубеждения в отношении определенных проблемных областей. Эти предубеждения сильно влияют на то, хотите ли вы использовать один из этих пакетов.

Пример того, что MATLAB может сделать, что R не может, - это интерфейс к аппаратному обеспечению реального времени для обработки/сбора и управления сигналами. Модель Simulink в MATLAB может быть сконфигурирована как для запуска в simulation на вашей машине перед компиляцией кода для выполнения на реальной системе, принимая измеренные данные в качестве входных и вычисляя соответствующие выходы (то, что было до моделирования системы управления, теперь полностью функционирует). С соответствующей аппаратной платой в вашем компьютере вы можете запускать системы управления в реальном времени через ПК.

R, напротив, кажется твердо установленным в роли статистики, где я уверен, что он превосходит то, что может сделать MATLAB. Аналогично, Mathematica лучше MATLAB в символьном математика; Python лучше MATLAB в общем программировании; gnuplot лучше, чем все они, в создании графов (э-э, я предполагаю); и так далее.

Я согласен со многими ответами, приведенными выше. Поскольку ответ специфичен для набора возможностей MATLAB и R, я упомяну очень важный: MATLAB включает JVM и имеет безупречную и надежную совместимость с Java. Все необъятной Вселенной для Java-библиотек доступен для пользователя Матлаб. Среде MATLAB IDE можно практически быть использованы в качестве бедного человека затмения. По сравнению с этим, rJava очень незрелая, несмотря на очень ценные усилия ее создателя (Роман Франсуа).

Мы не можем, потому что это ожидается/требуется нашими клиентами.

С пакетом sqldf R способен не только к статистике, но и к серьезному интеллектуальному анализу данных - при условии, что на вашем компьютере достаточно оперативной памяти.

И с пакетом RServe R становится обычным сервером TCP / IP; таким образом, Вы можете вызвать R из java (или любого другого языка, если у вас есть api). Существует также пакет в R для вызова java out или R.

Как пользователь MATLAB и R, я думаю, что это очень разные приложения. Я сам имею опыт работы в области компьютерных наук и т. д. и я не могу отделаться от мысли, что R-это статистика для статистиков, тогда как MATLAB-это программисты для программистов.

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

Чтобы подвести итог, если вы хотите сделать статистику, используйте R. Если вы хотите программировать, использовать MATLAB или какой-то язык программирования.

Поддержка интерактивной графики в matlab намного лучше, чем в R. Я ненавижу matlab как язык, но завидую, когда вижу, как его пользователи могут исследовать данные с помощью операций мыши, в то время как я занят повторением команд с новыми значениями для xlim и т. д. Matlab также обрабатывает многопанельные графики намного лучше, чем любой из методов R для этой задачи. Как правило, Р графики 1960-х годов. Это прекрасно для публикации, но не лучшее решение для интерактивного исследования данных.