Co MATLAB może zrobić, czego R nie może zrobić? [Zamknięte]

137

Często słyszę, jak ludzie narzekają, jak drogie są licencje MATLAB . Potem zastanawiam się, dlaczego nie wystarczy użyć Octave lub R . Ale czy to drugie ma rację? Czy możesz użyć R, aby zastąpić MATLAB?

Szczery
źródło
13
przy okazji, istnieje inna alternatywa open source: Octave jest w większości kompatybilny z Matlab
sellibitze
14
Technicznie rzecz biorąc, wszystko, co można zrobić w jednym języku, można zrobić w dowolnym języku (z punktu widzenia „co może obliczyć”). To tylko kwestia łatwości obsługi i łatwości nauki
BlueRaja - Danny Pflughoeft Stycznia
20
+1: Matlab może pochłonąć mój budżet na oprogramowanie. R jeszcze nie zdołał tego zrobić.
Iterator
3
Aby poprawić inne stwierdzenia: nie jest prawdą, że można ponownie wykorzystać cały kod Matlab w Octave lub FreeMat. Istnieją klasy funkcji, które w innych wersjach nie są dobrze zaimplementowane. Mam duże bloki kodu, które uważam za lepsze do implementacji od nowa w środowiskach, które mają w przybliżeniu podobną funkcjonalność tylko dla tych klas funkcji. Spośród funkcji, które ma Matlab, a której nie ma Octave, znalazłem surogaty w R, Pythonie i, do pewnego stopnia, Javie i C. Reimplementacja bibliotek jest trudniejsza niż podstawowy kod. Zwróć uwagę na biblioteki ...
Iterator
5
Zamknięcie tego pytania nie jest uzasadnione. To pytanie nie dotyczy ankiety, chodzi o to, co dokładnie można zrobić w Matlabie, ale nie w R. Takie rzeczy można łatwo wyliczyć i poprzeć referencjami.
Frank

Odpowiedzi:

128

Czy możesz użyć R, aby zastąpić MATLAB?

Tak.

Używałem MATLAB-a przez lata, ale przerzuciłem się głównie na R w ciągu ostatnich 3 lat. W tej chwili mają ze sobą znacznie więcej wspólnego niż nie. Częściowo zależy to od twojej dziedziny i przypadku użycia. I jak powiedział wcześniej Spencer Graves , zależy to również od tego, do którego „kościoła bywasz”. Najlepiej, jeśli spojrzysz na zestaw narzędzi MATLAB w porównaniu z CRAN dla konkretnego zadania, zanim zdecydujesz.

Podobne pytanie zadane w R-Help kilka lat temu i ponownie ostatnio . David Hiebeler (z University of Maine) prowadzi obszerne porównanie R / MATLAB i jest najlepszą referencją na ten temat. Możesz również przejrzeć to porównanie podstawowych funkcji .

Oto kilka rzeczy, które zaobserwowałem w przeszłości, z których żadna nie powinna być przełomem.

  • Generalnie MATLAB ma lepsze środowisko programistyczne (np. Lepszą dokumentację, lepsze debuggery, lepszą przeglądarkę obiektów) i jest „łatwiejszy” w użyciu (możesz używać MATLAB-a bez żadnego programowania, jeśli chcesz). Simulink umożliwia wizualne programowanie poprzez łączenie bloków w wykresy. REvolution R rozwiązuje niektóre z tych różnic , zapewniając lepsze IDE z ulepszonym debugowaniem, ale wciąż jest o krok w tyle.
  • MATLAB działa trochę szybciej w normalnej konfiguracji ( zobacz przykład w tym benchmarku ), chociaż są rzeczy, które można zrobić, aby poprawić wydajność języka R, jeśli stanie się to problemem.
  • Ponieważ jest komercyjny, prawdopodobnie ma również więcej „produktów” (w sensie zintegrowanych dodatków) i wsparcia (ale za to płacisz). Zobacz listę produktów . Na przykład ma takie rzeczy jak kompilator MATLAB, który tworzy wykonywalne programy MATLAB, które można wdrożyć.
  • Jeśli chodzi o pakiety / zestawy narzędzi, MATLAB ma znacznie większe wsparcie dla nauk fizycznych, podczas gdy R jest silniejszy dla statystyk, co nie oznacza, że ​​drugi nie może wykonać tych zadań. Oba można łatwo rozszerzyć.

Tak więc, jeśli łatwość użycia nie jest głównym problemem (i nie ma innego biznesowego powodu, aby unikać używania narzędzia open source), to myślę, że istnieje prawdziwy argument za używaniem R. silna społeczność wokół niego (listy mailingowe R są niesamowite), szybko się rozwija (patrz CRAN) i jest darmowy (co nie jest małym problemem!).

Edycja: dodałbym jeszcze jeden punkt: książka „Analiza danych funkcjonalnych z R i MATLAB” zawiera rozdział „Podstawowe porównania języków Matlab i R”. Obejmuje to kilka ważnych różnic w składni (takich jak interpretacja kropki lub znaczenie nawiasów kwadratowych []). Sama książka jest warta przeczytania dla każdego, kto interesuje się programowaniem funkcjonalnym (w obu językach).

Shane
źródło
5
Jest tutaj niezłe odniesienie do Matlab / R, które pokazuje, jak wykonać równoważne zadania w każdym z nich: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire
4
„[MATLAB] prawdopodobnie ma również więcej produktów i wsparcia”. Nie zgadzam się z tym. CRAN i Bioconductor (dla R) są znacznie bardziej wszechstronne niż MATLAB + zestawy narzędzi + wymiana plików. Ponadto lista mailingowa R-Help jest zwykle tak samo skuteczna, jak płatne wsparcie, z mojego doświadczenia. Zgadzam się, że kompilator MATLAB to świetna funkcja, która nie jest replikowana w R.
Richie Cotton
2
Wiele razy funkcje R są lepiej udokumentowane niż te w Matlabie. Uważam, że jakość dokumentacji Matlab różni się znacznie w zależności od funkcji i (komercyjnych) zestawów narzędzi. Zgadzam się, że Matlab IDE jest nieco bardziej przyjazny dla początkujących, ale nie jest lepszy niż np. ESS for R, jeśli używasz go na co dzień.
Matti Pastell
10
RStudio to fajny nowy R IDE
Jason Axelson
1
Szkoda, że ​​to pytanie zostało zamknięte. To jedna z najlepszych dyskusji technicznych, jakie kiedykolwiek widziałem na StackOverflow.
kd4ttc
32

R to środowisko do statystycznej analizy danych i grafiki. MATLAB wywodzi się z obliczeń numerycznych. Podstawowe implementacje języka mają wiele wspólnych cech, jeśli używasz ich do manipulacji danymi (np. Operacje na macierzach / wektorach).

R ma funkcje statystyczne, które trudno znaleźć gdzie indziej (> 2000 pakietów na CRAN ) i wielu statystyków z nich korzysta. Z drugiej strony MATLAB ma wiele (drogich) zestawów narzędzi do zastosowań inżynierskich, takich jak

  • przetwarzanie obrazu / akwizycja obrazu,
  • konstrukcja filtra,
  • logika rozmyta / sterowanie rozmyte,
  • Równania różniczkowe cząstkowe,
  • itp.
rcs
źródło
R ma duże repozytorium pakietów zwane CRAN, które zapewnia bogactwo dodatkowych funkcji (chociaż zgadzam się z twoim ogólnym punktem). Np .: solver PDE: cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire
7
MATLAB ma również coś podobnego do CRAN: sporych rozmiarów wymiana plików ( mathworks.com/matlabcentral/fileexchange ) z ponad 10000 funkcjami przesłanymi przez użytkowników i zestawami narzędzi, które są dostępne bezpłatnie.
gnovice
2
Istnieje również spora, bezpłatna baza kodu MATLAB poza wymianą plików MATLAB Central.
Predictor
26

Użyłem zarówno R, jak i MATLABa do rozwiązywania problemów i konstruowania modeli związanych z Inżynierią Środowiska, a oba systemy w dużym stopniu się pokrywają. Moim zdaniem zalety MATLABA tkwią w wyspecjalizowanych aplikacjach specyficznych dla domeny. Oto kilka przykładów:

  • Funkcje takie jak usprawnianie, które pomagają w badaniach dynamiki płynów.

  • Skrzynki narzędziowe, takie jak zestaw narzędzi do przetwarzania obrazu. Nie znalazłem pakietu R, który zapewnia równoważną implementację narzędzi, takich jak algorytm zlewni.

Moim zdaniem MATLAB zapewnia znacznie lepsze możliwości interaktywnej grafiki. Myślę jednak, że R tworzy lepszą statyczną grafikę o jakości druku, w zależności od aplikacji. Symboliczny zestaw narzędzi matematycznych MATLAB jest również lepiej zintegrowany i bardziej wydajny niż odpowiedniki R, takie jak Ryacas lub rSymPy. Istnienie kompilatora MATLAB pozwala również na wdrażanie systemów opartych na kodzie MATLAB niezależnie od środowiska MATLAB - chociaż jego dostępność będzie zależała od tego, ile pieniędzy musisz dorzucić.

Inną rzeczą, na którą powinienem zwrócić uwagę, jest to, że debugger MATLAB jest jednym z najlepszych, z którymi pracowałem.

Główną zaletą, jaką widzę w R, jest otwartość systemu i łatwość, z jaką można go rozbudowywać. Doprowadziło to do niesamowitej różnorodności pakietów w CRAN. Wiem, że Mathworks utrzymuje również repozytorium skrzynek narzędziowych stworzonych przez użytkowników i nie mogę dokonać uczciwego porównania, ponieważ nie używałem go tak często.

Otwartość języka R obejmuje również linkowanie w skompilowanym kodzie. Jakiś czas temu miałem model napisany w Fortranie i próbowałem zdecydować, czy użyć R lub MATLAB jako front-end, aby pomóc przygotować dane wejściowe i przetworzyć wyniki. Spędziłem godzinę czytając o interfejsie MEX do skompilowanego kodu. Kiedy stwierdziłem, że będę musiał napisać i utrzymywać osobną procedurę w Fortranie, która wykonywała skomplikowane żonglowanie wskaźnikami w celu zarządzania interfejsem, odłożyłem MATLAB na półkę.

Interfejs R składa się z wywołania .Fortran ([nazwa podprogramu], [lista argumentów]) i jest po prostu szybszy i bardziej przejrzysty.

Sharpie
źródło
11
Powinienem również wspomnieć, że R otrzymuje duży plus w mojej książce za system Sweave umożliwiający powtarzalne badania. Umożliwienie każdemu ponownego uruchomienia i przeanalizowania obliczeń stojących za pracą lub raportem za pomocą ogólnie dostępnego narzędzia jest moim zdaniem niezwykle ważne.
Sharpie
22

Dużą zaletą MATLAB-a nad R jest jakość dokumentacji MATLAB-a. R jako open source cierpi pod tym względem, co jest cechą wspólną wielu projektów open source.

R to jednak bardzo przydatne środowisko i język. Jest szeroko stosowany w środowisku bioinformatycznym i posiada wiele pakietów przydatnych w tej dziedzinie.

Alternatywą dla R jest Octave ( http://www.gnu.org/software/octave/ ), który jest bardzo podobny do MATLAB, może uruchamiać skrypty MATLAB.

Jan
źródło
2
Wszystkie przesłane pakiety R są testowane pod kątem dokumentacji i przykładów.
Fernando
21

Z mojego doświadczenia wynika, że ​​przejście z MATLAB-a do Pythona jest łatwiejsze - Python z numpy / scipy jest bliższy MATLAB -owi pod względem stylu i funkcji niż R. Istnieją również bezpośrednie klony MATLAB- a Open Source Octave i Scilab .

Z pewnością jest wiele rzeczy, które MATLAB może zrobić, czego R nie może - w mojej okolicy MATLAB jest często używany do akwizycji danych w czasie rzeczywistym - większość firm sprzętowych ma interfejsy MATLAB. Chociaż może to być możliwe w przypadku RI, wyobraź sobie, że byłoby to o wiele bardziej zaangażowane. Również Simulink zapewnia cały obszar funkcjonalności, którego, jak myślę, brakuje w R. Jestem pewien, że jest ich więcej, ale nie znam R.

Robince
źródło
11

Krótka odpowiedź: nie, oczywiście, że nie. Chociaż każdy zestaw pakietów oprogramowania matematycznego będzie się pokrywał, zawsze będą one miały tendencje do pewnych dziedzin problemowych. Te uprzedzenia mają duży wpływ na to, czy chcesz użyć jednego z tych pakietów, czy nie.

Przykładem tego, co MATLAB może zrobić, czego R nie może, jest interfejs do sprzętu czasu rzeczywistego w celu przetwarzania / akwizycji sygnału i sterowania. Simulink model MATLAB może być skonfigurowany zarówno do pracy w symulacji na komputerze przed kompilacją kodu do wykonania na rzeczywistym systemie biorąc zmierzone dane jako dane wejściowe i obliczanie odpowiednich wyjść (co było wcześniej symulacji układu sterowania jest teraz w pełni funkcjonujący jeden). Z odpowiednią płytą sprzętową w maszynie można uruchamiać systemy sterowania w czasie rzeczywistym za pośrednictwem komputera.

Natomiast R wydaje się mocno osadzony w roli statystyk, gdzie jestem pewien, że przewyższa to, co potrafi MATLAB. Podobnie Mathematica jest lepsza niż MATLAB w matematyce symbolicznej; Python jest lepszy niż MATLAB w programowaniu ogólnym; gnuplot jest lepszy od nich wszystkich w tworzeniu wykresów (eee, zakładam); i tak dalej.

Will Robertson
źródło
11
W rzeczywistości wiadomo, że R jest bardzo dobry do tworzenia wykresów. Wyglądają też bardzo dobrze. Właściwie pierwszym powodem, dla którego zajrzałem do R, było to, że byłem zazdrosny o kilka ładnych wykresów, które moi koledzy zrobili przy użyciu R. Więc przestawiłem się z gnuplot i nigdy nie oglądałem się za siebie.
Frank,
11

Zgadzam się z wieloma odpowiedziami podanymi powyżej. Ponieważ odpowiedź jest specyficzna dla zestawu różnic MATLAB i możliwości R, wspomnę o bardzo ważnym: MATLAB zawiera JVM i ma bezbłędną i solidną współpracę z Javą. Cała szeroka gama bibliotek Javy jest dostępna dla użytkownika MATLAB. MATLAB IDE może być prawie używane jako Eclipse dla ubogich. Dla porównania rJava jest bardzo niedojrzała, pomimo bardzo cennego wysiłku jej twórcy (Romana Francois).

gappy
źródło
9

Nie możemy, ponieważ tego oczekują / wymagają nasi klienci.

Nzbuu
źródło
3
To jest całkowicie poprawna odpowiedź. Ważne jest, aby zdać sobie sprawę, że istnieje wiele branż, które po prostu nie akceptują rozwiązania typu open source. Istnieją wątpliwe wymagania dotyczące zgodności, które przyjmują R tabliczki.
Brandon Bertelsen
1
@BrandonBertelsen: konkretnie, co?
smci
3
@smci to stwierdzenie nie jest już tak prawdziwe, jak w 2010 r. Używanie języka R rozprzestrzeniło się.
Brandon Bertelsen
Ok, ale czy możesz nam powiedzieć od 2010 r., Jakie wymagania dotyczące zgodności usunęły R z talerza (i które nadal są problemem)?
smci
1
Nasi klienci na ogół również używają MATLAB-a i często jesteśmy zobowiązani do wymiany z nimi kodu i modeli. Zwykle stwierdzasz, że jedyne branże, które używają języka R, zajmują się głównie zbiorami danych i statystykami.
Nzbuu
5

Dzięki pakietowi sqldf, R jest w stanie nie tylko statystyki, ale także poważne eksploracje danych - zakładając, że na komputerze jest wystarczająco dużo pamięci RAM.

Wraz z pakietem RServe R staje się zwykłym serwerem TCP / IP; więc możesz wywołać R z javy (lub dowolnego innego języka, jeśli masz api). Istnieje również pakiet w R do wywoływania javy lub R.

Alex
źródło
To prawda, ale pytanie brzmi: "Co może zrobić MATLAB, czego R nie może zrobić?" nie „Co może zrobić R, czego MATLAB nie może zrobić?”.
Marek
4

Jako użytkownik MATLAB i R uważam, że są to bardzo różne aplikacje. Ja sam mam doświadczenie w informatyce itp. I nie mogę przestać myśleć, że R jest autorstwa statystyków dla statystyków, podczas gdy MATLAB jest autorstwa programistów dla programistów.

R bardzo ułatwia wizualizację i obliczanie wszelkiego rodzaju danych statystycznych, ale nie użyłbym go do zaimplementowania niczego związanego z przetwarzaniem sygnału, gdyby to zależało ode mnie.

Podsumowując, jeśli chcesz robić statystyki, użyj R. Jeśli chcesz programować, użyj MATLABA lub jakiegoś języka programowania.

lhahne
źródło
4
Come one, Rto język programowania.
Frank
6
„Matlab jest stworzony przez programistów dla programistów”. MATLAB został pierwotnie napisany specjalnie do algebry liniowej; nie był to język programowania ogólnego przeznaczenia. Wiele z funkcji języka ogólnego przeznaczenia zostało później omówionych. (Miał działający system obiektowy tylko przez rok.)
Richie Cotton,
9
„Matlab jest od programistów dla programistów”: Mówisz poważnie? Jedyną rzeczą, która naprawdę mnie niepokoi w MATLAB-ie, jest to, że ktokolwiek wynalazł język, nie był programistą, biorąc pod uwagę skrajną niezręczność języka w niektórych sytuacjach.
Hannes Ovrén
13
R został stworzony przez statystyków, Matlab został stworzony przez inżynierów. Oba są w pełni zdolnymi językami programowania.
Sharpie
3
@smci Ostatni raz zamieniłem produkcyjny kod Matlaba na kod R w National Weather Service w 2008 roku i od tego czasu system działa bezbłędnie. Przetwarzanie w rdzeniu wielogigabajtowych zestawów danych przy użyciu algorytmów rekurencyjnych w żadnym wypadku nie jest zadaniem reprezentatywnym dla obliczeń naukowych jako całości i dlatego jest złym wyborem wzorca do formułowania ogólnych stwierdzeń dotyczących przydatności języka programowania.
Sharpie
2

Obsługa interaktywnej grafiki jest znacznie lepsza w Matlabie niż w R. Nienawidzę Matlaba jako języka, ale jestem zazdrosny, gdy widzę, jak jego użytkownicy mogą eksplorować dane za pomocą operacji myszy, podczas gdy jestem zajęty powtarzaniem poleceń z nowymi wartościami xlimitp. Matlab radzi sobie również z wielopanelowymi wykresami znacznie lepiej niż którakolwiek z metod języka R. Ogólnie grafika R ma klimat lat 60. Nadaje się do publikacji, ale nie jest najlepszym rozwiązaniem do interaktywnej eksploracji danych.

wilgotny
źródło
Jako intensywny użytkownik interaktywnych narzędzi do kreślenia obu systemów, zgodzę się co do granic (tj. Tak jak w przypadku obu mocno naciskam), ale prawdopodobnie przegapisz kilka bardzo przydatnych interaktywnych narzędzi do tworzenia wykresów w R. Sprawdź następujące pakiety : iplots, Acinonyx, manipulacja Rstudio i nie tylko. Dla zabawy obejrzyj ten przykład .
Iterator
„Grafika R ma klimat lat 60.” - to mogło być prawdą lata temu. W dzisiejszych czasach, dzięki ggplot2, który szybko zyskuje na popularności, wykresy R mają nowoczesny i piękny wygląd. Zobacz na przykład: r-bloggers.com/?s=ggplot
arielf