Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Výpočet 1D konvoluce
- Napište a odlaďte program, který:
- dostane na vstup kladné celé číslo > 0 - toto číslo bude určovat délku náhodně generovaného signálu (signál uložte do jednodimenzionálního pole)
- signál vygenerujte jako posloupnost náhodných čísel mezi 0 a 9 včetně
- zajistětě, aby program generoval po každém spuštění jiný náhodný signál
- kód generující signál vhodně implementujte jako funkci
- dostane na vstup kladné a liché celé číslo > 0 - toto číslo bude určovat délku konvolučního jádra (opět jednodimenzionální pole)
- zatímto signál generujete zcela náhodně, konvoluční jádro bude mít následující tvar:
- pro 1 = 1,
- pro 3 = 1,2,1
- pro 5 = 1,2,4,2,1
- pro 7 = 1,2,4,8,4,2,1
- atd. (pozámka. jedná se o mocniny dvojky)
- kód generující konvoluční jádro vhodně implementujte jako funkci
- ošetřete vstup tak, aby se v případě zadání neplatných hodnot program neustále dotazoval uživatele, až do té doby než vstupní hodnoty splní všechny požadavky.
- nápověda: můžete využít dvou příkazů pro vyčištění vstupu scanf("%*[^\n]"); scanf("%*c");
- vypíše jak generovaný signál, tak konvoluční jádro
- výpis pole vhodně implementujte jako funkci
- spočítá konvolvovaný signál
- Jedná se o součet hodnot z okolí zkoumaného bodu, kdy váhy okolních hodnot jsou definovány právě v konvolučním jádru - princip konvoluce bude podrobně vysvětlen na tabuli
- příklad pro zadané hodnoty 3 a 4:
- jádro: 1,2,1
- signál: 5,1,4,6
- výpočet = 2*5+1*1 , 1*5 + 2*1 + 1*4 , 1*1 + 2*4 + 1*6 , 1*4 + 2*6
- výsledek = 11, 11, 15, 16
- POZOR na okrajové podmínky
- vhodně implementujte jako funkci
- vypíše výsledek a skončí
Add Comment
Please, Sign In to add comment