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.

Zamiast danych syntetycznych można użyć danych rzeczywistych.

Zadanie praktyczne

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

    Przygotowałem kolejny zestaw danych przykładowych.

  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