Porównanie środowiska R z środowiskiem MatLab 7.1 MATLAB jest środowiskiem obliczeniowym przeznaczonym dla inżynierów i naukowców, umożliwiającym przeprowadzanie obliczeń matematycznych, analiz numerycznych, wizualizacji otrzymanych wyników (2D, 3D). Posiada swój język programowania, co umożliwia tworzenie algorytmów oraz pisanie w pełni funkcjonalnych programów. Trochę historii Początki Matlab-a sięgają lat 80-tych. Cleve Moler napisał program, który umożliwiał korzystanie z bibliotek języka Fortran do obliczeń macierzowych: Linpack i Eispack, bez potrzeby programowania w Fortranie. Programik ten napisany (także w Fortranie) w formie prostego interaktywnego języka poleceń i rozprowadzany na zasadach public domain był pierwowzorem Matlaba. W 1985 roku pojawiła się pierwsza wersja programu, wydana przez firmę The MathWorks Inc., która do dziś zajmuje się rozwojem i sprzedażą pakietu Matlab. R-PROJECT stanowi zintegrowany zestaw narzędzi programowych przeznaczonych do obliczeń statystycznych, analiz numerycznych, wizualizacji wyników (2D, 3D). Posiada język programowania S, który zapewnia tworzenie własnych algorytmów. Trochę historii Twórcami R są Robert Gentleman i Ross Ihaka, znani jako "R & R" (stąd nazwa programu). Od 1997 roku środowisko rozwija się dzięki wspólnej pracy wielu osób z całego świata. Matlab - Informacje ogólne Nazwa programu pochodzi od angielskich słów MATrix LABoratory, gdyż początkowo program przeznaczony był do numerycznych obliczeń macierzowych. Obecnie program ten zawiera wiele narzędzi zgrupowanych w pakiety, które ukierunkowane są na różne obszary zastosowań. Pakiety te tworzą biblioteki dodatkowe (ang. Toolbox) przeznaczone na przykład do: Strona 1 z 11
analiz i obliczeń finansowych Financial Toolbox przetwarzania obrazów Image Processing Toolbox Narzędzia informatyczne w badaniach naukowych analiz informacji geograficznych i wyświetlania map, z możliwością dostępu do zewnętrznych źródeł geograficznych Mapping Toolbox projektowania i symulacji sieci neuronowych Neural Network Toolbox rozwiązywania szerokiej gamy zadań statystycznych, począwszy do generowania liczb losowych, poprzez dopasowywanie krzywych, projektowanie eksperymentów statystycznych, a skończywszy na sterowaniu procesami statystycznymi Statistic Toolbox Szczegółowe informacje można znaleźć na stronie www.mathworks.com. Oprócz bibliotek oferowanych przez firmę The MathWorks Inc. istnieje wiele dodatkowych pakietów dostępnych między innymi na oficjalnej stronie wymiany plików Matlaba - Matlab Central An open exchange for the MATLAB and Simulink user community www.mathworks.com/matlabcentral/fileexchange. R - Informacje ogólne R jest również środowiskiem opierającym się na szerokiej gamie bibliotek. Wersja podstawowa obejmuje 25 skrzynek narzędziowych tworzących pakiet podstawowy. Wiele innych dostępnych jest na stronie www.cran.r-project.org. Interfejs programu Oba środowiska działają w systemie komend - poleceń. W przypadku R mamy do dyspozycji jedno okno tj. okno komend (R Console). W przypadku Matlaba główne okno podzielone jest na trzy obszary: Okno Komend (Command Window) Okno Przestrzeni Roboczej (Workspace) składające się z dwóch zakładek: Workspace, w którym wyświetlane są zmienne (nazwa, rodzaj obiektu, typ, wymiar) i Current Direktory, który zawiera listę wszystkich plików znajdujących się w bieżącym katalogu roboczym Okno Historii (Command History), które zawiera listę ostatnio stosowanych komend. Strona 2 z 11
Workspace Command Window Command History Rys.1 Główne okno programu Matlab Organizacja środowiska pracy w Matlab ie jest bardziej przyjazna niż w R, gdyż pozwala na łatwe monitorowanie pojawiających się zmiennych, szybki podgląd ich wartości (dwuklik) oraz wizualizację (pasek narzędzi). Okno Komend pozwala na wygodny wgląd w polecenia i powtórne wykonanie dowolnego z nich. Oba środowiska pozwalają na powrót do poprzednich poleceń wykonanych w danej sesji (klawisze strzałek). W przypadku R mamy możliwość zapisu wszystkich zmiennych powstałych w danej sesji (.Rdata) oraz wszystkich poleceń (.Rhistory). W Matlab ie mamy możliwość zapisu dowolnych zmiennych (.mat). Nie ma specjalnego polecenia do zapisu historii (można ją zachować w pliku.m) Wprowadzanie poleceń Matlab Po pojawieniu się symbolu >> w oknie komend możemy wpisać dowolne polecenie kończąc je średnikiem i akceptując klawiszem ENTER. Przy braku średnika wynik zostanie wyświetlony na ekranie. R Po pojawieniu się symbolu > w oknie komend możemy wpisać dowolne polecenie, akceptując je klawiszem ENTER. Definiowanie zmiennych Matlab Wszelkie wprowadzane i deklarowane dane (liczby, tekst) są traktowane jako macierz. Nawet pojedyncza liczba jest macierzą o wymiarze 1x1. Charakterystyczne dla języka programowania Matlaba jest automatyczne rozpoznawanie typów zmiennych - nie Strona 3 z 11
występuje deklaracja typu. Typ zmiennej rozpoznawany jest przy jej pierwszym użyciu, należy tylko odpowiednio ją wywołać. Typ Wywołanie double a=1 (a=[1]) char a='napis' sparse a=sparse(1) struct a.składnik=1 cell a={1} Dowolną macierz zawierającą liczby można przekonwertować na zmienną typu logicznego logical(nazwa_zmiennej). Różne dane (liczby, tekst, macierze) można gromadzić w macierzach typu strukturalnego (struct) lub w macierzach typu komórkowego (cell). R Podstawowymi obiektami są wektor, tablica, macierz, lista, data.frame (obiekt złożony). Każdy z tych obiektów może mieć typ numeryczny (double), całkowity (integer), logiczny (logical), tekstowy (char). Typ zmiennej jest również rozpoznawany przez R przy jej pierwszym użyciu. W obu środowiskach przy deklarowaniu zmiennych istnieje rozróżnienie między dużymi i małymi literami. Ładowanie bibliotek dodatkowych Matlab biblioteka jest gotowa do wykorzystania po umieszczeniu jej w katalogu o nazwie work, który tworzy się przy instalacji Matlaba. R biblioteka jest gotowa do wykorzystania po umieszczeniu jej w katalogu library, który tworzy się przy instalacji R, i wpisaniu w oknie komend polecenia library (nazwa_biblioteki). Wizualizacja danych Oba środowiska umożliwiają wizualizację danych 2D, 3D oraz zapis wykresów w dowolnym formacie graficznym. Matlab Wizualizacja danych w postaci wykresów realizowana jest poleceniem plot(x,y). Wykres wyświetlany jest w osobnym oknie. W przypadku, gdy chcemy wyświetlić kilka zestawów danych na jednym wykresie, po każdym wywołaniu funkcji plot() wpisujemy polecenie hold on. Strona 4 z 11
Dane przestrzenne można zobrazować wykorzystując funkcję mesh(macierz), otrzymujemy wówczas model wireframe lub poleceniem surf(macierz) otrzymując model powierzchniowy. Dane przestrzenne można zobrazować w postaci warstwic - polecenie contour(macierz). Funkcją pozwalającą na wizualizację dowolnych danych w jednym oknie różnymi sposobami prezentacji, jest polecenie subplot(ilość_wierszy, ilość_kolumn, numer_pola), które dzieli okno na ilość_wierszy x ilość_kolumn części. Rys 2. Przykład zastosowania polecenia subplot() - Matlab R Wykresy funkcji możemy tworzyć w dwojaki sposób poleceniem plot(x,y), które umożliwia wyświetlenie pojedynczej funkcji oraz poleceniem curve(sin(x),min,max,add=t), które pozwala na rysowanie dowolnej ilości funkcji na jednym wykresie. Wizualizacja danych przestrzennych realizowana jest poleceniem persp(x,y,z). Odpowiednikiem funkcji subplot() jest polecenie par(mfrow=c(ilość_wierszy,ilość_kolumn)), które dzieli przestrzeń wizualizacji na ilość_wierszy x ilość_kolumn części. Wykresy wyświetlane są w kolejności od prawej do lewej, zaczynając od lewego górnego obszaru. Strona 5 z 11
Rys 3. Przykład zastosowania polecenia par() - R Tworzenie funkcji Matlab Umożliwia zapis pewnej liczby poleceń w postaci funkcji. Funkcje zgromadzone są w plikach z rozszerzeniem.m (pliki skryptowe) i mogą posiadać dowolną liczbę parametrów wejściowych oraz dowolną ilość obiektów wyjściowych. function [wynik]=nazwa(parametry) lista poleceń oddzielona średnikami W starszych wersjach Matlaba w jednym pliku mogła znajdować się tylko jedna funkcja. Obecnie w jednym pliku może znajdować się wiele funkcji, wywołując m-plik wywoływana jest pierwsza funkcja w pliku. M-pliki funkcyjne są programami działającymi w środowisku Matlaba. R Również umożliwia zapis dowolnej ilości poleceń w postaci funkcji (pliki.r). Funkcja może posiadać dowolną ilość parametrów wejściowych oraz dowolną ilość obiektów wyjściowych. Wyniki muszą się jednak znajdować w ostatniej linii funkcji. Polecenia realizowane w ramach danej funkcji zawarte są w nawiasach klamrowych {}. wynik=function(parametry) { lista polecenia wynik } Strona 6 z 11
R-pliki są więc programami działającymi w środowisku R. Zarówno w środowisku R jak i w środowisku Matlab, przy tworzeniu plików skryptowych, mamy dostępne instrukcje warunkowe oraz pętle. W przypadku Matlaba listę poleceń realizowaną przez instrukcję kończymy wpisując end, w R zamykamy ją w nawiasie klamrowym {}. Matlab R if (warunek) if (warunek) { Lista poleceń Lista poleceń end } W plikach skryptowych możemy umieszczać komentarz: dla R komentarz oznaczamy umieszczając na początku linii podwójny hash ##, w przypadku Matlaba jest to znak procent %. Tworzenie plików skryptowych jest bardziej przyjazne w Matlab ie ze względu na rozróżnienie kolorem komentarzy od poleceń oraz kluczowych wyrazów. % Tu umieszczamy komentarz, który wyświetli się w Oknie Komend po wywołaniu polecenia help(nazwa) function [wynik]= nazwa(zmienne) %Dowolny Komentarz if (warunek) polecenie1; polecenie2; else polecenie3; end Tworzenie GUI (graficznego interfejsu użytkownika) Matlab Środowisko Matlab umożliwia nie tylko definiowanie własnych funkcji, ale również tworzenie do nich interfejsu graficznego. Można go zdefiniować na dwa sposoby. Pierwszy to określenie parametrów formatki oraz rozmieszczenia i wymiaru wszystkich elementów w pliku *.m wraz z funkcją. Drugi to wykorzystanie narzędzia GUIDE, w którym formatkę buduje się z klocków, pod którymi umieszcza się odpowiednie funkcje. Dzięki temu można stworzyć własny program o standardowym interfejsie. R - Dodatkowa biblioteka gwidgets pozwala na budowę interfejsu graficznego w systemie poleceń. Strona 7 z 11
Przestrzeń formatki Elementy Rys 4. Okno narzędzia GUIDE - Matlab Rys 5. Przykładowa formatka zbudowana przy wykorzystaniu narzędzia GUIDE Matla Tworzenie zewnętrznych aplikacji Matlab Napisana w Matlab ie aplikacja działa wyłącznie w jego środowisku. Aby mogła być wykorzystywana samodzielnie należy skompilować ją do pliku.exe, co Matlab umożliwia. Help Matlab Posiada świetnie zorganizowany Help w formie przeglądarki. Przeszukiwanie możliwie jest w czterech trybach: przeszukiwanie bibliotek (Contents), przeszukiwanie po Strona 8 z 11
nazwach funkcji (Index), poszukiwanie fraz i poszukiwanie kontekstowe w treści pomocy (Serach) oraz przeszukiwanie funkcji i aplikacji demonstracyjnych (Demos). Każda funkcja opisana jest szczegółowo z przykładami jej stosowania oraz w przypadku funkcji matematycznych podstawami teoretycznymi. Rys 6. Okno pomocy R cyt. Cała sztuka używania R to znajomość nazw funkcji (dr hab. inż. Krystian Pyka). R umożliwia przeszukiwania plików pomocy po nazwach funkcji apropos(nazwa_funkcji) oraz po frazach help.search( fraza ). Interesujących bibliotek możemy szukać z wykorzystaniem przeglądarki zamieszczonej na stroni R Project. Jednak wyszukiwanie funkcji potrzebnych do rozwiązania danego zagadnienia nastręcza o wiele więcej trudności niż w Matlab ie. Matlab na przykładzie wybranych lekcji Lekcja 1 Przykład 1: Matlab jako kalkulator >> 5+5 ans = 10 >> sin(pi/4)^4 ans = 0.2500 Przykład 2: przypisanie wartości zmiennej utworzenie wektora >> a=68 a = 68 Strona 9 z 11
>> wektor=rand(1,5) wektor = 0.7621 0.4565 0.0185 0.8214 0.4447 >> sekwencja=(1:2:10) sekwencja = 1 3 5 7 9 Przykład 5: definiowanie macierzy >> macierz2d=rand(2,2) macierz2d = 0.2548 0.2324 0.8656 0.8049 >> macierz3d=rand(2,2,2) macierz3d(:,:,1) = 0.9084 0.2393 0.2319 0.0498 macierz3d(:,:,2) = 0.0784 0.1909 0.6408 0.8439 Lekcja2 Przykład 6: przykładowe obiekty - tworzenie macierzy komórkowej >> cell={rand(2,2),ones(2,2)} cell = [2x2 double] [2x2 double] >> cell{1,1} ans = 0.1739 0.9943 0.1708 0.4398 >> cell{1,2} ans = 1 1 1 1 Przykład 7: Mediana jako przykładowa wartość statystyczna >> madiana=median(macierz2d) mediana wyznaczana jest dla każdej kolumny macierzy madiana = 0.5602 0.5186 >> madiana=median(median(macierz2d)) mediana macierzy madiana = 0.5394 Przykład 8: Rozkład macierzy >> s = svd(macierz2d) s = 1.2312 0.0032 Przykład 9: Wykresy funkcji zapis do pliku >> x=[-pi:0.5:pi]; >> y=sin(x); >> z=sin(x).^2+tan(x)/2; >> figure(2),plot(x,y,'color','r'); hold on, plot(x,z,'color','b'), title 'Wykresy funkcji',legend('sin(x)','sin(x)^2+tan(x)/2','location','northeastoutside'); >> saveas(gcf,'wykres.pdf'); Strona 10 z 11
Lekcja 3 Przykład 10: Rozwiązanie układu równań >> A2=dlmread('A2.txt'); >> B2=dlmread('B2.txt'); >> B2=B2'; transpozycja macierz B2 >> wyn=(a'*a)^-1*(a'*b2); >> wyn wyn = 1.2500 1.7500 3.0000 Lekcja 4 Przykład 11: Zapisywanie do pliku tekstowego >> dlmwrite('a2.txt', A2,'precision', '%.0f','-append', 'delimiter', ' ','newline', 'pc'); Podsumowanie Podstawowa konfiguracja Matlaba jest dużo bogatsza niż R. Znalezienie interesującej biblioteki w przypadku R wymaga od użytkownika poświęcenia większej ilości czasu, podczas gdy w większości przypadków Matlab jest w taką bibliotekę zaopatrzony (pomijając biblioteki przeznaczone do bardzo wąskich rozwiązań). Dużym minusem R jest Help, który ze względu na mnogość i różne rozmieszczenie pakietów, nie spełnia oczekiwań początkującego użytkownika. Jednak dużym plusem i przewagą R - Project jest darmowy dostęp do środowiska. Trudno jest porównać oba środowiska ze względu na ich złożoność. Wybór pomiędzy nimi jest silnie uzależniony od bogactwa biblioteki, które ma nam pomóc w osiągnięciu celu do jakiego dążymy. Strona 11 z 11