Что может сделать MATLAB, чего не может сделать R?

144

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

  • 13
    кстати, есть еще одна альтернатива с открытым исходным кодом: Octave в основном совместим с Matlab
  • 0
    Я хотел бы знать, что R может сделать то, что Python не может сделать? (не флейм - очень хотелось бы знать)
Показать ещё 13 комментариев
Теги:
scientific-computing

11 ответов

135
Лучший ответ

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

Да.

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

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

Вот некоторые из вещей, которые я наблюдал в прошлом, ни один из которых не должен быть разблокировками.

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

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

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

  • 5
    Здесь есть хорошая ссылка на matlab / R, которая показывает, как выполнять эквивалентные задачи в каждой из них: math.umaine.edu/~hiebeler/comp/matlabR.html
  • 4
    «[MATLAB] также, возможно, имеет больше продуктов и поддержки». Я не согласен с этим. CRAN и Bioconductor (для R) гораздо более понятны, чем MATLAB + наборы инструментов + обмен файлами. Кроме того, по моему опыту, список рассылки R-Help обычно так же эффективен, как и платная поддержка. Я согласен, что компилятор MATLAB - отличная функция, которая не воспроизводится в R.
Показать ещё 6 комментариев
34

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

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

  • обработка изображений/получение изображений,
  • дизайн фильтра,
  • нечеткая логика/нечеткое управление,
  • уравнения в частных производных,
  • и др.
  • 0
    R имеет большой репозиторий пакетов под названием CRAN, который предоставляет множество дополнительных функций (хотя я согласен с вашей общей точкой зрения). Пример: решатель PDE: cran.r-project.org/web/packages/deSolve/index.html
  • 7
    В MATLAB также есть нечто аналогичное CRAN: большой файловый обмен ( mathworks.com/matlabcentral/fileexchange ) с более чем 10 000 пользовательских функций и наборов инструментов, которые доступны бесплатно.
Показать ещё 1 комментарий
27

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

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

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

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

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

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

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

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

  • 11
    Я должен также упомянуть, что R получает большой плюс в моей книге за систему Sweave для обеспечения воспроизводимых исследований. На мой взгляд, крайне важно, чтобы кто-либо мог повторно выполнить и проанализировать вычисления, лежащие в основе статьи или отчета, с помощью свободно доступного инструмента.
23

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

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

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

  • 2
    Все R представленные пакеты проверены на документацию и примеры.
20

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

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

11

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

11

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

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

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

  • 11
    На самом деле известно, что R очень хорош для создания графиков. Они тоже выглядят очень хорошо. На самом деле, самой первой причиной, по которой я заглянул в R, было то, что я завидовал некоторым из хороших графиков, которые мои коллеги сделали с использованием R. Поэтому я переключился с gnuplot и никогда не оглядывался назад.
9

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

  • 3
    Это полностью правильный ответ. Важно понимать, что есть много отраслей, которые просто не примут решение с открытым исходным кодом. Есть сомнительные требования соответствия, которые принимают R пластины.
  • 1
    @BrandonBertelsen: конкретно, что?
Показать ещё 3 комментария
5

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

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

  • 0
    Это правда, но вопрос в том, что может сделать MATLAB, чего не может сделать R? не «Что может сделать R, чего не может сделать MATLAB?».
4

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

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

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

  • 4
    Давай один, R это язык программирования.
  • 6
    «Matlab - это программисты для программистов». MATLAB изначально был написан специально для линейной алгебры; это не был язык программирования общего назначения. Многие из особенностей языка общего назначения были добавлены позже. (Это была только работоспособная объектно-ориентированная система в течение года.)
Показать ещё 10 комментариев
2

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

  • 0
    Как опытный пользователь интерактивных инструментов для построения графиков обеих систем, я согласен с ограничениями (то есть с тем, как я толкаю оба), но вы, вероятно, упускаете некоторые очень полезные инструменты интерактивного построения графиков в R. Посмотрите следующие пакеты : iplots, Acinonyx, Rstudio манипуляции и многое другое. Для удовольствия, проверьте этот пример .
  • 0
    «R-графика имеет чувство 1960-х годов» - это могло быть правдой много лет назад. В наши дни, благодаря быстро растущей популярности ggplot2, R-диаграммы имеют современный и красивый вид. Смотрите, например: r-bloggers.com/?s=ggplot

Ещё вопросы

Сообщество Overcoder
Наверх
Меню