Analiza danych w programie MATLAB
Andrzej Barciński print
W pracy inżynierów, przed którymi stawiane są nowe wyzwania projektowe, mimo wielu oczywistych różnic wynikających ze specyfiki wyzwań, można znaleźć pewne ramy, wyznaczające schemat działania wielu z nich. Drogę do rozwiązania większości problemów, niezależnie od dziedziny nauki, której one dotyczą, można podzielić na kilka etapów.
Pierwszy etap to zebranie odpowiednich informacji, które są fundamentem dalszej pracy. Dane mogą być różnego typu. Mogą to być np. informacje o zmianie wartości prądu pobieranego przez silnik, dobowe wahania temperatury lub wartości instrumentów finansowych na giełdzie papierów wartościowych. Kolejny etap to przetworzenie surowych danych wejściowych, ich wstępna selekcja i filtrowanie. Tak przetworzone dane podlegają analizie – na podstawie obserwowanych przebiegów i wyznaczonych statystyk inżynier poszukuje zależności między danymi i próbuje określić „przepis” objaśniający, jakie procesy doprowadziły do pozyskania takich, a nie innych wyników.
Dalsza praca to stworzenie algorytmu przetwarzającego dane w pożądany sposób. Można przyjąć, że choć cele przyjęte przez inżynierów różnych specjalności bywają bardzo różne (od stworzenia algorytmu rozpoznawania ludzkiej mowy do wyznaczenia optymalnego napięcia sterującego pracą silnika), nieodmiennie wszyscy posługują się tym samym językiem matematyki. Ostatni etap pracy to stworzenie raportu z przeprowadzonej analizy lub – jeśli proces ma być powtarzany dla kolejnych porcji danych – stworzenie działającej aplikacji. Tak więc chociaż cele przyświecające inżynierom mogą być całkowicie odmienne, droga do ich realizacji jest dość podobna. Różne są natomiast narzędzia, które mogą posłużyć do realizacji celu.
Zestawienie dostępnych narzędzi analizy
Minęły czasy, gdy podstawowymi narzędziami pracy inżyniera były kartka i ołówek. Jakkolwiek te przedmioty są nadal użyteczne, dziś podstawowym narzędziem pracy inżyniera jest komputer wraz z odpowiednim oprogramowaniem. Choć mogłoby się wydawać, że nie sposób porównać ze sobą wszystkie dostępne na rynku narzędzia obliczeniowe, to można pokusić się o wskazanie kilku klas dostępnych rozwiązań.
Arkusz kalkulacyjny
Patrząc na najprostsze rozwiązania można zauważyć, że do analizy danych niekiedy wystarcza zwykły arkusz kalkulacyjny. Ogromną zaletą tego narzędzia jest sposób przedstawienia danych. Wczytując plik do arkusza kalkulacyjnego otrzymuje się dość dobry podgląd wszystkich dostępnych tam danych. Informacje ułożone są w tabeli, którą można edytować, w dość łatwy sposób wyznaczyć podstawowe statystyki i uzyskać wykresy wskazanych przebiegów. Problem pojawia się, gdy niezbędne staje się stworzenie zaawansowanych procedur selekcjonujących dane oraz algorytmów przetwarzania. Choć jest to możliwe, to tworzenie takich procedur w arkuszu kalkulacyjnym nie jest proste, a ponadto wykonywanie obliczeń jest niestety bardzo powolne. W tej kwestii nie można spodziewać się w przyszłości znaczącej poprawy, ponieważ mimo że w ostatnich dekadach sprzęt komputerowy stawał się coraz szybszy i wydajniejszy, to ilość danych, jaką się dysponuje, stając przed kolejnymi problemami obliczeniowymi, również staje się wielokrotnie większa.
07 - You do not have permission to view this object.
Specjalistyczne oprogramowanie
Dla większości inżynierów arkusz kalkulacyjny będzie narzędziem niewydajnym. Na rynku dostępna jest jednak całkiem bogata oferta specjalistycznych programów obliczeniowych, które dzięki pewnej automatyzacji pomagają użytkownikowi łatwo przejść etapy importu i selekcji danych. Mają również zaimplementowane gotowe funkcje obliczeniowe, które są wykonywane z przyzwoitą szybkością. Niedogodnością tego rozwiązania jest to, że programy te są w pewnym sensie „szyte na miarę”. Świetnie nadają się do realizacji określonych zadań, ale jeśli okaże się, że wymagane jest nietypowe podejście do selekcji danych lub przeprowadzenie dodatkowych obliczeń, użytkownik jest skazany na sięgnięcie po kartkę i ołówek, ewentualnie arkusz kalkulacyjny. W zasadzie prędzej czy później każdy inżynier natrafia na problem wymagający nieszablonowego podejścia, a wtedy taki gotowy program nie na wiele się zdaje.
Własny program
Problem szablonowego podejścia do problemu nie istnieje wtedy, gdy zamiast sięgać po gotowe rozwiązania inżynier sam tworzy program, który może pomóc w rozwiązaniu problemu. W zasadzie nie można w tym przypadku mówić o ograniczeniach – program stworzony na potrzeby projektu będzie przetwarzał dane w dowolnie określony przez programistę sposób, przy maksymalnym wykorzystaniu dostępnych zasobów sprzętowych. Stworzenie aplikacji z użyciem tradycyjnych języków programowania, takich jak C, Fortan i Java, nie jest jednak proste, a z całą pewnością bardzo czasochłonne. Wynika to przede wszystkim z tego, że inżynier tworzący aplikację nie może skupić się na rozwiązaniu problemu, a na aplikacji, którą tworzy.
MATLAB – środowisko obliczeniowe
Czy możliwe byłoby stworzenie środowiska obliczeniowego, które łączyłoby zalety przedstawionych wcześniej rozwiązań, przy jednoczesnej minimalizacji ich wad? W tym roku mija 30 lat od chwili, gdy inżynierowie firmy Mathworks podjęli taką próbę. Udało się stworzyć środowisko MATLAB, które oferuje użytkownikowi automatyzację rutynowych czynności (wczytanie danych, tworzenie przejrzystych wykresów i raportów), umożliwia wygodny podgląd danych, będących przedmiotem analizy oraz pozwala na wykorzystanie nie tylko licznych gotowych funkcji obliczeniowych, ale również wygodne tworzenie własnych procedur.
Korzyści z zastosowania środowiska MATLAB najlepiej zaprezentować w kontekście kolejnych etapów pracy inżyniera, przedstawionych na początku artykułu.
Wczytywanie danych
W pierwszej kolejności należy pobrać do środowiska obliczeniowego dane podlegające analizie. Warto zaznaczyć, że chociaż w MATLAB zaimplementowano mechanizmy w pełni automatyzujące proces importu danych z popularnych formatów plików (XLS, CSV, WAV, BMP i wielu innych), z powodzeniem można w półautomatycznym procesie odczytać dane z pliku o dowolnym innym formacie, niezależnie od tego, czy jest to plik binarny, czy tekstowy. Nie stanowi również problemu wskazanie jako źródła bazy danych lub specjalistycznego sprzętu pomiarowego. Ten ostatni może być również skonfigurowany i nadzorowany w procesie akwizycji bezpośrednio ze środowiska MATLAB. Jeśli dane ograniczają się do danych numerycznych, najwygodniej jest przechowywać je jako macierze liczbowe. W sytuacji, gdy w danych znajduje się również tekst, można je zapisać jako tabele. Ich przeglądanie w środowisku MATLAB jest równie proste, jak w przypadku arkusza kalkulacyjnego.
Obróbka i selekcja danych
Wczytane dane wymagają zwykle wstępnej obróbki. Różne rodzaje wykresów pozwalają na błyskawiczny podgląd dostępnych danych, ich pierwszą ocenę i wybór dalszej ścieżki postępowania. Użytkownik może zdecydować się na usunięcie niekompletnych danych pomiarowych lub na ich uzupełnienie z wykorzystaniem jednej z zaimplementowanych metod aproksymacji.
Kolejny etap to selekcja danych do dalszej analizy. Bardzo przydatna jest tutaj technika znana jako indeksowanie logiczne. W celu wyjaśnienia korzyści płynących z użycia tej techniki, nie wchodząc w szczegóły techniczne, warto posłużyć się przykładem. Wyobraźmy sobie zestawienie informacji dotyczących produkowanych współcześnie samochodów osobowych. W pliku z danymi znajdują się informacje o typie pojazdu, pojemności silnika, kolorze nadwozia, mocy itp. W przypadku zainteresowania np. zależnością między zużyciem paliwa a mocą silnika dla trzydrzwiowych pojazdów w kolorze czerwonym, o pojemności silnika większej niż 1400 cm3, można uzyskać pożądane informacje dzięki indeksowaniu logicznemu poprzez wywołanie w MATLAB pojedynczego polecenia!
Warto także poświęcić trochę miejsca na opis języka programowania dostępnego w MATLAB. O ile część operacji w środowisku można wykonać przy pomocy dostępnego interfejsu graficznego, o tyle najefektywniejszą pracę zapewnia wprowadzanie precyzyjnych poleceń przy pomocy klawiatury.
Język programowania
Język programowania MATLAB umożliwia pracę na macierzach i wektorach – strukturach, z którymi w swoich obliczeniach spotyka się większość inżynierów. Uczynienie z macierzy podstawowego typu danych dostępnych w środowisku sprawia, że zarówno projektowanie obliczeń, jak i same obliczenia są mało czasochłonne. Ponadto, przy tworzeniu poleceń w języku MATLAB, od użytkownika nie wymaga się wykonywania niskopoziomowych operacji, takich jak deklaracja zmiennych czy określanie typu danych, co znacznie ułatwia sprawę. Możliwość dokonywania operacji na macierzach sprawia, że w wielu przypadkach linia kodu MATLAB zastępuje kilkanaście linii kodu, pisanych w językach C lub C++. Linie poleceń odpowiedzialne za poszczególne etapy pracy w MATLAB są zazwyczaj umieszczane w jednym pliku tekstowym, nazywanym skryptem. Mimo licznych uproszczeń, MATLAB w razie potrzeby oferuje wszystkie funkcje nowoczesnego języka programowania, tj. pętle, wyrażenia warunkowe, struktury danych i klasy.
Modelowanie i tworzenie algorytmów
Kolejne etapy pracy, czyli modelowanie i opracowywanie algorytmów obliczeniowych, mogą być znacznie uproszczone dzięki zaimplementowanym w środowisku MATLAB i jego specjalistycznych przybornikach (Toolbox) algorytmom obliczeniowym. W zależności od tego, czy analiza jest związana np. z przetwarzaniem sygnałów, czy biostatystyką, użytkownik może sięgnąć po zestaw odpowiednich i sprawdzonych narzędzi, by przyspieszyć realizację zadania. Wszystkie dostępne funkcje obliczeniowe są szczegółowo udokumentowane, a ponadto każda ze znajdujących się w MATLAB funkcji jest w pełni przejrzysta dla użytkownika i może być przez niego w razie potrzeby edytowana.
Tworzenie raportów
Ostatni, wieńczący dzieło etap to stworzenie raportu z przeprowadzonych obliczeń. Jeśli użytkownik w poprzednich fazach pracy zadbał o wprowadzenie odpowiednich komentarzy tekstowych do swojego skryptu (co jest dobrym pomysłem, niezależnie od tego, w jakim środowisku obliczeniowym/programistycznym wykonywana jest praca), to może skorzystać z mechanizmu generującego raport z przeprowadzonych obliczeń. Odpowiednie efekty (pogrubienie czcionki, wypunktowanie itp.) można uzyskać wstawiając w tekście komentarza odpowiedni znacznik. Raport może zostać utworzony w postaci plików HTML, Word, LaTEX czy PDF.
Konkretne aplikacje
Zdarza się, że to nie raport jest głównym celem prowadzonej analizy, a działająca aplikacja. Taką aplikację również można opracować w środowisku MATLAB, co wymaga najczęściej modyfikacji istniejącego skryptu i uzupełnienia go o mechanizmy interakcji programu z użytkownikiem. Pomocne okaże się w tym przypadku narzędzie GUIDE, służące do opracowywania graficznego interfejsu użytkownika. Dzięki temu końcowym efektem pracy może być wygodna aplikacja, która nie potrzebuje do działania oprogramowania MATLAB, a jedynie udostępnianej bezpłatnie biblioteki MRE.
Miłosz Augustyński
OPROGRAMOWANIE NAUKOWO-TECHNICZNE
Keywords
matlab, obliczenia, ont, oprogramowanie, polecane, simulink, symulacje