MATLAB AUTOMATYCZNY IMPORT DANYCH Z PLIKÓW

W poprzednim wpisie była mowa o tym jak korzystać z kreatora importu danych. Tym razem zajmiemy się automatycznym importem danych z wielu plików, które znajdują się na dysku komputera.

Jeżeli jeszcze nie czytaliście poprzedniego wpisu, to jest dobry moment by nadrobić zaległości, gdyż obecnie wykorzystamy stworzone tam funkcje importu.

Często mamy do czynienia z sytuacją gdy dane są przechowywane w podzielonych porcjach – osobnych plikach, które mogą reprezentować różne rodzaje pomiarów albo ten sam pomiar podzielony np. na kolejne dni czy miesiące rejestracji. Takich plików mogą być dziesiątki lub setki i ręczne ich wczytywanie do MATLABa nie wchodzi w grę. Na szczęście mamy do dyspozycji narzędzia, które w prosty sposób pozwolą zautomatyzować ten proces.

Załóżmy, że chcemy wczytać wszystkie pliki o rozszerzeniu tsv, które znajdują się w danym katalogu. Będą to dane z poprzedniego wpisu, które pochodzą ze stacji monitoringu natężenia ruchu drogowego na drodze krajowej numer 79. Przyjrzyjmy się poniższemu fragmentowi programu:

% Ścieżka do folderu, z którego wczytujemy pliki
Folder = 'C:\Users\Piotr .... \ '; % Tu trzeba wpisać poprawną ścieżkę 
% Dodajemy "filtr" na pliki z rozszerzeniem tsv
Zrodlo_danych = fullfile(Folder, '*.tsv'); 
% Wylistowanie zawartości folderu o specyfikacji zawartej w Zrodlo_danych
Pliki = dir(Zrodlo_danych);

W rezultacie dostaniemy zmienną ‘Pliki’, która zawiera listę interesujących nas plików o rozszerzeniu tsv. W tej strukturze jest nie tylko nazwa plików, ale również ścieżka dostępu, data utworzenia i rozmiar. Do poszczególnych pól zmiennej może się dostać przez indeksowanie za pomocą kropki:

Pliki.name
ans = 'pl-dk79kochanow-kat-2013-05-13.tsv'
ans = 'pl-dk79kochanow-kat-2013-05-14.tsv'
ans = 'pl-dk79kochanow-kat-2013-05-15.tsv'
ans = 'pl-dk79kochanow-kat-2013-05-16.tsv'

W tym przypadku mamy tylko 4 pliki, ale równie dobrze mogłoby ich być więcej.

Zwróćcie uwagę, że tym sposobem otrzymujemy listę nazw plików, których nazwy nie musimy znać – MATLAB sam je odczytał za nas. Stąd jest już krótka droga do automatycznego wczytania zawartości plików do przestrzeni roboczej za pomocą funkcji np. load lub jak w tym przypadku uprzednio stworzonej funkcji za pomocą kreatora importu.

% Zmienna, w której znajdą się wszystkie, sekwencyjnie wczytywane dane
rawdata = [];

for fileNo = 1:length(Pliki)
    % Możemy wyświetlać nazwę pliku w Commnad Window
    Pliki(fileNo).name
    % importFileDK79() - to funkcja, utworzona w kreatorze importu, która
    % jako argument przyjmuje nazwę pliku
    tempData = importFileDK79(Pliki(fileNo).name);       % Jeżeli importuje temp. z 1go czujnika
    % Tu składujemy połączone z plików dane
    rawdata = [rawdata; tempData];
end

Tym prostym sposobem proces wczytywania danych z wielu plików został zautomatyzowany. Jest to jedna z metod, która sprawdza się w prostych przypadkach. Archiwum z danymi i gotowym programem znajdziecie tutaj – można je potraktować jako punkt wyjścia do własnych eksperymentów. Powodzenia!

(Visited 85 times, 1 visits today)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *