Matlab: Hromadné spracovanie dát

**Prečítajte si aj:** [Zber akcelerometrických dát 2.0](/zber-akcelerometrickych-dat/)
**Úloha:**
Hromadný export .csv súborov obsahujúcich akcelerometrické dáta do Matlab-u pomocou funkcie **datacsvread***.
**Možné riešenia:**
csv_struct = dir('*.csv');
NMdata = {};
for i = 1:length(csv_struct)
    NMdata{i} = datacsvread(csv_struct(i).name);
end
Prvý príkaz v poradí nám vráti **zoznam všetkých .csv súborov** nachádzajúcich sa v aktuálnom adresári. Názvy týchto súborov sú uložené v premennej csv_struct typu "struct array", konkétne v poli s názvom **name**. Druhým príkazom vytvoríme prázdny "cell array". Pomocou for slučky naplníme prázdny "cell array" výstupmi z funkcie datacsvread. Vstupnými argumentami do tejto funkcie sú názvy jednotlivých .csv súborov, ku ktorým pristupujeme pomocou **indexovania cez okrúhle zátvorky a operátora "."**.
NMdata = {};
for i = 1:30
    filename = sprintf('NM%d.csv', i);
    NMdata{i} = datacsvread(filename);
end
Na začiatku vytvoríme prázdny "cell array". Prvým príkazom vo for slučke priradíme pomocou funkcie **sprintf** premennej **filename** názov konkrétneho .csv súboru nachádzajúceho sa v adresári. Druhým príkazom vo for slučke naplníme prázdny "cell array" výstupmi z funkcie datacsvread. Vstupným argumentom do funkcie je stále názov .csv súboru.
NM_data = [];
for i = 1:30
    NM.name = 'Natalia Mikusova';
    NM.datetime = datestr(now);
    filename = sprintf('NM%d.csv', i);
    NM.data = datacsvread(filename);
    NM_data = [NM_data, NM];
end
Prvým príkazom vytvoríme prázdne pole. Vo for slučke budeme pridávať obsah premennej NM typu "struct array". NM bude obsahovať tri samostatné polia: **name, datetime a data**. Polia plníme hodnotami pomocou **operátora "."**. Funkcia **datestr** uloží do poľa datetime aktuálny čas a dátum. Vstupný argument do funkcie datacsvread opäť meníme pomocou funkcie **sprintf**. V predposlednom riadku budeme jednotlivými iteráciami plniť premennú definovanú na začiatku.
*Funkcia datacsvread:
function data = datacsvread(fname)

data = [];

fid = fopen(fname, 'r');
fgets(fid); % skip initial empty line
fgets(fid); % skip labels
fgets(fid); % skip next empty line

while ~feof(fid)
    line = fgets(fid); % get one data line
    line = line(26:end); % kick out the time stamp
    parsed = textscan(line, '%f,%f,%f,%f,%f,%f'); 
    % parse the string: anglex, angley, anglez, accx, accy, accz
    data = [data; cat(2, parsed{:})]; 
    % add the parsed data to the matrix
    fgets(fid); % skip next empty line
end

fclose(fid);
end