Tabele w MATLAB

Tabele w MATLAB

W jednym z wcześniejszych wpisów zdarzyło mi się rozszyfrować nazwę programu MATLAB i wyjaśnić jej pochodzenie. Napisałem tam też, że pomimo licznych zmian, jakie zaszły w środowisku MATLAB przez ostatnie dekady, macierz to nadal podstawowy typ danych. Przechowywanie danych w macierzy jest najczęściej bardzo wygodnie i w wielu zastosowaniach po prostu naturalne. Nie jest tak jednak zawsze i są sytuacje, gdy zwykła macierz to za mało.

Zdarza się, że oprócz danych numerycznych do analizy otrzymujemy dane tekstowe (np. płeć osoby, kraj pochodzenia pojazdu itp.). Te informacje mogą być powiązane z innymi danymi liczbowymi, jednak w MATLABie nie można ich przechowywać razem w macierzy podstawowego typu. Dane liczbowe trafiają do macierzy liczbowych, dane tekstowe trafiają zazwyczaj w takich przypadkach do macierzy tekstowej lub macierzy typu cell. Kolejnym problemem może być ilość danych, jakie mamy do analizy. I nie chodzi mi w tym momencie o potencjalne problemy z pamięcią operacyjną komputera, a  o problemy z pamięcią operacyjną użytkownika. Jeśli analizujemy trzy różne zmienne, to przechowując je w macierzy n x 3 pewnie doskonale będziemy pamiętać, co gdzie jest. A co w przypadku gdy musimy operować na kilkunastu, kilkudziesięciu zmiennych? W arkuszach Excel w pierwszym wierszu mamy zazwyczaj podane nazwy zmiennych znajdujących się w kolejnych kolumnach tabeli. W MATLABie... może być podobnie!

Tabele w MATLABie można tworzyć na podstawie istniejących „zwykłych” macierzy, ale najczęściej można je zbudować już w momencie importu danych do środowiska. Weźmy na warsztat plik z kursami walut Narodowego Banku Polskiego za rok 2014. Po otwarciu import wizard musimy pamiętać o kilku istotnych zmianach, by dane zostały zapisane jako tabela.

import - tabela

Podczas procesu importu trzeba zmienić domyślne zaznaczoną opcje Column Vectors na Table. Należy także zmienić parametr Variable Names Row na 1 (co nie zostało oznaczone na powyższym zrzucie ekranowym). Po zakończeniu procesu importu w oknie workspace widać nowy obiekt, tabelę kursyNBP2014

Tabelę możemy w wielu przypadkach traktować jak zwykłą macierz. Jeśli, dla przykładu, chciałbym wyświetlić sobie kurs wymiany obowiązujący dla dolara amerykańskiego przez pierwsze 15 dni w roku, mogę to zrobić tak:

 USD = kursyNBP2014(1:15, 3)

Dane dotyczące dolara znajdują się w 3 kolumnie, co łatwo było określić już podczas importu. A co w przypadku franka szwajcarskiego? Żeby wyświetlić analogiczne dane, trzeba najpierw zidentyfikować kolumnę, w której się one znajdują. Szybkie otwarcie arkusza kalkulacyjnego i przeliczenie pozycji (można sobie pomóc ołówkiem, żeby nie zatłuścić paluchami monitora) pozwala zidentyfikować położenie danych dla CHF. To kolumna numer... żartowałem z tym liczeniem, nie wiem, która to kolumna. I nie muszę wiedzieć, jeśli korzystamy z tabeli w MATLABie. Można teraz zrobić coś takiego:

 CHF = kursyNBP2014(1:15, 'CHF')

albo jeszcze prościej:

 CHF_num = kursyNBP2014.CHF(1:15)

Dwie powyższe instrukcje, mimo że dają podobny efekt, nie są tożsame. W tym drugim przypadku, w wyniku wykonania polecenia w przestrzeni roboczej znalazła się "zwykła" macierz numeryczna. W przypadku polecenia pierwszego, otrzymujemy kolejną tabelę, tyle że mniejszą. Jest to o tyle istotne, że na tabelach nie można wykonywać dowolnych operacji, nie działają między innymi standardowe procedury obliczeniowe. Dane w pierwszej kolejności trzeba wypakować z tabeli, by wyznaczyć sobie choćby wartość średnią. Problemu wbrew pozorom nie ma, wystarczy w momencie sięgania po dane w tabeli skonwertować je na typ podstawowy. Robi się to stosując nawiasy klamrowe w miejscu nawiasów okrągłych.

 CHFUSD = kursyNBP2014{1:15, {'CHF', 'USD'}}

Nie trzeba dokładnie pamiętać nazw wszystkich zmiennych, jakie znajdują się w tabeli. Po pierwsze, można je wypisać wprowadzając polecenie:

 kursyNBP2014.Properties.VariableNames

Po drugie, w MATLABIE bardzo dobrze działa system podpowiedzi. Wystarczy, że zaczniemy wpisywać pierwsze litery funkcji czy też nazwy zmiennej i wciśniemy tabulator. MATLAB podpowie resztę. Jak chcemy wyciągnąć dane dotyczące filipińskiego peso, to wpisujemy kursyNBP2014.p, tabulator i ...

podpowiadacz

(Visited 4 039 times, 1 visits today)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *