Nabíjení a vybíjení prachových částic - zpracování v
dat IDL
Jiří Pavlů, 5. roč., KEVF
info:
Programoval jsem to asi ve 2 dnech (byl to můj první program v IDL ).
Neumím moc programovat, což poznáte záhy při čtení
zdrojáků. Jistě by se dalo mnohé zlepšit, ale... Widgety
byly vygenerovány pomocí IDL, eventy pomocí mne.
proč?:
V naší aparatuře měříme nabíjení a vybíjení prachových
částic. Jedinou informací je pro nás Q/m, případně jeho
časový vývoj.
Program zpracovává měření, při kterých se
částice samovolně vybíjí a je současně ostřelována
nízkoenergetickými ionty. Pokud povrchový potenciál
částice poklesne pod energii těchto iontů, začnou ionty na částici
dopadat a změní tedy podstatně proud na částici.
Měření je samozřejmě značně zašuměno. Máme tedy změřenou
závislost Q/m (t), tu je třeba vyfiltrovat, zderivovat [I/m
(t)], vynést závislost I/m (Q/m), tu opět vyfiltrovat, najít
zlom, nafitovat na křivku dvě přímky a najít jejich průnik.
source:
ukázková data:
popis použití:
- Otevřete si soubor 1.q-m. Kliknutím na tlačítko Q/m se
zobrazí data, měřená oblast je ten pokles vpravo.
- Vyberte tedy čas from 4000 to 6000 sec. a klikněte opět na Q/m
(vhodné hodnoty x,y lze odečítat pomocí myši). Tentokráte
se již vykreslí jen vyznačená oblast.
- Můžete ještě omezit data zespodu (do not use Q/m < xx C/kg), nastavte 0.6, čímž
se odstraní ten výstřel.
- Nyní můžeme přistoupit k filtraci dat. Je možno nastavit počet bodů, které se použijí pro
mediánovou filtraci a pro průměrování (smooth). Kliknutím na filtrated Q/m se vykreslí filtrovaná data.
- Kliknutím na I/m (Q/m) spustíte výpočet derivace filtrovaných dat a nakreslí se graf I/m (Q/m).
- Data jsou stále zašuměná, čili je lze opět podobně vyfiltrovat. Nyní již je vidět zlom okolo 0.72 C/kg.
- Vybereme úseky křivky, které budou použity k lineární regresi (vyberte např. 0.68-0.72 a 0.72-1.00) a
klikněte na fit. Provede se regrese a dokreslí se přímky do
grafu. Současně se vypíší údaje o regresi do Output Logu v
IDL.
- Nyní již máme, co jsme chtěli a tyto grafy si lze vytisknout
pomocí položky menu print graph. Ta nám nabídne i tisk do
postscriptu (všimněte si prosím programátorské lenosti
autora, který použil standartní dotazovací dialog na výběr
tisku do souboru nebo na tiskárnu).
- Pomocí export data si můžete všechny vypočtené hodnoty (filtrovaná data...)
uložit do textového souboru.
- Exit.
A takhle vypadá výsledek:
popis eventů:
onopen - načte data ze zvoleného souboru a vyhází řádky ve
kterých jsou nějaké NaN
plotQm - zjistí jaká omezení na výběr dat jste zadali,
vybere odpovídající data a ta nakreslí
plotfQm - zjistí jaké nastavení pro filtraci jste zadali,
provede ji s těmito parametry a nakreslí
plotIm - zderivuje filtrovaná data a nakresli Q/m (I/m) do
druhého okna
plotfIm - stejné jako plotfQm, s tím rozdílem že nekreslí
krajní data
fitlinear - načte jaké intervaly jste zadali, vybere
správná data, provede regresi, spočítá průnik, vypíše
údaje na obrazovku a přikreslí přímky do grafu
onexport - vypíše do textového souboru, vpodstatě všechna
data, která jste takto získali, včetně příslušných parametrů
onprint - zjistí, zda chcete tisknout do PS souboru nebo
přímo na tiskárnu a pak jen směruje výstupy na správná
zařízení
onexit - zavře všechny widgety
onabout - vyvolá dialog about
onwhat - vyvolá dialog s "helpem"
onmotionevent1 - odečítá polohu myši v grafickém okně a
vypisuje ji na obrazovku, jelikož odečítá souřadnice v
souř. systému device, je třeba je překonvertovat do systému
data
onmotionevent2 - to samé pro druhé okno
onpreferences - nenaprogramováno, mělo nastavovat defaultní
hodnoty
J.Pavlů
poslední úpravy 1.2.2001