MATLAB – KURS PODSTAWOWY #3 –TYPY DANYCH

Pisząc pierwsze programy w MATLABie, często intuicyjnie tworzymy zmienne, które wypełniamy różnymi typami danych. Nie zawsze robimy to świadomie, licząc na to, że MATLAB, „myśli” podobnie jak my. Jednak, przy bardziej zaawansowanych programach, dobra znajomość typów danych oraz operacji jakie można na nich wykonywać, jest niezbędna do poprawnego programowania. Zapraszam na kolejny odcinek Kursu Podstawowego!

Nadrzędnym obiektem, swego rodzaju pojemnikiem na dane, jest w MATLABie tablica. W zależności od rozmiaru, może ona przyjmować postać skalara (rozmiar 1x1), macierzy (rozmiar NxM), tablicy wielowymiarowej (rozmiar NxMxKx…) lub obiektu, który nic nie zawiera, czyli tablicy pustej. W powszechnej nomenklaturze, rzadko jednak posługujemy się pojęciem ‘tablica’, które zwyczajowo zamieniamy na pojęcie ‘zmienna’. Formalnie nie jest to do końca uprawnione, jednak tak się już przyjęło. Mówimy więc, że tworzymy zmienną o rozmiarze 1x1 lub zmienną zawierającą macierz o rozmiarze NxM.

Tworząc zmienną, niezależnie czy jest to skalar, macierz czy macierz wielowymiarowa, uzupełniamy jej elementy konkretnym typem danych. Najczęściej są to liczby, jednak równie dobrze możemy zawartość zmiennej wypełnić tekstem, lub wartościami logicznymi. To determinuje typ zmiennej.

Każda zmienna, niezależnie od jej wymiaru, może więc przyjąć jeden ze zdefiniowanych w MATLABie typów (klas) danych. Poniżej, są wymienione najczęściej używane typy danych, wraz z ich krótkim opisem, oraz uporządkowaniem wiedzy na temat sposobów odwoływania się do elementów zmiennej danego typu.

Typ numeryczny (numeric)

Jest to podstawowy i zapewne najczęściej używany typ danych w MATLABie, służący do przechowywania liczb. Przypisując jakąkolwiek liczbę zmiennej, automatycznie definiujemy jej typ na numeryczny. Domyślnie liczby w MATLABie są zmiennoprzecinkowe o podwójnej precyzji. Więcej na temat tworzenia zmiennych tego typu oraz odwoływania się do elementów macierzy numerycznych można znaleźć w poprzedniej części tego kursu.

Tworzenie:
Liczby = [element1, element2, … ; elementN];

Odwoływanie do elementów:
Liczby(indeks);

Typ tekstowy (character)

Jest to typ danych służący do przechowywania danych tekstowych. Rozróżnia się tutaj:

  • Tablice znaków (character array), które są pojemnikiem dla pojedynczych znaków, tak jak macierz typu numerycznego jest pojemnikiem dla pojedynczych liczb.

    Tworzenie
    Tekst = ‘Akademia’

    Odwoływanie do elementów:
    Tekst(indeks)

  • Tablice ciągów znaków tzw. łańcuchy (string array) – służące do przechowywania fragmentów tekstu.

    Tworzenie
    Tekst = "Akademia"

    Odwoływanie do elementów:
    Tekst(indeks)

Jaka konkretnie jest różnica pomiędzy tymi dwoma typami danych tekstowych najlepiej sprawdzić na przykładzie. Tablice znaków tworzymy przez umieszczenie znaków pomiędzy apostrofami, np. ‘Akademia’, a ciągi poprzez umieszczenie wyrazów pomiędzy cudzysłowami, np. "Akademia". Różnice od razu widać w workspace.

Komórki (cel array)

Typ danych umożliwiający przechowywanie różnych typów danych w jednej zmiennej. To znaczy, że jedna zmienna tego typu może zawierać dane numeryczne, tekstowe, a nawet inne tablice komórek. Ten typ danych jest przydatny wtedy, gdy w jednej strukturze chcemy przechowywać dane różnego rodzaju. Dostęp do danych w komórce jest taki jak w zmiennych numerycznych czyli przez indeksowanie.

Tworzenie:
Komorka = cell(rozmiar); % tworzy pustą zmienną o rozmiarze ‘rozmiar’
Komorka = {element1, element2, …. ; elementN} % bezpośrednie uzupełnienie komórek

Odwoływanie do elementów:
Komorka(indeks); % nowa zmienna będzie typu komórka
Komorka{indeks}; % nowa zmienna będzie takiego typu jak element komórki do którego się %odwołujemy

Typ tabela (table)

Względnie nowy, ale bardzo wygodny w użyciu typ danych w MATLABie. Tabele są podobne do komórek pod tym względem, że umożliwiają przechowywanie różnych typów danych w jednej zmiennej, ale w sposób w jaki znamy to z arkuszy kalkulacyjnych. Dane zawarte w tabeli, muszą więc mieć uporządkowaną strukturę kolumnową, czyli kolejne kolumny mogą zawierać zmienne dowolnych typów, a wiersze reprezentują kolejne rekordy/próbki/dane pomiarowe. Ten typ danych często jest używany do przechowywania danych statycznych lub pomiarowych, gdzie pierwsza kolumna reprezentuje wektor czasu, a kolejne kolumny to mierzone wielkości. Wielką zaletą tabel jest to, że kolumnom (ale również wierszom ) można nadawać nazwy symboliczne np. ‘czas’, ‘temperatura’ i przez nie odwoływać się do poszczególnych elementów. Nie musimy więc pamiętać, że 23 kolumna tabeli to zmierzona wartość prądu. Wystarczy nadać tej kolumnie nazwę ‘prad’ i ten sposób się do danych odwoływać.

Tworzenie:

  • Jest wiele metod tworzenia tabeli, m.in.: przez funkcję table i wpisanie elementów tabeli ręcznie, przez użycie funkcji wczytującej dane tabelaryczne, np. readtable, przez użycie kreatora importu danych z plików, przez konwersję danych innych typów, itp. Podstawowy sposób to:
    Tabela = table(zmienna1, zmienna2, … , zmiennaN);

Odwoływanie do elementów:

  • Tabela(indeks)
  • Tabela(‘nazwa_zmiennej’) %!! To bardzo wygodne
    Podobnie jak przy komórkach, użycie nawiasów okrągłych powoduje, że nowo utworzona zmienna również jest tabelą.
  • Tabela{indeks}
  • Tabela{‘nazwa_zmiennej}
    Użycie nawiasów zafalowanych powoduje, że nowa zmienna będzie takiego typu jak element tabeli do którego się odwołujemy.
  • Tabela.nazwa_zmiennej(indeks)
    Użycie nazwy zmiennej po kropce, daje taki efekt jak użycie nawiasów zafalowanych, czyli typ nowej zmiennej zależy od typu przechowywanego w danej komórce tabeli.

Oprócz wymienionych powyżej typów danych MATLAB oferuje również inne, te bardziej specyficzne. Więcej na temat wszystkich typów danych, tworzenia zmiennych i odwoływania się do ich elementów znajdziecie w przykładach przytoczonych na filmie.

(Visited 1 748 times, 1 visits today)

Dodaj komentarz

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