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í:
  1. Otevřete si soubor 1.q-m. Kliknutím na tlačítko Q/m se zobrazí data, měřená oblast je ten pokles vpravo.
  2. 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.
  3. 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.
  4. 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.
  5. Kliknutím na I/m (Q/m) spustíte výpočet derivace filtrovaných dat a nakreslí se graf I/m (Q/m).
  6. 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.
  7. 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.
  8. 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).
  9. Pomocí export data si můžete všechny vypočtené hodnoty (filtrovaná data...) uložit do textového souboru.
  10. Exit.
A takhle vypadá výsledek: Okno programu
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