Що може зробити MATLAB, що R не може зробити? [зачинено]


137

Я часто чую, як люди скаржаться, як дорогі ліцензії MATLAB . Тоді я дивуюся , чому вони не просто використовувати Октаву або R . Але чи правильно це останнє? Чи можете ви використовувати R для заміни MATLAB?


13
до речі, є ще одна альтернатива з відкритим кодом: Octave здебільшого сумісний з Matlab
sellibitze

14
Технічно все, що можна зробити однією мовою, можна зробити будь-якою мовою (з точки зору "що це можна обчислити"). Це просто питання зручності та простоти навчання
BlueRaja - Danny Pflughoeft

20
+1: Matlab може з'їсти мій бюджет на програмне забезпечення. R поки не встиг цього зробити.
Ітератор

3
Щоб виправити деякі інші твердження: неправильно, що можна повторно використовувати весь код Matlab в Octave або FreeMat. Існують деякі класи функцій, які недостатньо добре реалізовані в інших версіях. У мене є великі блоки коду, які я вважаю за краще впроваджувати заново в середовищах, які мають приблизно подібний функціонал лише для цих класів функцій. З функціоналу, який має Matlab, що Octave не має, я знайшов сурогати в R, Python, і, певною мірою, Java та C. Перевтілення бібліотек складніше, ніж базовий код. Зверніть увагу на бібліотеки ...
Ітератор

5
Закриття цього питання не виправдане. Це питання не стосується опитування, а про те, що саме ви можете зробити в Matlab, але не в R. Такі речі легко перелічити та підтримати посиланнями.
Френк

Відповіді:


128

Чи можете ви використовувати R для заміни MATLAB?

Так.

Я використовував MATLAB протягом багатьох років, але перейшов головним чином на R протягом останніх 3 років. На даний момент вони мають набагато більше спільного, ніж ні. Частково це залежить від вашого поля та випадку використання. І як раніше говорив Спенсер Грейвз , це також залежить від того, в якій "церкві ви трапляєтеся часто". Найкраще, якщо ви подивитеся на інструментарій MATLAB проти CRAN для конкретного завдання, перш ніж вирішити.

Аналогічне запитання було задано на R-Help кілька років тому і знову ще недавно . Девід Хібелер (в університеті Мен) підтримує широке порівняння R / MATLAB і є найкращим посиланням на цю тему. Ви також можете переглянути це порівняння основних функцій .

Ось кілька речей, які я спостерігав у минулому, і жоден із них не повинен бути порушником угод.

  • Як правило, MATLAB має краще середовище програмування (наприклад, краща документація, кращі налагоджувачі, кращий браузер об’єктів) і "простіший" у використанні (ви можете використовувати MATLAB, не виконуючи жодного програмування, якщо хочете). Simulink дозволяє візуально програмувати, з'єднуючи блоки у графіках. REvolution R вирішує деякі з цих відмінностей , забезпечуючи кращу IDE з покращеною налагодженням, але це все-таки на крок позаду.
  • MATLAB трохи швидше з нормальною конфігурацією ( див. Цей орієнтир для прикладу ), хоча є речі, які можна зробити для підвищення продуктивності R, якщо це стане проблемою.
  • Оскільки він комерційний, він, ймовірно, має більше "продуктів" (у сенсі інтегрованих додатків) та підтримки (але ви платите за це). Див список продуктів . Наприклад, у нього є такі речі, як компілятор MATLAB, який створює виконувані програми MATLAB, які можна розгорнути.
  • Що стосується пакетів / наборів інструментів, MATLAB має набагато більшу підтримку фізичних наук, тоді як R сильніше для статистики, що не означає, що інший не може виконувати ці завдання. І їх можна легко розширити.

Отже, якщо простота у використанні не є першочерговою проблемою (і немає іншої бізнес-причини, щоб уникнути використання інструменту з відкритим кодом), я вважаю, що для використання Р. слід створити справжній випадок. Це дуже навколо нього сильне співтовариство (списки розсилки R вражаючі), швидко розвивається (див. CRAN), і воно безкоштовне (що не є маленькою проблемою!).

Редагувати: Я просто додам ще один момент до цього: книга "Функціональний аналіз даних за допомогою R та MATLAB" містить розділ "Основні порівняння мов Matlab та R". Це охоплює деякі важливі синтаксичні відмінності (наприклад, інтерпретація крапки або значення квадратних дужок []). Саму книгу варто прочитати для всіх, хто цікавиться функціональним програмуванням (на будь-якій мові).


5
Тут є хороша довідка з matlab
Suppressingfire

4
"[MATLAB] також, можливо, має більше продуктів та підтримки". Я не згоден з цим. CRAN і Bioconductor (для R) набагато всеосяжніші, ніж MATLAB + панелі інструментів + ​​Обмін файлами. Також, на мій досвід, список розсилки R-Help зазвичай такий же ефективний, як і платна підтримка. Я погоджуюся, що компілятор MATLAB - це чудова функція, яка не повторюється в Р.
Річі Коттон

2
Багато разів R-функції краще задокументовані, ніж функції в Matlab. Я вважаю, що якість документації Matlab сильно різниться від функцій до функцій та між (комерційними) наборами інструментів. Я погоджуюся, що Matlab IDE є дещо більш сприятливим для початківців, але це не краще, ніж, наприклад, ESS for R, якщо ви використовуєте його щодня.
Матті Пастель

10
RStudio - приємний новий R IDE
Jason Axelson

1
Шкода, що це питання було закрито. Це одна з найкращих технічних дискусій, яку я коли-небудь бачив на StackOverflow.
kd4ttc

32

R - середовище для статистичного аналізу даних та графіки. Походження MATLAB полягає у чисельних обчисленнях. Основні мовні реалізації мають багато спільних функцій, якщо ви використовуєте їх для обробки даних (наприклад, матричні / векторні операції).

R має статистичну функціональність, яку важко знайти в іншому місці (> 2000 пакунків на CRAN ), і багато статистики використовують його. З іншого боку, MATLAB має безліч (дорогих) наборів інструментів для інженерних застосувань

  • обробка зображення / придбання зображення,
  • дизайн фільтра,
  • нечітка логіка / нечітке управління,
  • часткові диференціальні рівняння,
  • тощо.

R має велике сховище пакетів під назвою CRAN, яке надає безліч додаткових функцій (хоча я згоден із вашим загальним моментом). Наприклад: PDE-рішення: cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire

7
У MATLAB також є щось аналогічне CRAN: великий обмін файлами ( mathworks.com/matlabcentral/fileexchange ) з понад 10 000 функцій та наборів інструментів, що надаються користувачем, які є у вільному доступі.
gnovice

2
Існує також значна, безкоштовна база коду для MATLAB за межами файлового обміну MATLAB Central.
Прогноз

26

Я використовував і 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 ([ім'я підпрограми], [список аргументів]) і просто швидший і чистіший.


11
Я також повинен зазначити, що R отримує великий плюс у моїй книзі для системи підмітання для забезпечення відтворюваних досліджень. На мою думку, надзвичайно важливо дозволити комусь повторно проаналізувати та проаналізувати обчислення за папером чи звітом, використовуючи вільно доступний інструмент.
Шарпі

22

Однією з великих переваг MATLAB над R є якість документації MATLAB. R, будучи відкритим кодом, страждає в цьому відношенні - особливість, спільна для багатьох проектів з відкритим кодом.

Однак R є дуже корисним середовищем та мовою. Він широко використовується у спільноті біоінформатики та має багато пакунків, корисних у цій галузі.

Альтернативою R є Octave ( http://www.gnu.org/software/octave/ ), який дуже схожий на MATLAB, він може запускати сценарії MATLAB.


2
Всі подані R пакети перевіряються на документацію та приклади.
Фернандо

21

На мій досвід, перехід від MATLAB до Python - це простіший перехід - Python з numpy / scipy ближче до MATLAB за стилем та особливостями, ніж Р. Також є прямі клони MATLAB з відкритим кодом Octave та Scilab .

Звичайно, MATLAB робити це не може - в моєму регіоні MATLAB використовується дуже багато для отримання даних у режимі реального часу - більшість апаратних компаній включають інтерфейси MATLAB. Хоча це може бути можливим з RI, уявіть, що це буде значно більше. Також Simulink пропонує цілу область функціональності, яка, на мою думку, відсутня у R. Я впевнений, що є більше, але я не так знайомий з R.


11

Коротка відповідь: ні, звичайно, ні. Хоча будь-який набір математичних програмних пакетів матиме перекриття, вони завжди матимуть упередження щодо певних проблемних областей. Ці упередження сильно залежать від того, чи хочете ви використовувати один із цих пакетів.

Приклад того, що MATLAB може зробити, що R не може, - це інтерфейс апаратного забезпечення в режимі реального часу для обробки / отримання та контролю сигналів. Модель Simulink в MATLAB може бути налаштована як для роботи в симуляції на вашій машині, перш ніж компілювати код для виконання в реальній системі, беручи вимірювані дані як вхідні дані, і обчислюючи відповідні виходи (те, що було раніше моделювання системи управління, тепер повністю функціонує один). За допомогою відповідної апаратної дошки у вашому пристрої ви можете запускати системи управління в режимі реального часу через ПК.

R, навпаки, здається міцно вписаним у роль статистики, де я впевнений, що він виконує те, що може зробити MATLAB. Аналогічно, Mathematica краща за MATLAB у символічній математиці; Python кращий за MATLAB в загальному програмуванні; gnuplot краще, ніж усі вони фактично створюють графіки (е, я припускаю); і так далі.


11
R насправді, як відомо, дуже хороший для створення графіків. Вони теж дуже добре виглядають. Власне, найпершою причиною мене зазирнути в R було те, що я ревнував деякі приємні графіки, зроблені моїми колегами, використовуючи Р. Тому я перейшов з gnuplot і ніколи не оглядався.
Френк

11

Я згоден з багатьма відповідями, наведеними вище. Оскільки відповідь характерна для розширення можливостей MATLAB та R, я згадаю дуже важливий: MATLAB включає JVM і має бездоганну та надійну сумісність з Java. Весь величезний універсал бібліотек Java доступний користувачеві MATLAB. MATLAB IDE майже може використовуватися як затемнення бідної людини. Для порівняння, rJava дуже незрілий, незважаючи на дуже цінні зусилля свого творця (Романа Франсуа).


9

Ми не можемо, тому що це очікують / вимагають наші клієнти.


3
Це цілком коректна відповідь. Важливо усвідомити, що існує багато галузей, які просто не приймуть рішення з відкритим кодом. Існують сумнівні вимоги відповідності, які приймають R тарілки.
Брендон Бертелсен

1
@BrandonBertelsen: конкретно, що?
smci

3
@smci це твердження вже не є правдивим, як це було в 2010 році. Використання R поширилось.
Брендон Бертелсен

Гаразд, але чи можете ви сказати нам станом на 2010 р., Які вимоги відповідності зняли R тарілку (а які все ще є проблемою)?
smci

1
Наші клієнти зазвичай також використовують MATLAB, і ми часто вимагаємо обмінюватися кодом та моделями з ними. Як правило, ви бачите, що єдині галузі, які використовують R, в основному стосуються наборів даних та статистики.
Nzbuu

5

Завдяки пакету sqldf, R здатний не тільки статистика, але й серйозний обмін даними - за умови, що на вашій машині достатньо оперативної пам’яті.

А з пакетом RServe R стає звичайним сервером TCP / IP; тож ви можете викликати R з Java (або будь-якої іншої мови, якщо у вас є api). Також є пакет у R для виклику Java або R.


Це правда, але питання "Що MATLAB може зробити, що R не може зробити?" не "Що R може зробити, що MATLAB не може зробити?".
Марек

4

Як користувач MATLAB і R, я думаю, що вони дуже різні програми. Я сам маю досвід інформатики тощо, і я не можу не думати, що R - це статистики для статистиків, тоді як MATLAB - це програмісти для програмістів.

R дозволяє дуже просто візуалізувати та обчислити всілякі статистичні дані, але я б не використовував його для здійснення будь-якої пов'язаної з обробкою сигналів, якби це було залежно від мене.

Підводячи підсумки, якщо ви хочете робити статистику, використовуйте R. Якщо ви хочете програмувати, використовуйте MATLAB або якусь мову програмування.


4
Прийшов один R- мова програмування.
Френк

6
"Matlab - це програмісти для програмістів". MATLAB спочатку був написаний спеціально для лінійної алгебри; це не була мова програмування загального призначення. Багато мовних загальних особливостей мови було застосовано згодом. (У ньому була лише працююча об'єктно-орієнтована система протягом року.)
Річі Коттон

9
"Matlab - це програмісти для програмістів": Ви серйозно? Єдине, що насправді клопоче мене з MATLAB - це те, що хтось винайшов мову, не був програмістом, враховуючи надзвичайну незграбність мови в деяких ситуаціях.
Hannes Ovrén

13
R створений статистиками, Matlab створений інженерами. Обидва цілком здатні мови програмування.
Шарпі

3
@smci Востаннє, коли я поміняв виробничий код Matlab на код R, був у Національній службі погоди у 2008 році, і система з цього часу працює без помилок. Основна обробка багатогігабайтних наборів даних за допомогою рекурсивних алгоритмів аж ніяк не є завданням, що є представником наукових обчислень в цілому, і тому є поганим вибором еталону для складання загальних тверджень про придатність мови програмування.
Шарпі

2

Підтримка інтерактивної графіки набагато краща в matlab, ніж у Р. Я ненавиджу matlab як мову, але я заздрю, коли бачу, як його користувачі можуть вивчати дані за допомогою операцій миші, в той час як я зайнятий повторенням команд з новими значеннями і xlimт.д. Matlab також обробляє багатопанельні сюжети набагато краще, ніж будь-який із методів R для виконання завдання. Взагалі R графіка має відчуття 1960-х років. Це добре для публікації, але не найкраще рішення для інтерактивного дослідження даних.


Будучи важким користувачем інтерактивних інструментів побудови графіків обох систем, я погоджуюся в межах (тобто, як я намагаюся обох сильно), але ви, ймовірно, не вистачаєте на деякі дуже корисні інтерактивні інструменти для графіки в Р. Перевірте наступні пакети : iplots, Acinonyx, Rstudio маніпулюють тощо. Для задоволення ознайомтеся з цим прикладом .
Ітератор

"R графіка відчуває 1960-ті роки" - це, можливо, було правдою років тому. У наші дні, з ggplot2, який швидко набирає популярність, R-діаграми мають сучасний і красивий вигляд. Дивіться наприклад: r-bloggers.com/?s=ggplot
arielf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.