Я часто слышу, как люди жалуются на дороговизну лицензий MATLAB. Тогда мне интересно, почему они просто не используют Octave или R. Но прав ли последний? Можете ли вы использовать R для замены MATLAB?
Что может сделать MATLAB, чего не может сделать R?
Ответы (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". Это охватывает некоторые важные синтаксические различия (такие как интерпретация точки или значение квадратных скобок []). Саму книгу стоит прочитать всем, кто интересуется функциональным программированием (на любом языке).
R — это среда для статистического анализа данных и графики. Истоки MATLAB лежат в численных вычислениях. Базовые языковые реализации имеют много общего, если вы используете их для манипулирования данными (например, операции с матрицами/векторами).
R имеет статистические функции, которые трудно найти где-либо еще (> 2000 пакетов в CRAN), и множество статистиков используют его. С другой стороны, MATLAB имеет множество (дорогих) наборов инструментов для инженерных приложений, таких как
- обработка изображений/получение изображений,
- конструкция фильтра,
- нечеткая логика/нечеткое управление,
- уравнения в частных производных,
- и Т. Д.
Я использовал как R, так и MATLAB для решения задач и создания моделей, связанных с инженерией окружающей среды, и эти две системы во многом пересекаются. На мой взгляд, преимущества MATLAB заключаются в специализированных предметно-ориентированных приложениях. Некоторые примеры:
Такие функции, как линия обтекания, помогают в исследованиях гидродинамики.
Наборы инструментов, такие как набор инструментов для обработки изображений. Я не нашел пакета R, обеспечивающего эквивалентную реализацию таких инструментов, как алгоритм водораздела.
На мой взгляд, MATLAB предоставляет гораздо лучшие возможности интерактивной графики. Тем не менее, я думаю, что R производит более качественную статичную графику для печати, в зависимости от приложения. Набор инструментов символьной математики MATLAB также лучше интегрирован и более функционален, чем эквиваленты R, такие как Ryacas или rSymPy. Существование компилятора MATLAB также позволяет развертывать системы, основанные на коде MATLAB, независимо от среды MATLAB, хотя его доступность будет зависеть от того, сколько денег у вас есть.
Еще я должен отметить, что отладчик MATLAB — один из лучших, с которыми мне приходилось работать.
Основным преимуществом, которое я вижу в R, является открытость системы и простота ее расширения. Это привело к невероятному разнообразию пакетов на CRAN. Я знаю, что Mathworks также поддерживает репозиторий наборов инструментов, добавленных пользователями, и я не могу провести честное сравнение, поскольку я не использовал его так часто.
Открытость R также распространяется на связывание в скомпилированном коде. Некоторое время назад у меня была модель, написанная на Фортране, и я пытался выбрать между использованием R или MATLAB в качестве интерфейса для подготовки ввода и обработки результатов. Я потратил час на чтение об интерфейсе MEX для скомпилированного кода. Когда я обнаружил, что мне придется написать и поддерживать отдельную подпрограмму на Фортране, которая выполняет некоторые сложные операции с указателями для управления интерфейсом, я отложил MATLAB на полку.
Интерфейс R состоит из вызова .Fortran([имя подпрограммы], [список аргументов]) и просто быстрее и чище.
Одним из больших преимуществ MATLAB по сравнению с R является качество документации MATLAB. R, будучи открытым исходным кодом, страдает в этом отношении, что характерно для многих проектов с открытым исходным кодом.
Однако R — очень полезная среда и язык. Он широко используется в сообществе биоинформатики и имеет множество пакетов, полезных в этой области.
Альтернативой R является Octave (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 можно настроить как для запуска в режиме моделирования на вашем компьютере, так и перед компиляцией кода в выполнить на реальной системе, принимая измеренные данные в качестве входных данных и вычисляя соответствующие выходные данные (то, что было до моделирования системы управления, теперь является полностью функционирующей). С соответствующей аппаратной платой на вашем компьютере вы можете запускать системы управления в реальном времени через ПК.
R, напротив, кажется прочно закрепленным за статистикой, где я уверен, что он превосходит возможности MATLAB. Точно так же Mathematica лучше, чем MATLAB, в символьной математике; Python лучше, чем MATLAB, в общем программировании; gnuplot лучше всех остальных умеет создавать графики (ну, я полагаю); и так далее.
Я согласен со многими ответами, данными выше. Поскольку ответ специфичен для различных возможностей MATLAB и R, я упомяну очень важный: MATLAB включает в себя JVM и имеет безупречную и надежную совместимость с Java. Вся обширная вселенная библиотек Java доступна пользователю MATLAB. MATLAB IDE можно использовать почти как Eclipse для бедняков. Для сравнения, rJava очень незрелый, несмотря на очень ценные усилия его создателя (Романа Франсуа).
Мы не можем, потому что этого ожидают/требуют наши клиенты.
С пакетом sqldf R может выполнять не только статистику, но и серьезный анализ данных — при условии, что на вашем компьютере достаточно оперативной памяти.
А с пакетом RServe R становится обычным сервером TCP/IP; поэтому вы можете вызывать R из java (или любого другого языка, если у вас есть API). В R также есть пакет для вызова java out или R.
Как пользователь MATLAB и R, я думаю, что это очень разные приложения. У меня самого есть опыт работы в области компьютерных наук и т. д., и я не могу отделаться от мысли, что R создан статистиками для статистиков, тогда как MATLAB создан программистами для программистов.
R позволяет очень легко визуализировать и вычислять всевозможные статистические данные, но я бы не стал использовать его для реализации чего-либо, связанного с обработкой сигналов, если бы это зависело от меня.
Подводя итог, если вы хотите заниматься статистикой, используйте R. Если вы хотите программировать, используйте MATLAB или какой-либо язык программирования.
R
— это язык программирования.
- person Frank; 15.11.2009
Поддержка интерактивной графики в Matlab намного лучше, чем в R. Я ненавижу Matlab как язык, но я завидую, когда вижу, как его пользователи могут исследовать данные с помощью операций мыши, в то время как я занят повторением команд с новыми значениями для xlim
и т. д. , Matlab также обрабатывает многопанельные графики намного лучше, чем любой из методов R для этой задачи. Как правило, R-графика напоминает 1960-е. Это хорошо для публикации, но не лучшее решение для интерактивного исследования данных.