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

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


person Frank    schedule 15.11.2009    source источник
comment
кстати, есть еще одна альтернатива с открытым исходным кодом: Octave в основном совместим с Matlab   -  person sellibitze    schedule 16.11.2009
comment
Я хотел бы знать, что может сделать R, чего не может сделать Python? (не флейм - очень хотелось бы знать)   -  person robince    schedule 16.11.2009
comment
@thrope: так уж получилось, что для этого уже есть вопрос: stackoverflow.com/questions/1177019/   -  person Shane    schedule 16.11.2009
comment
Технически все, что можно сделать на одном языке, можно сделать на любом языке (с точки зрения вычислений). Это просто вопрос простоты использования и простоты обучения   -  person BlueRaja - Danny Pflughoeft    schedule 27.01.2010
comment
Есть также FreeMat, и он еще более совместим с Matlab. Большим преимуществом использования Octave или FreeMat является то, что вы можете повторно использовать существующие сценарии.   -  person Adrian A.    schedule 20.07.2010
comment
@Adria, @sellibitze Есть еще Scilab.   -  person Plumenator    schedule 23.05.2011
comment
@BlueRaja - Danny Pflughoeft: Если бы вы добавили фразу Turing-Complete, я бы поставил вам галочку... ;-)   -  person Phil Whittington    schedule 10.07.2011
comment
+1: Matlab может съесть мой программный бюджет. R пока не удалось этого сделать.   -  person Iterator    schedule 26.09.2011
comment
Чтобы исправить некоторые другие утверждения: неверно, что можно повторно использовать весь код Matlab в Octave или FreeMat. Есть некоторые классы функций, которые плохо реализованы в других версиях. У меня есть большие блоки кода, которые я решил реализовать заново в средах, которые имеют примерно схожую функциональность только для этих классов функций. Из функций, которые есть у Matlab и которых нет у Octave, я нашел суррогаты в R, Python и, в некоторой степени, в Java и C. Повторно реализовать библиотеки сложнее, чем базовый код. Обратите внимание на библиотеки...   -  person Iterator    schedule 20.10.2011
comment
Каковы ваши требования к производительности (диск, память, сеть, файлы)? Вы касаетесь базы данных? Вы работаете полностью в автономном режиме или есть какие-либо требования к времени отклика или скорости? Вы заботитесь о масштабируемости? Восстановление после сбоя? и т. д. и т. д.   -  person smci    schedule 28.06.2012
comment
Закрытие этого вопроса не оправдано. Этот вопрос не про опрос, а про то, что именно можно делать в Matlab, но не в R. Такие вещи можно легко перечислить и подкрепить ссылками.   -  person Frank    schedule 28.06.2012
comment
Жаль, что этот вопрос был закрыт. Это одно из лучших технических обсуждений, которые я когда-либо видел на StackOverflow.   -  person kd4ttc    schedule 17.03.2013
comment
Этот тип вопроса должен был быть закрыт до получения ответов. Но закрывать его впоследствии неуместно, поэтому на этом этапе его необходимо открыть снова из уважения к усилиям стольких участников.   -  person Chris Stratton    schedule 20.05.2013
comment
Почему так много удалений? Я думаю, что исторический замок в порядке   -  person tckmn    schedule 27.06.2013
comment
R — более разумный выбор, бюджетный и достаточно быстрый. Octave может быть почти таким же, как MATLAB (некоторые незначительные различия в синтаксисе), но использует AGES для вычислений по сравнению с MATLAB и не подходит для больших наборов данных. По моему опыту, Octave занимает в 20 раз больше времени, чем MATLAB.   -  person sjas    schedule 11.08.2013


Ответы (11)


Можете ли вы использовать 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". Это охватывает некоторые важные синтаксические различия (такие как интерпретация точки или значение квадратных скобок []). Саму книгу стоит прочитать всем, кто интересуется функциональным программированием (на любом языке).

person Community    schedule 15.11.2009
comment
Здесь есть хороший справочник по Matlab/R, который показывает, как выполнять эквивалентные задачи в каждом из них: math.umaine.edu/~hiebeler/comp/matlabR.html - person Suppressingfire; 15.11.2009
comment
[MATLAB] также, возможно, имеет больше продуктов и поддержки. Я не согласен с этим. CRAN и Bioconductor (для R) гораздо более полны, чем MATLAB + наборы инструментов + обмен файлами. Кроме того, по моему опыту, список рассылки R-Help обычно так же эффективен, как и платная поддержка. Я согласен с тем, что компилятор MATLAB — отличная функция, которая не воспроизведена в R. - person Richie Cotton; 16.11.2009
comment
Спасибо, Ричи. Я попытался прояснить этот момент немного дальше. И хотя мне нравятся списки рассылки R, я не думаю, что это эквивалентно звонку в частную компанию и просьбе исправить критическую ошибку в второстепенном пакете (где вы платите за поддержку). Некоторые менее используемые пакеты R не так хорошо поддерживаются (хотя в некоторых случаях они даже не существуют в Matlab). - person Shane; 16.11.2009
comment
Часто функции R документированы лучше, чем в Matlab. Я обнаружил, что качество документации Matlab сильно различается от функции к функции и от (коммерческого) набора инструментов. Я согласен с тем, что Matlab IDE несколько более удобен для начинающих, но он не лучше, чем, например. ESS для R, если вы используете его ежедневно. - person Matti Pastell; 06.04.2010
comment
RStudio — хорошая новая R IDE - person Jason Axelson; 16.03.2011
comment
Может ли R выполнять цифровую обработку сигналов? - person Royi; 09.05.2011
comment
Похоже, что Revolution R стоит 1000 долларов за лицензию. - person Dmitri Nesteruk; 30.11.2012
comment
Жаль, что этот вопрос был закрыт. Это одно из лучших технических обсуждений, которые я когда-либо видел на StackOverflow. - person kd4ttc; 17.03.2013

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

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

  • обработка изображений/получение изображений,
  • конструкция фильтра,
  • нечеткая логика/нечеткое управление,
  • уравнения в частных производных,
  • и Т. Д.
person rcs    schedule 15.11.2009
comment
R имеет большой репозиторий пакетов под названием CRAN, который предоставляет множество дополнительных функций (хотя я согласен с вашей общей точкой зрения). Пример: решатель PDE: cran.r-project.org/web/ пакеты/deSolve/index.html - person Suppressingfire; 15.11.2009
comment
В MATLAB также есть что-то похожее на CRAN: обширный обмен файлами (mathworks.com/matlabcentral/fileexchange) с более чем 10 000 пользовательских функций и наборов инструментов, которые находятся в свободном доступе. - person gnovice; 27.01.2010
comment
Существует также обширная бесплатная база кода для MATLAB за пределами File Exchange MATLAB Central. - person Predictor; 29.01.2011

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

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

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

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

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

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

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

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

person Sharpie    schedule 16.11.2009
comment
Я также должен упомянуть, что R получает большой плюс в моей книге за систему Sweave за возможность воспроизводимых исследований. По моему мнению, чрезвычайно важно разрешить любому повторно запустить и проанализировать вычисления, лежащие в основе статьи или отчета, с помощью бесплатно доступного инструмента. - person Sharpie; 16.11.2009

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

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

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

person John    schedule 19.11.2010
comment
Все представленные пакеты R проверяются на наличие документации и примеров. - person Fernando; 10.11.2012

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

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

person robince    schedule 15.11.2009

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

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

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

person Will Robertson    schedule 16.11.2009
comment
На самом деле известно, что R очень хорош для создания графиков. Они тоже очень хорошо выглядят. На самом деле, самой первой причиной, по которой я обратился к R, было то, что я завидовал некоторым хорошим графикам, которые мои коллеги сделали с помощью R. Поэтому я перешел с gnuplot и никогда не оглядывался назад. - person Frank; 25.08.2010

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

person gappy    schedule 24.07.2010

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

person Nzbuu    schedule 16.11.2009
comment
Это полностью верный ответ. Важно понимать, что есть много отраслей, которые просто не примут решение с открытым исходным кодом. Существуют сомнительные требования соответствия, которые требуют R пластины. - person Brandon Bertelsen; 27.01.2010
comment
@BrandonBertelsen: что конкретно? - person smci; 28.06.2012
comment
@smci это утверждение уже не так верно, как в 2010 году. Использование R получило широкое распространение. - person Brandon Bertelsen; 29.06.2012
comment
Хорошо, но можете ли вы рассказать нам по состоянию на 2010 год, какие требования соответствия сняли R с плиты (и какие до сих пор остаются проблемой)? - person smci; 01.07.2012
comment
Наши клиенты обычно также используют MATLAB, и нам часто приходится обмениваться с ними кодом и моделями. Как правило, вы обнаружите, что единственные отрасли, которые используют R, в основном связаны с наборами данных и статистикой. - person Nzbuu; 09.09.2012

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

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

person Alex    schedule 10.05.2011
comment
Это правда, но вопрос в том, что может сделать MATLAB, чего не может сделать R? не Что может сделать R, чего не может сделать MATLAB? - person Marek; 11.05.2011

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

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

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

person lhahne    schedule 15.11.2009
comment
Да ладно, R — это язык программирования. - person Frank; 15.11.2009
comment
Matlab создан программистами для программистов. MATLAB изначально был написан специально для линейной алгебры; это не был язык программирования общего назначения. Впоследствии многие функции языка общего назначения были добавлены. (У него была работоспособная объектно-ориентированная система всего год.) - person Richie Cotton; 16.11.2009
comment
Matlab создан программистами для программистов: вы серьезно? Единственное, что на самом деле меня смущает в MATLAB, это то, что тот, кто изобрел язык, не был программистом, учитывая крайнюю неуклюжесть языка в некоторых ситуациях. - person Hannes Ovrén; 16.11.2009
comment
R был создан статистиками, Matlab — инженерами. Оба являются полноценными языками программирования. - person Sharpie; 16.11.2009
comment
@Sharpie: о чем, черт возьми, ты говоришь? ​​R не передает кадры данных по ссылке! В результате, если вы (в основном) не избегаете функций, вы достигаете предела масштабируемости, имея несколько копий временных (сборка мусора позже). Итак, если ваш код глубоко рекурсивен, и вы работаете с 4-гигабитным ящиком, не могли бы вы предположить, какой самый большой кадр данных он может обработать перед смертью? Считаете ли вы сбой в производственном коде приемлемым? Является ли язык, в котором рекурсия подколенных сухожилий «полностью дееспособен»? - person smci; 28.06.2012
comment
@smci Под полной дееспособностью я подразумевал ответчика, что R каким-то образом не является языком программирования. R является полным по Тьюрингу и поэтому полностью пригоден для использования в качестве языка программирования. А в остальном --- я думаю, что мы с вами живем в совершенно разных областях применения. R намного лучше, чем Excel, что делает его более чем достаточным для ежедневной обработки инженерных данных. - person Sharpie; 26.07.2012
comment
@sharpie: вопрос был не об инструментах для обработки данных или электронных таблицах, а о научных языках программирования. Excel — это даже не научный язык программирования. Если мы оцениваем R как язык научного программирования (что и было задано в этом вопросе), то его подход к передаче аргументов вызовов функций оставляет желать лучшего (следовательно, вы не можете выполнять рекурсию, что исключает огромные семейства алгоритмов), управление памятью, ручная сборка мусора. Утверждение, что полнота по Тьюрингу подразумевает доброту или даже адекватность, не является победителем. Рассмотрим также беспорядок в пакетах S3 и S4. - person smci; 26.07.2012
comment
@sharpie: Я спрашиваю вас еще раз: вы считаете, что сбой в производственном коде приемлем? Вы действительно предлагаете нам извинить это, если язык является полным по Тьюрингу? - person smci; 26.07.2012
comment
@smci Последний раз, когда я менял производственный код Matlab на код R, был в Национальной метеорологической службе в 2008 году, и с тех пор система работает без сбоев. Обработка многогигабайтных наборов данных в ядре с использованием рекурсивных алгоритмов ни в коем случае не является задачей, характерной для научных вычислений в целом, и поэтому является плохим выбором эталона для общих утверждений о пригодности языка программирования. - person Sharpie; 27.07.2012
comment
@sharpie: ерунда. Никто не говорил, что это «эталон». Я указал, что надлежащая поддержка рекурсии является одним из отличительных различий между (скажем) языком манипулирования данными, который заимствует биты из языков программирования (как R), и полным языком программирования (как Python). Если вы говорите 'языки научного программирования не нуждаются в рекурсии (даже внутри)', это верно в некоторых проблемных областях и неверно в других, так что в целом это не совсем так. Оставим это на этом. - person smci; 22.08.2012
comment
ИМО, любой человек, полагающийся на большое количество рекурсий, больше теоретик-компьютерщик, чем программист. - person Brian B; 12.03.2013

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

person dank    schedule 23.01.2012
comment
Как активный пользователь интерактивных инструментов построения графиков обеих систем, я соглашусь с ограничениями (т. е. в том, что я активно работаю с обоими), но вы, вероятно, упускаете из виду некоторые очень полезные интерактивные инструменты построения графиков в R. Ознакомьтесь со следующими пакетами. : iplots, Acinonyx, манипулирование Rstudio и многое другое. Для развлечения посмотрите этот пример. - person Iterator; 25.01.2012
comment
Графика R напоминает 1960-е — возможно, это было правдой много лет назад. В наши дни, когда ggplot2 быстро набирает популярность, диаграммы R выглядят современно и красиво. См., например: r-bloggers.com/?s=ggplot. - person arielf - Reinstate Monica; 29.03.2013