Что может сделать MATLAB, чего не может сделать R? [закрытый]
Я часто слышу, как люди жалуются, насколько дороги лицензии MATLAB. Тогда я удивляюсь, почему они просто не используют Октаву или R. Но верно ли последнее? Вы можете использовать R для замены MATLAB?
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-х годов. Это прекрасно для публикации, но не лучшее решение для интерактивного исследования данных.