**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
0 Comments