Я часто чую, як люди скаржаться, як дорогі ліцензії MATLAB . Тоді я дивуюся , чому вони не просто використовувати Октаву або R . Але чи правильно це останнє? Чи можете ви використовувати R для заміни MATLAB?
Я часто чую, як люди скаржаться, як дорогі ліцензії MATLAB . Тоді я дивуюся , чому вони не просто використовувати Октаву або R . Але чи правильно це останнє? Чи можете ви використовувати R для заміни MATLAB?
Відповіді:
Чи можете ви використовувати R для заміни MATLAB?
Так.
Я використовував MATLAB протягом багатьох років, але перейшов головним чином на R протягом останніх 3 років. На даний момент вони мають набагато більше спільного, ніж ні. Частково це залежить від вашого поля та випадку використання. І як раніше говорив Спенсер Грейвз , це також залежить від того, в якій "церкві ви трапляєтеся часто". Найкраще, якщо ви подивитеся на інструментарій MATLAB проти CRAN для конкретного завдання, перш ніж вирішити.
Аналогічне запитання було задано на R-Help кілька років тому і знову ще недавно . Девід Хібелер (в університеті Мен) підтримує широке порівняння R / MATLAB і є найкращим посиланням на цю тему. Ви також можете переглянути це порівняння основних функцій .
Ось кілька речей, які я спостерігав у минулому, і жоден із них не повинен бути порушником угод.
Отже, якщо простота у використанні не є першочерговою проблемою (і немає іншої бізнес-причини, щоб уникнути використання інструменту з відкритим кодом), я вважаю, що для використання Р. слід створити справжній випадок. Це дуже навколо нього сильне співтовариство (списки розсилки 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 також поширюється на зв'язування у складеному коді. Якось назад у мене була написана модель у Fortran, і я намагався вирішити між використанням 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 за стилем та особливостями, ніж Р. Також є прямі клони MATLAB з відкритим кодом Octave та Scilab .
Звичайно, MATLAB робити це не може - в моєму регіоні MATLAB використовується дуже багато для отримання даних у режимі реального часу - більшість апаратних компаній включають інтерфейси MATLAB. Хоча це може бути можливим з RI, уявіть, що це буде значно більше. Також Simulink пропонує цілу область функціональності, яка, на мою думку, відсутня у R. Я впевнений, що є більше, але я не так знайомий з R.
Коротка відповідь: ні, звичайно, ні. Хоча будь-який набір математичних програмних пакетів матиме перекриття, вони завжди матимуть упередження щодо певних проблемних областей. Ці упередження сильно залежать від того, чи хочете ви використовувати один із цих пакетів.
Приклад того, що MATLAB може зробити, що R не може, - це інтерфейс апаратного забезпечення в режимі реального часу для обробки / отримання та контролю сигналів. Модель Simulink в MATLAB може бути налаштована як для роботи в симуляції на вашій машині, перш ніж компілювати код для виконання в реальній системі, беручи вимірювані дані як вхідні дані, і обчислюючи відповідні виходи (те, що було раніше моделювання системи управління, тепер повністю функціонує один). За допомогою відповідної апаратної дошки у вашому пристрої ви можете запускати системи управління в режимі реального часу через ПК.
R, навпаки, здається міцно вписаним у роль статистики, де я впевнений, що він виконує те, що може зробити MATLAB. Аналогічно, Mathematica краща за MATLAB у символічній математиці; Python кращий за MATLAB в загальному програмуванні; gnuplot краще, ніж усі вони фактично створюють графіки (е, я припускаю); і так далі.
Я згоден з багатьма відповідями, наведеними вище. Оскільки відповідь характерна для розширення можливостей MATLAB та R, я згадаю дуже важливий: MATLAB включає JVM і має бездоганну та надійну сумісність з Java. Весь величезний універсал бібліотек Java доступний користувачеві MATLAB. MATLAB IDE майже може використовуватися як затемнення бідної людини. Для порівняння, rJava дуже незрілий, незважаючи на дуже цінні зусилля свого творця (Романа Франсуа).
Ми не можемо, тому що це очікують / вимагають наші клієнти.
Завдяки пакету sqldf, R здатний не тільки статистика, але й серйозний обмін даними - за умови, що на вашій машині достатньо оперативної пам’яті.
А з пакетом RServe R стає звичайним сервером TCP / IP; тож ви можете викликати R з Java (або будь-якої іншої мови, якщо у вас є api). Також є пакет у R для виклику Java або R.
Як користувач MATLAB і R, я думаю, що вони дуже різні програми. Я сам маю досвід інформатики тощо, і я не можу не думати, що R - це статистики для статистиків, тоді як MATLAB - це програмісти для програмістів.
R дозволяє дуже просто візуалізувати та обчислити всілякі статистичні дані, але я б не використовував його для здійснення будь-якої пов'язаної з обробкою сигналів, якби це було залежно від мене.
Підводячи підсумки, якщо ви хочете робити статистику, використовуйте R. Якщо ви хочете програмувати, використовуйте MATLAB або якусь мову програмування.
R
- мова програмування.
Підтримка інтерактивної графіки набагато краща в matlab, ніж у Р. Я ненавиджу matlab як мову, але я заздрю, коли бачу, як його користувачі можуть вивчати дані за допомогою операцій миші, в той час як я зайнятий повторенням команд з новими значеннями і xlim
т.д. Matlab також обробляє багатопанельні сюжети набагато краще, ніж будь-який із методів R для виконання завдання. Взагалі R графіка має відчуття 1960-х років. Це добре для публікації, але не найкраще рішення для інтерактивного дослідження даних.