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

137

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

Фрэнк
источник
13
кстати, есть еще одна альтернатива с открытым исходным кодом: Octave в основном совместим с Matlab
sellibitze
14
Технически все, что можно сделать на одном языке, можно сделать на любом языке (с точки зрения «что он может вычислить»). Это просто вопрос простоты использования и легкости обучения
BlueRaja - Дэнни Пфлугофт
20
+1: Matlab может съесть мой бюджет на программное обеспечение. R пока не смог этого сделать.
Iterator
3
Чтобы исправить некоторые другие утверждения: неправильно, что можно повторно использовать весь код Matlab в Octave или FreeMat. Есть некоторые классы функций, которые вообще плохо реализованы в других версиях. У меня есть большие блоки кода, которые, как мне кажется, лучше реализовать заново в средах, которые имеют примерно одинаковую функциональность только для этих классов функций. Из функциональных возможностей Matlab, которых нет в Octave, я нашел суррогаты в R, Python и, в некоторой степени, в Java и C. Повторная реализация библиотек сложнее, чем базовый код. Обратите внимание на библиотеки ...
Iterator
5
Закрытие этого вопроса не оправдано. Этот вопрос не о опросе, а о том, что именно вы можете делать в Matlab, но не в R. Такие вещи можно легко перечислить и поддержать ссылками.
Фрэнк

Ответы:

128

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

Да.

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

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

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

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

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

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

Шейн
источник
5
Здесь есть хорошая ссылка на Matlab / R, которая показывает, как выполнять эквивалентные задачи в каждом из них: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire
4
«[MATLAB], возможно, также имеет больше продуктов и поддержки». Я не согласен с этим. CRAN и Bioconductor (для R) намного более всеобъемлющи, чем MATLAB + наборы инструментов + Обмен файлами. Кроме того, по моему опыту, список рассылки R-Help обычно так же эффективен, как и платная поддержка. Я согласен с тем, что компилятор MATLAB - отличная функция, которая не воспроизводится в R.
Ричи Коттон,
2
Во многих случаях R-функции лучше документированы, чем в Matlab. Я считаю, что качество документации Matlab сильно различается от функции к функции и от (коммерческих) наборов инструментов. Я согласен с тем, что Matlab IDE несколько более удобна для начинающих, но она не лучше, чем, например, ESS для R, если вы используете ее ежедневно.
Матти Пастелл,
10
RStudio - отличная новая R IDE
Джейсон Аксельсон
1
Жаль, что этот вопрос был закрыт. Это одно из лучших технических обсуждений, которые я когда-либо видел на StackOverflow.
kd4ttc
32

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Джон
источник
2
Все представленные R пакеты проверены на предмет документации и примеров.
Фернандо
21

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

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

Робинс
источник
11

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

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

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

Уилл Робертсон
источник
11
Известно, что R очень хорош для создания графиков. Они тоже очень хорошо выглядят. На самом деле, самой первой причиной, по которой я обратился к R, было то, что я завидовал некоторым красивым графикам, которые мои коллеги создали с помощью R. Так что я перешел с gnuplot и никогда не оглядывался назад.
Фрэнк
11

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

непослушный
источник
9

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

Нзбуу
источник
3
Это вполне верный ответ. Важно понимать, что есть много отраслей, которые просто не примут решения с открытым исходным кодом. Существуют сомнительные требования соответствия, которые принимают R.
Брэндон Бертельсен,
1
@BrandonBertelsen: что конкретно?
smci
3
@smci, это утверждение уже не так верно, как в 2010 году. Использование R.
Брэндон Бертельсен,
Хорошо, но можете ли вы сказать нам по состоянию на 2010 год, какие требования соответствия сняли R с пластины (и какие все еще остаются проблемой)?
smci
1
Наши клиенты обычно также используют MATLAB, и нам часто приходится обмениваться с ними кодом и моделями. Обычно вы обнаруживаете, что единственные отрасли, которые используют R, в основном связаны с наборами данных и статистикой.
Nzbuu
5

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

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

Alex
источник
Это правда, но вопрос в том, «Что может делать MATLAB, чего не может сделать R?» not «Что может R сделать, чего не может сделать MATLAB?».
Марек
4

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

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

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

Lhahne
источник
4
Come one, Rэто язык программирования.
Фрэнк
6
«Matlab создан программистами для программистов». MATLAB изначально был написан специально для линейной алгебры; это не был язык программирования общего назначения. Впоследствии были добавлены многие функции языка общего назначения. (У него была работоспособная объектно-ориентированная система всего год.)
Ричи Коттон,
9
«Matlab от программистов для программистов»: Вы серьезно? Единственное, что меня действительно беспокоит в MATLAB, это то, что тот, кто изобрел этот язык, не был программистом, учитывая крайнюю неуклюжесть языка в некоторых ситуациях.
Ханнес Оврен
13
R создали статистики, Matlab создали инженеры. Оба являются полностью совместимыми языками программирования.
Sharpie
3
@smci В последний раз я заменял производственный код Matlab на код R в Национальной метеорологической службе в 2008 году, и с тех пор система работает без сбоев. Обработка в ядре многогигабайтных наборов данных с использованием рекурсивных алгоритмов ни в коем случае не является задачей, характерной для научных вычислений в целом, и поэтому является плохим выбором эталона для общих утверждений о пригодности языка программирования.
Sharpie
2

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

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