Robi bejegyzései

Sávszélesség hatása a független mérési pontok számára

Szimulációk esetén könnyű úgy generálni a jeleket, hogy az egymás utáni adatpontok statisztikailag függetlenek legyenek, a valós mérések esetén viszont a sávszélesség óhatatlanul korrelációt vezet be az adatpontok között. E miatt merül fel a kérdés, hogy egy adott pontosság eléréséhez vajon hány mérési pontra lesz szükségünk. Vagy másképp megfogalmazva: ha van N mérési pontunk, ez hány, egymástól statisztikailag független mérési pontnak felel meg (k)?

A Shannon-féle mintavételi tételt egy egyszerű megoldást javasol arra, hogy mérésünk során milyen gyakran kapunk majd független adatpontokat: adott sávszélesség esetén, ha a sávszélesség (kicsit több mint) kétszeresével mintavételezünk, akkor nincs információveszteségünk, a valódi jelalakot bármelyik pontban rekonstruálni tudjuk. Ez viszont azt is jelenti, hogy ha gyakrabban mérünk, nem jutunk további információhoz.

Lefordítva a korábbi kérdésre a tételt, ha f_s a mintavételi frekvenciánk, f_{bw} pedig a sávszélességünk, a statisztikailag független mérési pontok száma a sávszélesség és a mintavételi frekvencia arányában fog csökkenni a következő képlet szerint:

k=N \cdot {2 f_{bw} \over f_s}

Ha a sávszélesség pont a mintavételi frekvencia fele, akkor minden egyes mért adatpontot statisztikailag függetlennek tekinthetjük. Természetesen ez csak akkor igaz, hogy a vizsgált jelünk korrelálatlan volt, vagyis fehér zaj.

A valóságban olyan fehér zajt nem találunk, ami f_{bw} alatt tökéletesen egyenletes frekvenciamenetű, felette viszont 0 teljesítménnyel rendelkezik. Analóg és digitális szűrőkkel megközelíthetjük ezt a frekvenciamenetet, de nem tökéletesen. Vajon a szűrők milyen hatással lesznek a mérésekre?

A KLJN-hez és a FES-hez kapcsolódó méréseknél két gyakran mért paraméter a jel középértéke és szórása. Megvizsgálhatjuk, hogy N mérést elvégezve, az így kapott mennyiségek milyen eloszlást követnek. A következőkben egy olyan szimuláció eredményét mutatom be, ahol a mintavételi frekvencia 1 kHz, a zaj sávszélességét egy 10-edfokú Butterworth szűrő határozza meg 100 Hz-es levágási frekvenciával, a mintavételezett pontok száma (N) pedig 500. A mérések száma 100 000. Ahogy a következő ábrán látszik, a kapott átlagok igen pontosan normál eloszlást követnek.

A mért középértékek eloszlása sávkorlátozott jel esetén

A mért középértékek eloszlása sávkorlátozott jel esetén

A statisztikában középérték szórását az adatpontok szórásából a következő képlettel tudjuk meghatározni (lásd konfidenciaintervallum):

sd(\bar{x_k})={sd(x) \over \sqrt{k} }

A zaj mért szórása 0,8937, a középértékek szórása pedig 0,0891. Ez alapján k, a független adatpontok száma 100,681, ami lényegében megfelel a mintavételi tételből kapott képletnek.

Hasonlóan megvizsgálhatjuk a kapott szórások eloszlását is. Az a következő ábrán jól látszik, hogy a kapott eloszlás megfelel a várt Chi-négyzet eloszlásnak. A korábbi bejegyzés alapján a mérési adatok alapján meghatározhatjuk k értékét, erre a konkrét esetre k-nak 105,69-et kapunk. Ha görbét illesztünk, a kapott k érték 107 lesz. Ez ugyan kis mértékben eltér a várttól, de mutatja, hogy ha elegendően meredek a sávszűrőnk, a mintavételi tételből kapott összefüggés jól használható.

A mért szórások eloszlása sávkorlátozott jel esetén

A mért szórások eloszlása sávkorlátozott jel esetén

Ha a szűrő meredeksége nem elég meredek, azt várjuk, hogy több nagyfrekvenciás tag marad a jelben, növelve a statisztikailag független pontok számát. A tizedfokú szűrőt elsőfokúra cserélve ezt könnyen megfigyelhetjük, a középérték eloszlása alapján azt kapjuk, hogy a független mérési pontok száma 123. Ezzel ugyanakkor nincs összhangban a variancia eloszlása alapján kapott érték, ami 198. Ha a sávszélességet elsőfokú szűrő mellett lecsökkentjük 10 Hz-re, akkor a két eredmény különbsége még nagyobb lesz, a középérték alapján számolt 15,5 pont, a variancia alapján számolt pedig 30,2 pont. Az alábbi ábrán látható, hogy míg a középérték továbbra is normál eloszlást követ, a variancia eloszlása már nem tökéletesen Chi-négyzet. (Az eltérést biztosan nem a pontok kis száma okozza, 10-ed fokú szűrőt alkalmazva, a „helyes” eredmény jön ki. A pontok számát növelve (pl. N=5000) az eloszlás jobban közelít a Chi-négyzet eloszláshoz, a középérték és a variancia alapján számolt k közötti különbség viszont megmarad).

Alacsonyabb fokú szűrő használata esetén a variancia eloszlása már eltér az illesztett Chi-négyzet görbétől

Alacsonyabb fokú szűrő használata esetén a variancia eloszlása már eltér az illesztett Chi-négyzet görbétől

A szimuláció eredményei alapján látszik, hogy elegendően meredek levágású szűrőket alkalmazva, a mintavételi tétel alapján kapott összefüggés teljesül. Ha a szűrő nem elég meredek, akkor a független mérési pontok száma emelkedik, de még ugyanabban a nagyságrendben lesz. Ugyanakkor a kapott k értékek eltérőek lesznek a középérték és a variancia esetén, jelezve, hogy ilyen esetben a mintavételi tételből kapott eredményeket már nem használhatjuk automatikusan.

Gauss-eloszlás tesztelése vizuálisan

Mérések és szimulációk során gyakran felmerül az a kérdés, hogy egy eloszlás vajon normál eloszlású-e, vagy nem. Például a következő ábrán vajon mindkét adatsor Gauss-eloszlású-e?

Vajon mind a két görbe normál eloszlást követ?

A hisztogramok 100 000 adatpont alapján készültek. A nagy mennyiségű adatpont ellenére sem egyszerű megmondani, hogy vajon tényleg normál eloszlásúak-e vagy sem. Az eltéréseket viszont ki tudjuk nagyítani, hogy ha a grafikonokat úgy transzformáljuk át, hogy a normál eloszlás pontjai egy, törött egyenesre essenek. A mennyiségek átskálázása a következő képleteknek megfelelően történik:

x_{scaled}=sign(x-\mu)\cdot(x-\mu)^2

y_{scaled}=ln(PDF)

Az átskálázott grafikonok pedig:

Az átskálázott grafikonok

Az átskálázott grafikonok

Az új grafikonokon már jól látszik, hogy az első eloszlás biztos nem normál eloszlást követ (egyébként Chi-négyzet, szabadsági fokok száma 200).

A Chi-négyzet eloszlás és a szórás kapcsolata

A FES és KLJN kutatások során gyakran felmerül annak igénye, hogy egy mennyiség szórását határozzuk meg. Mivel a minták száma véges, a kapott szórás ingadozik annak várható értéke körül.

A kapott szórások szemléltetése KLJN kommunikáció esetén

A kapott szórások szemléltetése KLJN kommunikáció esetén

Első ránézésre azt is gondolhatnánk, hogy a kapott eloszlások normál eloszlásúak. Ugyanakkor, hogy ha jobban megvizsgáljuk a helyzetet, hamar egyértelművé válik, hogy nem azok. Az általunk vizsgált feszültség (vagy áramjelek) általában normál eloszlásúak, középértékük pedig nulla. A jel varianciáját a következő képlettel kaphatjuk meg:

V = {1 \over k} \sum_{i=1}^{k} x_i^2

, ahol x_i-k az aktuális mérési értékek. A képlet alapján látszik, hogy az általunk keresett eloszlásnak a Chi-négyzet eloszláshoz lesz köze. Ha z_i-k egymástól független standard normál eloszlású változók (0 középértékkel és egységnyi szórással), akkor a következő egyenlettel definiált Q, Chi-négyzet eloszlást követ  k szabadsági fokkal.

Q = \sum_{i=1}^{k} z_i^2

Q legfontosabb tulajdonságai:

mean(Q) = k

var(Q) = 2k

A korábban felhasznált x_i változók nem standard eloszlásúak, szórásuk nem egységnyi, hanem \sigma. Így:

z_i={x_i \over \sigma}

x_i=\sigma z_i

V = {\sigma^2 \over k} Q

Ezekből az egyenletekből meghatározhatjuk a mért variancia várható értékét és szórását:

mean(V) = \sigma^2

var(V) = {\sigma^4 \over k^2} 2k = 2 {\sigma^4 \over k}

Az első egyenlet nem különösen meglepő, hiszen ezt várjuk. A második viszont azért érdekes, mert látszik, hogy a mérések során kapott szórás vagy RMS értékek szórása csak és kizárólag a szórás várható értékétől, valamint az egymástól statisztikailag független pontok számától függ.

A számolás ellenőrzésére egy egyszerű LabVIEW szimulációt készítettem (lásd következő ábra). A programban meg lehet figyelni, hogy a Chi-négyzet eloszlás sűrűségfüggvényének megfelelő skálázásához mind a x értékeket, mind pedig a függvény kimenetét meg kell szorozni \sigma^2/k-val.

Az elkészített szimuláció blokk diagramja

Az elkészített szimuláció blokk diagramja

A szimuláció eredménye

A szimuláció eredménye

A szimuláció eredményeként jól látható, hogy a kapott eloszlás, bár közel áll a normál eloszláshoz, nem illeszkedik rá pontosan, a jósolt Chi-négyzet eloszlás viszont jól követi a mért adatpontokat. A különbség bár nem tűnik lényegesnek (sok helyen a Chi-négyzet eloszlást normál eloszlással szokták közelíteni), de a tartomány szélein, az eltérés akár több nagyságrend is lehet. A KLJN kommunikáció során pedig pont ez a tartomány lesz érdekes a hibaráta becslésénél.

Egy érdekesség van még: a beépített LabVIEW-s Chi-négyzet sűrűségfüggvényt számoló rutin sajnos nem lett igazán jól implementálva, néhány száz mérési pont felett már nem ad használható eredményt. Ezért egy új verziót implementáltam a beépített alapján, mely nagy számokra is tökéletesen működik. Ennek a blokk diagramja a következő ábrán látható:

Chi-négyzet sűrűségfüggvényét nagy számok esetén is helyesen meghatározó rutin

Chi-négyzet sűrűségfüggvényét nagy számok esetén is helyesen meghatározó rutin

Új eszközök a LabVIEW programozásban: csatorna vezetékek

A 2016-os LabVIEW egy új eszközt vezetett be a programozásba, a csatorna vezetékeket (Channel Wires). Ezek jelentősen megkönnyítik az adatok átadását a ciklusok között. E bejegyzésben egy egyszerű példát mutatok be, ahol a feladat az, hogy egyszerre két, egymástól független ciklust állíthassunk le egy nyomógomb segítségével.

Számos módszer volt eddig is a feladat megvalósítására, többek között használhattunk lokális változókat is. A helyzetet bonyolította, hogy ekkor a Stop Button alapértelmezett Latch When Released üzemmódját nem lehet használni, vagyis az alapértelmezett Off állapotát nekünk kell biztosítani mind a program indulásakor, mind pedig a két ciklus lefutása után. A Flat Sequence-ek valamint a boolean vezetékek biztosítják a megfelelő sorrendiséget.

tag-classic

A feladatot lényegesen leegyszerűsítené, hogy ha az első ciklusból a Stop gomb értékét egyszerű módszerrel át tudnánk adni a második ciklusnak. Erre kivallóan alkalmas a Nofifier, de ez talán még bonyolítaná is az előző kódot. A 2016-os LabVIEW-ban a Tag channel ad egy egyszerű megoldást a feladatra. Először létre kell hozzunk egy Channel Writer csomópontot, ezt a kívánt típusú vezetékre jobb gombbal kattintva, a Create/Channel Writer… opciót választva tehetjük meg.

createchannelwriter

A megjelenő párbeszédablakban válasszuk ki a kívánt opciót, jelenleg a Tag csatorna mintát, ezen belül pedig a sima Write végpontot.

selectchannelendpoint

Az adatok csatornából való kiolvasására a helyi menü Create/Channel Reader opcióját használhatjuk.

createchannelreader

A végeredményként előálló program a következő ábrán látható. (Ahogy a képen látható, a ciklus címkéje részben elfedi a vezetéket, ez azonban bármilyen másik vezetékkel is megtörténne.)

tag

Elektronikus orr

Michael Madsen egy mindenképp érdekes projektet valósított meg, melyben egy Arduino-t használva megvalósított egy elektronikus orrot. A gázok illetve illatok érzékelése nagyszámú szenzorral történik, az adatokat pedig mintázatfelismerő algoritmusokkal elemzi.

Electronic nose

Forrás: Michael Madsen: Electronic Nose

Nyertes GINOP 2.2.1 pályázat

Jó hír, hogy nyert az evoproval közösen beadott „Újszerű ipari integrált irányítási szoftver keretrendszer kutatása és alkalmazása kísérleti fizikai nagyberendezésekre” című pályázatunk. A pályázat keretein belül a kutatócsoportunk elsősorban kísérleti nagyberendezésekhez (Big Physics) fog HIL tesztrendszereket valamint LabVIEW-TANGO interfészt fejleszteni.

K-16 pályázat eredménye

Az NKIF-hez benyújtott „Véletlen fluktuációk elemzése és hasznosítása multidiszciplináris területeken” című pályázatunk 35 jelentkezőből a 10. helyet kapta meg, ami jó hír. Ami nem jó hír, hogy csak 7 pályázatot támogattak, így a számunkra legfontosabb, alapkutatási tevékenység most nem kapott támogatást, pedig ezzel egy kutatót és számos hallgatót tudtunk volna alkalmazni négy évig. Természetesen nem adjuk fel, továbbra is keressük majd a lehetőségeket.

Nyertes MTA szakmódszertani pályázat

A kutatócsoportunk által elkészített szakmódszertani témájú projektünk nyert az MTA pályázatán. A projekt során elsősorban azzal fogunk foglalkozni, hogy a most már nagyon könnyen elérhető egylapos PC-ket (pl. Raspberry-PI) és mikrovezérlő alapú eszközöket (pl. Arduino) hogyan tudjuk a lehető legjobban bevonni a középiskolás oktatásba, úgy, hogy azok izgalmassá tegyék a természettudományos tárgyak tanulását. Ennek eleme lesz számos leírás és videó készítése, melyek bemutatják az eszközök használatát, valamit érdekes kísérleteket fogunk kidolgozni.

r-pi2

ICNF 2017

Megjelent az első felhívás a 2017-es ICNF (International Conference on Noise and Fluctuations) konferenciára. A konferencia június 20 és 23 között lesz megtartva Vilnius-ban. Az absztraktokat január 22-éig kell beküldeni. A konferencia legfontosabb témái:

  • Zajok, fluktuációk és sztochasztikus folyamatok elmélete
  • Zajok szilárdtestekben, elektronikus eszközökben, optoelektronikus eszközökben
  • Zaj a kommunikációban
  • Zaj modellezése és szimulációja
  • Mérési módszerek
  • A zaj mint diagnosztikai eszköz
  • Akusztikus zaj

A konferenciáról többet a konferencia honlapján lehet olvasni: http://www.icnf2017.ff.vu.lt/