**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 linefgets(fid); % skip labelsfgets(fid); % skip next empty linewhile ~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 lineendfclose(fid);end

Categories: Uncategorized

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *