PB071 - vyhlazení EEG křivky (13.5.2013)

Program dostane na příkazové řádce jméno vstupního souboru X se záznamem několika 14 z EEG (Electroencephalogram). Program se soubor pokusí otevřít a načíst jeho obsah do vhodně pojmenované struktury. Každý kanál 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 změní aktuální hodnotu konkrétní položky na průměrnou hodnotu z této a 4 následujících hodnot (vyhlazení). Výsledné vyhlazené kanály se uloží do nového souboru X.avg5 ve stejném formátu jako vstupní soubor.

  • program obdrží na příkazovém řádku jeden argument, jméno souboru
  • pokud nedostane žádný argument, tak vypíše nápovědu a skončí
  • program se tedy spouští např. jako './program eeg.dat' a vygeneruje výstupní soubor eeg.dat.avg5
  • 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í: eeg.dat
  • Dejte pozor na průměr hodnot u konce pole (průměruje se jen ze zbývajících hodnot)
  • Při výpočtu průměru vhodně zaokrouhlujte na celá čísla
  • 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 vyhlazení 8647

QR Code
QR Code public:sk01_j2013 (generated for current page)