11 ответов:
можете ли вы использовать R для замены MATLAB?
да.
Я использовал MATLAB в течение многих лет, но переключился в основном на R в последние 3 года. На данный момент у них гораздо больше общего, чем нет. Это частично зависит от вашего поля и варианта использования. И как Спенсер Грейвс сказал ранее, это также зависит от того, какую"церковь вы часто посещаете". Лучше всего, если вы посмотрите на MATLAB toolkit и CRAN для конкретного задач, прежде чем вы решите.
аналогичный вопрос спросил на R-Help несколько лет назад и недавно. Дэвид Hiebeler (в Университете штата Мэн) поддерживает обширный сравнение R/MATLAB, и это лучшая ссылка на эту тему. Вы также можете просмотреть это сравнение основных функций.
вот некоторые из вещей, которые я наблюдал в прошлом, ни один из них которые должны быть нарушителями сделки.
- как правило, MATLAB имеет лучшую среду программирования (например, лучшую документацию, лучшие отладчики, лучший браузер объектов) и "проще" в использовании (вы можете использовать MATLAB без какого-либо программирования, если хотите). Simulink позволяет визуально программировать, соединяя блоки в графиках. революция R решает некоторые из этих различий за счет улучшения интегрированной среды разработки с улучшенными отладки, но это все-таки шаг назад.
- MATLAB немного быстрее с нормальной конфигурацией (см. этот тест для примера), хотя есть вещи, которые можно сделать для повышения производительности R, если это станет проблемой.
- поскольку он коммерческий, он также, возможно, имеет больше "продуктов" (в смысле интегрированных дополнений) и поддержки (но вы платите за это). Смотрите список продуктов. Например, у него есть такие вещи, как компилятор MATLAB который создает исполняемые программы MATLAB, которые могут быть развернуты.
- что касается пакетов/наборов инструментов, MATLAB имеет гораздо большую поддержку для физических наук, в то время как R сильнее для статистики, что не означает, что другой не может выполнять эти задачи. И они оба могут быть легко расширены.
Итак, если простота использования не является основной проблемой (и нет никаких других бизнес-причин избегать использования инструмента с открытым исходным кодом), то я думаю, что есть реальный случай он имеет очень сильное сообщество вокруг него (списки рассылки R удивительны), быстро развивается (см. CRAN), и это свободный (что не маленькая проблема!).
Edit: я бы просто добавил еще один момент к этому: книга "функциональный анализ данных с помощью R и MATLAB" включает главу о "существенных сравнениях языков Matlab и R". Это охватывает некоторые важные синтаксические различия (такие как толкование точки, или значение квадратных скобок []). Сама книга хорошо подходит для тех, кто интересуется функциональным программированием (на любом языке).
R-это среда для анализа статистических данных и графики. Истоки MATLAB находятся в численных вычислениях. Основные языковые реализации имеют много общих функций, если вы используете их для манипулирования данными (например, матричные/векторные операции).
R имеет статистическую функциональность трудно найти в другом месте (>2000 пакетов на CRAN), и многие статистики используют его. С другой стороны, MATLAB имеет множество (дорогих) наборов инструментов для инженерных приложений как
- обработка изображений/захват изображения,
- конструкция фильтра,
- нечеткая логика/нечеткая управления,
- дифференциальные уравнения в частных производных,
- etc.
Я использовал как R, так и MATLAB для решения проблем и построения моделей, связанных с инженерной средой, и между этими двумя системами существует много перекрытий. На мой взгляд, преимущества MATLAB заключаются в специализированных доменных приложениях. Вот некоторые примеры:
такие функции, как оптимизация, которые помогают в исследованиях динамики жидкости.
наборы инструментов, такие как набор инструментов для обработки изображений. Я не нашел пакет R это обеспечивает эквивалентную реализацию таких инструментов, как алгоритм водораздела.
на мой взгляд, MATLAB обеспечивает гораздо лучшие возможности интерактивной графики. Тем не менее, я думаю, что R производит лучшую статическую графику качества печати, в зависимости от приложения. Набор инструментов MATLAB symbolic math также лучше интегрирован и более способен, чем R-эквиваленты, такие как Ryacas или rSymPy. Существование компилятора MATLAB также позволяет создавать системы на основе кода MATLAB развернутый независимо от среды MATLAB-хотя его доступность будет зависеть от того, сколько денег вам нужно бросить.
еще одна вещь, которую я должен отметить, что отладчик MATLAB является одним из лучших, с которыми я работал.
открытость R также распространяется на связывание в скомпилированном коде. Некоторое время назад у меня была модель, написанная на Fortran, и я пытался решить, использовать ли R или MATLAB в качестве интерфейса, чтобы помочь подготовить входные данные и обработать результаты. Я провел час, читая об интерфейсе MEX для скомпилированного кода. Когда я обнаружил, что мне придется писать и поддерживать отдельную процедуру Fortran, которая сделала некоторые замысловатое жонглирование указателем для того, чтобы управлять интерфейсом, я отложил MATLAB.
интерфейс R состоит из вызова .Fortran ([имя подпрограммы], [список аргументов]) и просто быстрее и чище.
одним из больших преимуществ MATLAB перед R является качество документации MATLAB. R, будучи открытым исходным кодом, страдает в этом отношении, что характерно для многих проектов с открытым исходным кодом.
R, однако, очень полезная среда и язык. Он широко используется в сообществе биоинформатики и имеет много пакетов, полезных в этой области.
альтернативой R является Октавы (http://www.gnu.org/software/octave/), который очень похож на MATLAB, он может запускать скрипты MATLAB.
по моему опыту переход от MATLAB к Python-это более простой переход-Python с numpy / scipy ближе к MATLAB с точки зрения стиля и функций, чем R. есть также прямые клоны MATLAB с открытым исходным кодом Октавы и Scilab.
есть, конечно, много, что MATLAB может сделать, что R не может - в моей области MATLAB используется много для получения данных в реальном времени-большинство аппаратных компаний включают интерфейсы MATLAB. Хотя это может быть возможно с R я предполагаю, что это было бы намного сложнее. Также Simulink предоставляет целую область функциональности, которая, я думаю, отсутствует у R. Я уверен, что есть больше, но я не так хорошо знаком с R.
короткий ответ: Нет, конечно, нет. В то время как любой набор математических программных пакетов будет иметь свои перекрытия, они всегда будут иметь предубеждения к определенным проблемным областям. Эти предубеждения сильно влияют на то, хотите ли вы использовать один из этих пакетов.
пример того, что MATLAB может сделать, что R не может, - это интерфейс к аппаратным средствам реального времени для обработки/сбора и управления сигналами. А Simulink модель в MATLAB может быть настроена как для запуска в симуляции на вашем компьютере перед компиляцией кода для выполнения на реальной системе, принимая измеренные данные в качестве входных данных и вычисляя соответствующие выходы (то, что было до моделирования системы управления, теперь полностью функционирует). С помощью соответствующей аппаратной платы на вашем компьютере вы можете запускать системы управления в реальном времени через ПК.
R, напротив, кажется твердо установленным в роли статистики, где я уверен, что он выполняет то, что может сделать MATLAB. Точно так же,Mathematica is лучше, чем MATLAB в символьной математике; Python лучше, чем MATLAB в общем программировании; gnuplot лучше, чем все они на самом деле создают графики (э-э, я предполагаю); и так далее.
Я согласен со многими ответами выше. Поскольку ответ специфичен для различных возможностей MATLAB и R, я упомяну очень важный: MATLAB включает в себя JVM и имеет безупречную и надежную совместимость с Java. Все необъятной Вселенной для Java-библиотек доступен для пользователя Матлаб. Среде MATLAB IDE можно практически быть использованы в качестве бедного человека затмения. По сравнению с этим, rJava очень незрелый, несмотря на очень ценные усилия его создателя (Роман Франсуа).
с пакетом sqldf R способен не только к статистике, но и к серьезному интеллектуальному анализу данных - при условии, что на вашем компьютере достаточно оперативной памяти.
и с пакетом RServe R становится обычным сервером TCP/IP; поэтому вы можете вызвать R из java (или любого другого языка, если у вас есть api). Существует также пакет в R для вызова java out или R.
как пользователь MATLAB и R, я думаю, что они очень разные приложения. У меня самого есть опыт работы в области компьютерных наук и т. д. и я не могу не думать, что R-это статистики для статистиков, тогда как MATLAB-программисты для программистов.
R позволяет очень легко визуализировать и вычислять всевозможные статистические данные, но я бы не использовал его для реализации какой-либо обработки сигналов, если бы это зависело от меня.
подводя итог, если вы хотите сделать статистика, используйте R. Если вы хотите программировать, используйте MATLAB или какой-либо язык программирования.
поддержка интерактивной графики намного лучше в matlab, чем в R. Я ненавижу matlab как язык, но я завидую, когда вижу, как его пользователи могут исследовать данные с помощью операций мыши, в то время как я занят повторением команд с новыми значениями для
xlimetc. Matlab также обрабатывает многопанельные графики намного лучше, чем любой из методов R для этой задачи. Как правило, R graphics имеет ощущение 1960-х годов. Это нормально для публикации, но не лучшее решение для интерактивного исследования данных.
Comments