Na rozdíl od většiny položek seznamu skladových zásob se k tomuto tématu přes veškeré vynaložené úsilí nepodařilo najít adekvátní "vtipný" titulek. Je to škoda, protože - navzdory odborně vyhlížejícímu nadpisu - je to totální bejkárna, která kvalitativně nijak nevybočuje z linie ostatních témat, co jich na skladě je. Co naplat, není každý den posvícení.
Nedočkavci, které místo účelu programu zajímá výhradně jeho stavba, se nemusí zdržovat dalšími řádky. Jim je dedikován odkaz na zdrojové texty. Ti ostatní mohou nerušeně číst dál.
Výpočet vstupního signálu | ↑ ↓ |
Aby bylo možné amplitudovou obálku spočítat, je třeba mít k dispozici nějaký vstupní signál. Vzhledem k tomu, že pro výpočet obálky je použita diskrétní Fourierova transformace, musí mít vstupní signál podobu pole naměřených vzorků. Numerická metoda, která je známa jako diskrétní Fourierova transformace, má řadu implementací v různých programovacích jazycích. Jednotícími prvky implementací bývají tyto vlastností:
Pozn. 2: Zde popisovaná implementace pro HP-50g se maličko rozchází s prvním bodem jednotících vlastností. I když vstupním argumentem příkazu/funkce FFT je N-vector or an N×1 or 1×N matrix (viz HP 50g AUR: advanced user's reference manual, page 3-86: Full Command and Function Reference), pro účely vazeb na ostatní programové části jsou hodnoty vzorků seřazeny do proměnné typu List.
Není-li k mání pole naměřených vzorků (ať už je to Vector nebo List), ale pouze vzorec definující daný průběh signálu, přijde vhod program ENVGNRT, který je součástí balení. (V módu CUSTOM po stisku NXT v pracovním adresáři lze tento program spustit stiskem Soft KEY GENER (F4)). Ten ze vzorce potřebné pole vytvoří. Funkce (vzorec) pro vytvoření nějakého modulovaného signálu může vypadat třeba takhle:
y = (1.5·sin(x/2) + 0.95·cos(1.5·x)) · sin(6·x)
Jako vstupní argument programu ENVGNRT GENER (F4) je vyžadována forma RPL programu. Ten bere vstupní argument (tedy nezávislou proměnnou x) z nejnižší úrovně stacku a návratová hodnota (závislá proměnná y) je umístěna tamtéž. Uživatelský program je povinen hodnotu nezávislé proměnné ze stacku odebrat (jinak by se na stacku "hromadili horníci") a stejně tak je povinen hodnotu závislé proměnné na stack vložit (jinak by došlo na přísloví "Kde nic není, ani smrt nebere"). Program může mít dvojí podobu. Buď bude "košer"...
« DUP 2. / SIN 1.5 * OVER 1.5 * COS .95 * + SWAP 6. * SIN * »
...nebo - pro slabší kusy ve stádu - v algebraické podobě.
« → α '(1.5*SIN(α/2.)+.95*COS(1.5*α))*SIN(6.*α)' »
Pokud v tom vzorci ani v obou programech čistě náhodou někdo z nějakého podivného důvodu modulovaný signál nevidí, je to sice zarážející, ale i to se může stát. Pro tyto jedince je zde grafické znázornění téhož.
Podle očekávání není program definující zkoumanou funkci jediným argumentem programu ENVGNRT GENER (F4). Zde je celý sortiment:
{ « 1.1 * SIN .96 * » 64. 2. "P" }
Položky takového seznamu (List) vstupních argumentů jsou:
Výpočet amplitudové obálky | ↑ ↓ |
Nejdůležitějším programem v pracovním adresáři (ponechme mu doporučený název ENVEL) je ENVCALC. Zastupuje ho Soft KEY ENVEL (F5). Program očekává na stacku sled vzorků vstupního signálu ve formě objektu typu List. Ten je při ukončení výpočtu nahrazen výstupním signálem amplitudové obálky ve stejném tvaru.
Pro vyzkoušení součinnosti programů ENVGNRT GENER (F4) a ENVCALC ENVEL (F5) je vhodné postupovat následovně:
Pokud právě vyjmenované body proběhly korektně, budou se obsahy následujících obrázků shodovat s realitou.
Pozn.: Na obrázcích jsou začátky polí hodnot po dokončených výpočtech zobrazeny vstupem do editačního módu: TOOL a EDIT (F1).
Zobrazení | ↑ ↓ |
Podobně jako v předchozí kapitole byl za hlavní označen program ENVCALC ENVEL (F5), je středobodem zobrazení grafu vypočítaných dat (hodnot vzorků) podprogram ENVPLOT. Je to v pravém smyslu slova podprogram: nemá přiřazenu žádnou Soft KEY pro přímé/ruční ovládání, je volán výhradně z jiných programů. Na obrázku je vzhled displeje po stisku CUSTOM v adresáři ENVEL:
V předchozích kapitolách (Výpočet vstupního signálu a Výpočet amplitudové obálky) byla (záměrně) přehlížena zřetelně viditelná Soft KEY CHOOS (F2). Je obsažena na obou stránkách Soft MENU a slouží k výběru předem připravených příkladů v obou možných variantách - samostatně zadaný program i seznam vstupních argumentů. Její činnost se v obou instancích liší. Zatímco stisk této klávesy z druhé stránky Soft MENU (CUSTOM a NXT) pouze vyvolá příslušný objekt do nejnižší úrovně stacku (viz program ENVSAMP), v první stránce - bezprostředně po ukončeném výběru - spustí kaskádu programů pro výpočet a zobrazení (první bezejmenný program v objektu CST).
Na tomto místě popisu je třeba čestně se přiznat k malé poťouchlosti. V předchozí kapitole Výpočet amplitudové obálky je seznam kroků potřebných k vyzkoušení součinnosti programů ENVGNRT GENER (F4) a ENVCALC ENVEL (F5). Bod č. 2 nabádá k zadání vzorec vstupního signálu. Ti, kteří se nenechali "vycukat", nezačali ihned zběsile "datlovat" na klávesnici kalkulátoru, ale v klidu si přečetli tento text až do konce, byli odměněni drobnou úlevou. Pro zadání vzorce stačilo stisknout CHOOS (F2) a ze zobrazené nabídky vybrat položku S1RPL. Tentýž program je citován v kapitole Výpočet vstupního signálu včetně algebraické podoby S1ALG. Menu pro výběr má tuto počáteční podobu:
Přes všechny výše popsané "vymoženosti" najde nejširší uplatnění Soft KEY FORM (F1), po jejímž stisku je spuštěn program ENVFORM. Ten zobrazí formulář (nebo dialog, chcete-li), který dovolí interaktivní formou zadat všechny potřebné vstupní argumenty a spustí výpočty a zobrazení.
Z obrázků je patrné, že dosavadní sortiment příznaků "P" a "N" se rozšiřuje o další dva znaky určující požadavek na zobrazení:
Poslední dosud nezmíněnou Soft KEY je ta úplně vpravo: CLEAN (F6)). Název napovídá, že po jejím stisku jsou smazány pomocné proměnné a mezivýpočty. Jejich kompletní seznam je patrný z druhého bezejmenného programu v objektu CST
Příklady | ↑ ↓ |
Objekt SAMPLES je adresář obsahující několik jednoduchých příkladů.
První v pořadí je program HARM. RPL kód obsahuje vzorec y = 1.75·sin(x) + 0.48·sin(3·x) + 0.25·sin(5·x). Od výběru přes výpočet až k závěrečnému vykreslení grafu bude displej kalkulátoru postupně nabývat tyto podoby:
Druhý příklad PASTE už k vidění byl v kapitole Výpočet vstupního signálu. Bylo by nošením dříví do lesa zabývat se jím opakovaně na tomto místě.
Podobně je tomu u trojice příkladů se společným prefixem S1ALG, S1ARG a S1RPL. Vypadají každý jinak, ale obsahují totéž. I zde by bylo možné popis odbýt odkazem na předchozí řádky, ale ať je obrazová příloha bohatší:
Poslední ukázka SAW ilustruje použití příznaků "P" a "N" k vytvoření pilového průběhu. Zobrazen je zde pouze výsledek.
Tip: Při mimořádně zdařilé konstelaci zadaných vstupních argumentů může vyvstat potřeba celou zábavnou posloupnost zadání—výpočet—zobrazení provádět opakovaně. (Obzvláště u dětí hrubě předškolního věku je tento úkaz často pozorován). Intuice napovídá, že zadání by z celé trojice nemuselo být tím nejzábavnějším aktem. Podobně jako při tenisu i zde může dojít ke zkrácené hře (v originále Tiebreak). Dosáhne se ho prostým uložením vstupních argumentů (program nebo kompletní seznam vstupních argumentů) jako nové proměnné s přiléhavým názvem do adresáře SAMPLES. Fáze zadání je tím navěky zkrácena prostým stiskem CHOOS (F2) a výběrem toho přiléhavého jména.
Zajímavost | ↑ ↓ |
Jestli se něco v rámci celého programu dá považovat za zajímavost, tak je to krátký (a tím pádem jednoduchý) podprogram axetick, který je součástí programu ENVPPAR. Jeho úkolem, je název napovídá, je určení vzdáleností značek na obou osách grafu. Hodnoty jsou zarovnány do schématu 1-2-5 v závislosti na hodnototě mantisy rozsahu dané osy.
Mantisa | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
Axetick | 0.2 | 0.5 | 1.0 | 2.0 |
Druhá "zajímavost" už si uvozovky právem zaslouží. Je to totiž nedostatek: na vyobrazených grafech chybějí popisky os. Při jejich zařazení do výsledného obrazu totiž nedošlo k bůhvíjakému kvalitativnímu nárůstu, spíše naopak - blbě to vypadalo. Pokud by někoho zajímaly konkrétní hodnoty vztažené ke konkrétnímu časovému kvantu/vzorku, má po úspěšném vykreslení grafu dvě možnosti:
Download | ↑ ↓ |
Textový tvar | Binární forma | |
---|---|---|
Vše naráz | Jednotlivé moduly | |
envel.zip | viz seznam zdrojových textů | ENVEL.hp |