Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

public:sk03_j2013 [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 +===== PB071 - odstranění offsetu z EEG křivky (13.5.2013) =====
 +Program dostane na příkazové řádce jméno vstupního souboru //X// se záznamem 14 kanálů z EEG (Electroencephalogram). Program se soubor pokusí otevřít a načíst jeho obsah do vhodně pojmenované struktury. Každý kanál (sloupeček ve vstupním souboru) bude mít svou vlastní položku - dynamicky alokované pole hodnot. Vytvoříte funkci, která projde hodnoty v každém z kanálů a odstraní posun ve směru osy Y (offset) tak, aby nejmenší hodnota v daném kanálu po opravě byla 0. Výsledné upravené kanály se uloží do nového souboru //X.noff// ve stejném formátu jako vstupní soubor. Do výstupního souboru budou vypsány pouze ty položky, které byly zachyceny v čase v intervalu [A,B], kde hodnoty A a B obdržíte jako vstup na příkazovém řádku.
 +
 +{{:​public:​capture_map_1_318.png?​400|}}
 +
 +  * program obdrží na příkazovém řádku tři argumenty: jméno_souboru čas_od čas_po
 +  * pokud nedostane žádný argument, tak vypíše nápovědu a skončí
 +  * program se tedy spouští např. jako '​./​program eeg.dat 120 570' a vygeneruje výstupní soubor //​eeg.dat.noff//​
 +  * vstupní soubor bude dodržovat tento formát (každý řádek obsahuje separátní záznam - jednu hodnotu pro každý kanál + dodatečné informace):
 +    * čas_měření stav_baterie gyro_x gyro_y kanal1 kanal2 ... kanal14  ​
 +    * všechny hodnoty jsou celá čísla se znaménkem oddělená bílým místem
 +    * ukázkový soubor pro testování:​ [[http://​www.fi.muni.cz/​~xsvenda/​eeg.dat|eeg.dat]]
 +  * offset odstraňujete pouze u kanálů, nikoli u dodatečných informací ​
 +  * do vystupního souboru vypisujete pouze záznamy pořízené v intervalu [A,B] (první sloupeček v souboru)
 +  * program po uložení upraveného souboru vypíše na standardní výstup i statistiky ze zpracování
 +    * pro každý kanál hodnotu odebíraného offsetu
 +  * zdrojový kód bude dodržovat dobré programovací návyky, nebude obsahovat memory leaks ani neuzavřené soubory
 +  * zdrojový program nebude celý umístěn ve funkci main, ale bude vhodně rozdělen do smysluplných funkcí
 +  * program nebude vytvářet přehnaně veliká pole struktur, která nebudou využita (tj. alokujete jen tolik, kolik budete využívat)
 +  * program by neměl spadnout na Segmentation fault v případě že by byl puštěn bez parametrů nebo pokud by se nepodařilo najít vstupní soubor
 +  * při vypracování příkladu můžete používat své vlastní kódy a dokumentaci nalezenou na internetu. Není povoleno spolupracovat s někým dalším
 + 
 +Příklad vstupních dat:
 +   248 0 0 0  8637 8952 7692 8101 8811 9106 8113 9313 8034 8718 9600 8903 9115 8911 
 +   256 0 3 1  8630 8913 7693 8068 8854 9077 8128 9282 8014 8693 9618 8875 9097 8929 
 +   264 0 -1 2  8643 8906 7690 8070 8880 9050 8127 9281 8003 8696 9619 8878 9086 8944 
 +   271 0 0 0  8662 8906 7685 8080 8907 9034 8128 9306 8008 8700 9626 8903 9088 8958 
 +   279 0 0 0  8667 8886 7684 8077 8919 9014 8120 9322 8006 8695 9631 8914 9098 8971 
 +   287 0 0 0  8681 8883 7685 8082 8925 9001 8107 9323 8001 8703 9627 8911 9102 8972 
 +
 +První hodnota pro kanál1 bude po odstranění offsetu rovna hodnotě 7 (nejmenší hodnota v tomto kanálu je před zpracováním byla 8630)
 +
  
QR Code
QR Code public:sk03_j2013 (generated for current page)