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?
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?
Odpowiedzi:
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.
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).
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
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.
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.
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.
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.
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).
Nie możemy, ponieważ tego oczekują / wymagają nasi klienci.
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.
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.
R
to język programowania.
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 xlim
itp. 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.