Я часто слышу, как люди жалуются, как дорого стоят MATLAB. Тогда мне интересно, почему они не просто используют Octave или R. Но верно ли последнее? Можете ли вы использовать R для замены MATLAB?
Что может сделать MATLAB, что R не может сделать?
Ответ 1
Можете ли вы использовать 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". Это охватывает некоторые важные различия в синтаксисе (например, интерпретацию точки или значение квадратных скобок []). Сама книга стоит прочитать всем, кто интересуется функциональным программированием (на любом языке).
Ответ 2
R - среда для анализа статистических данных и графики. Происхождения MATLAB находятся в численном вычислении. У базовых языковых реализаций есть много общих черт, если вы используете их для манипулирования данными (например, операции с матрицей/вектором).
R имеет статистическую функциональность, которую трудно найти в другом месте ( > 2000 Пакеты на CRAN), и многие статистики используют ее. С другой стороны, MATLAB имеет множество (дорогостоящих) наборов инструментов для инженерных приложений, таких как
- обработка изображений/получение изображений,
- дизайн фильтра,
- нечеткая логика/нечеткое управление,
- уравнения в частных производных,
- и др.
Ответ 3
Я использовал как 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([имя подпрограммы], [список аргументов]) и просто быстрее и чище.
Ответ 4
Одним из больших преимуществ MATLAB over R является качество документации MATLAB. R, являющийся открытым исходным кодом, страдает в этом отношении, особенностью, характерной для многих проектов с открытым исходным кодом.
R, однако, очень полезная среда и язык. Он широко используется в сообществе биоинформатики и имеет множество пакетов, полезных в этой области.
Альтернативой R является Octave (http://www.gnu.org/software/octave/), который очень похож на MATLAB, он может запускать скрипты MATLAB.
Ответ 5
По моему опыту переход от MATLAB к Python - более легкий переход - Python с numpy/scipy ближе к MATLAB с точки зрения стиля и функций чем R. Существуют также клон MATLAB с открытым исходным кодом Octave и Scilab.
Конечно, многое может сделать MATLAB, что R не может - в моей области MATLAB много используется для сбора данных в реальном времени - большинство аппаратных компаний включают интерфейсы MATLAB. Хотя это возможно с R, я предполагаю, что это будет намного более активно. Кроме того, Simulink предоставляет всю функциональность, которая, как мне кажется, отсутствует в R. Я уверен, что есть больше, но я не очень хорошо знаком с R.
Ответ 6
Короткий ответ: нет, конечно нет. В то время как любой набор математических пакетов программного обеспечения будет иметь свои совпадения, они всегда будут иметь предубеждения по некоторым проблемным областям. Эти предубеждения сильно зависят от того, хотите ли вы использовать один из этих пакетов.
Примером того, что MATLAB может сделать, что R не может быть интерфейсом к аппаратуре реального времени для обработки/сбора и управления сигналами. A Simulink модель в MATLAB может быть настроена как для запуска в симуляции на вашем компьютере, прежде чем компилировать код для выполнения на реальной системе, принимая измеренные данные как ввод и вычисление соответствующих результатов (что было до того, как симуляция системы управления теперь полностью функционирует). С помощью соответствующей аппаратной платы на вашем компьютере вы можете запускать системы управления в реальном времени с помощью ПК.
R, напротив, кажется прочно установленным в роли статистики, где я уверен, что это - выполнение того, что может сделать MATLAB. Аналогично, Mathematica лучше, чем MATLAB в символических математических вычислениях; Python лучше, чем MATLAB при общем программировании; gnuplot лучше всех из них при создании графов (er, я полагаю); и т.д.
Ответ 7
Я согласен со многими из приведенных выше ответов. Поскольку ответ специфичен для различий в возможностях MATLAB и R, я упомянул очень важный: MATLAB включает JVM и обладает безупречной и надежной совместимостью с Java. Все возможности Java обширного универсума библиотек доступны для пользователя MATLAB. MATLAB IDE можно почти использовать как плохого человека Eclipse. Для сравнения, rJava очень незрелый, несмотря на очень ценные усилия его создателя (Роман Франсуа).
Ответ 8
Мы не можем, потому что это ожидалось/требовалось нашими клиентами.
Ответ 9
С пакетом sqldf R способен не только статистику, но и серьезный интеллектуальный анализ данных - при условии, что на вашем компьютере достаточно оперативной памяти.
И с пакетом RServe R становится обычным сервером TCP/IP; поэтому вы можете вызывать R из java (или любого другого языка, если у вас есть api). Существует также пакет в R для вызова java или R.
Ответ 10
Как пользователь MATLAB и R, я думаю, что они очень разные приложения. У меня есть опыт в информатике и т.д., И я не могу не думать, что R - статистиками для статистиков, тогда как MATLAB - программистами для программистов.
R очень легко визуализирует и вычисляет всевозможные статистические данные, но я бы не использовал его для реализации какой-либо обработки сигнала, если бы это зависело от меня.
Подводя итог, если вы хотите сделать статистику, используйте R. Если вы хотите запрограммировать, используйте MATLAB или какой-либо язык программирования.
Ответ 11
Поддержка интерактивной графики намного лучше в matlab, чем в R. Я ненавижу matlab как язык, но я ревную, когда вижу, как его пользователи могут исследовать данные с помощью мыши, в то время как я занят повторением команд с новыми значениями для xlim
и т.д. Matlab также обрабатывает многопанельные графики намного лучше, чем любой из R-методов для задачи. Как правило, R-графика имеет ощущение 1960-х годов. Это хорошо для публикации, но не лучшее решение для интерактивного исследования данных.