Laboratorium 1: Wprowadzenie, Matlab, Mathematica, różniczkowanie i całkowanie numeryczne

Cel zajęć

  1. Wprowadzenie do przedmiotu..

  2. Przypomnienie/zapoznanie się z programami Mathematica i Matlab.

  3. Generowanie danych „syntetycznych" o zadanych parametrach.

  4. Wykresy funkcji i danych.

  5. Algorytmy różniczkowania numerycznego przebiegów czasowych.

  6. Algorytmy całkowania numerycznego przebiegów czasowych.

Zadania do wykonania

  1. Zapoznanie się z elementarną dokumentacją systemów Mathematica i Matlab — przed zajęciami.

  2. Przećwiczenie podanych przykładów.

  3. Zapoznanie się z dokumentacją on-line obu systemów (w przypadku Matlaba dostępne są również programy demonstracyjne).

  4. Przypomnienie sobie wzorów na numeryczne różniczkowanie (hint: iloraz różnicowy) i całkowanie (hint: metoda prostokątów, metoda trapezów).

  5. Wygenerowanie „syntetycznych" zestawów danych i sprawdzenie procedur całkowania/różniczkowania.

  6. Wygenerowanie syntetycznych zestawów danych (zaburzonych szumem o rozkładzie normalnym o średniej zero i  zadanej wariancji) oraz sprawdzenie procedur całkowania/różniczkowania i zbadanie wpływu wariancji na wyniki.

Zadanie praktyczne

  1. Wczytać dane przykładowe1 lub inne dane przykładowe.

  2. Narysować wykres danych.

  3. Na wykresie inteligentnie zaznaczyć okresy wzrostu i spadku mierzonej wartości (użyć do tego pochodnej?)

Uwaga: wszystkie dane są skompresowane, w formacie xz. Po kliknięciu w plik o tym rozszerzeniu powinno automatycznie uruchomić się oprogramowanie pozwalające dostać się do zawartości pliku.

Format pierwszego zestawu danych danych

Dane pochodzą z pomiarów temperatury, ciśnienia atmosferycznego, wilgotności względnej oraz jasności światła z czujnika „wystawionego za okno". Okno było od strony południowo-wschodniej więc, z oczywistych względów, dane nie mogą być traktowane jako wiarogodne. Pomiary realizowane są co pięć minut z czujnika TI CC2650 SensorTag.

Format danych (CSV)2 jest następujący:

2015-09-27 17:15:00 CEST , 1443366900 , 1.6820185584e+01

Pierwsza kolumna to czas w postaci czytelnej, druga — tak zwany unix time stamp, a trzecia to zmierzona wartość. Gdy zamiast zmierzonej wartości pojawi się NaN oznacza to, że brakuje pomiaru. Taki punkt powinien „wypaść" z danych.

Dane pochodzą z systemu RRDtool, który dane zapisuje w specyficznych bazach danych wykorzystując format Round Robin Archives, który pozwala przechowywać najaktualniejsze dane z ostatniego okresu (na przykład doba) i skonsolidowane dane z okresów dłuższych — tydzień, miesiąc, rok. Stąd pojawiające się zestawach danych informacje typu:

--- AVERAGE 300

określają typ konsolidacji (może to być oprócz AVERAGE — MIN lub MAX) oraz okres konsolidacji (w sekundach: 300, 1800, 86400, 2678400). Dane nawet jeżeli pojawiają się częściej są uśredniane.

Przygotowałem prost program w języku awk do „rozpakowania” tego pliku danych.

Jak ,,rozpakować’’ zane z pierwszego zestawu opisałem w dziale FAQ.

Format drugiego zestawu danych

W srugim przypadku dane pochodzą z osobistej stacji pogodowej Netatmo. Pomiary robione były na zewnątrz i wewnątrz pomieszczeń. Mierzone było ciśnienie atmosferyczne (tylko wewnątrz) temperatura, poziom szumu (tylko wewnątrz) i wilgotność.

Pliki zawierają dane mierzone „dosyć gęsto", ale okres próbkowania jest niejednostajny.

W przypadku szumu, oprócz znacznika czasu (TimeStamp) jest czas podany w formie tekstowej oraz wartość mierzonego parametru. Separatorem jest średnik.

Timestamp;"Timezone : Europe/Warsaw";noise
1485903709;"2017/02/01 00:01:49";36

W przypadku innych parametrów będzie identycznie. Separatorem części ułamkowej (jeżeli występuje) jest kropka.


  1. Warto trochę popracować nad wyborem danych, aby nie było wśród nich zbyt wielu wartości NaN! ↩︎

  2. Comma Separated Values. ↩︎

Następny