Я часто слышу, как люди жалуются на дороговизну лицензий MATLAB . Тогда я удивляюсь , почему они не просто использовать Октаву или R . Но верно ли последнее? Можете ли вы использовать R для замены MATLAB?
Ответы:
Можете ли вы использовать R для замены MATLAB?
Да.
Я использовал MATLAB в течение многих лет, но в последние 3 года перешел в основном на R. На данный момент у них гораздо больше общего, чем нет. Это частично зависит от вашей области и сценария использования. И, как ранее сказал Спенсер Грейвс , это также зависит от того, в какую «церковь вы часто ходите». Лучше всего, если вы посмотрите на инструментарий MATLAB и CRAN для конкретной задачи, прежде чем принимать решение.
Аналогичный вопрос был задан в R-Help несколько лет назад и недавно . Дэвид Хибелер (из Университета штата Мэн) проводит обширное сравнение R / MATLAB и является лучшим справочником по этому вопросу. Вы также можете просмотреть это сравнение основных функций .
Вот некоторые из вещей, которые я наблюдал в прошлом, ни один из которых не должен нарушать договоренности.
Итак, если простота использования не является основной проблемой (и нет другой бизнес-причины избегать использования инструмента с открытым исходным кодом), то я думаю, что есть реальный аргумент в пользу использования 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 для скомпилированного кода. Когда я обнаружил, что мне придется написать и поддерживать отдельную процедуру Fortran, которая выполняет некоторые сложные манипуляции с указателями для управления интерфейсом, я отложил 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 или R.
Как пользователь MATLAB и R, я думаю, что это очень разные приложения. Я сам имею образование в области компьютерных наук и т.д., и я не могу не думать, что R создан статистиками для статистиков, тогда как MATLAB создан программистами для программистов.
R позволяет очень легко визуализировать и вычислять всевозможные статистические данные, но я бы не стал использовать его для реализации чего-либо, связанного с обработкой сигналов, если бы это зависело от меня.
Подводя итог, если вы хотите вести статистику, используйте R. Если вы хотите программировать, используйте MATLAB или какой-нибудь язык программирования.
R
это язык программирования.
Поддержка интерактивной графики в Matlab намного лучше, чем в R. Я ненавижу Matlab как язык, но я завидую, когда вижу, как его пользователи могут исследовать данные с помощью операций мыши, в то время как я занят повторением команд с новыми значениями для xlim
и т. Д. Matlab также обрабатывает многопанельные графики намного лучше, чем любой из методов R. Как правило, графика R напоминает 1960-е. Это нормально для публикации, но не лучшее решение для интерактивного исследования данных.