Simulera brusspänning och räkna på?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

Jag har tänkt att fylla arrayer med data som efterliknar
brusspänningar för att sedan utföra diverse analyser på
och dessutom lära mig lite om sannolikhetskalkyl.

Är det någon som testat liknande saker?

Jag programmerar i Java och det finns pseudorandom-funktion
som levererar double mellan 0 och strax under 1. De talen
skulle kunna representera ögonblicksvärden av spänningsamplituder.
Säg att jag fyller ett antal arrayer med 1000 slumptal per array
då borde jag ha en bra utgångspunkt för fortsatta sannolikhets-
undersökningar. Kanske vore det mest bäst att generera slumptal
mellan tex -1 och +1 så det blir ungefär som att titta på en
oscilloskop-skärm?
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Simulera brusspänning och räkna på?

Inlägg av Andax »

Vill du efterlikna naturligt förekommande signaler så ska du nog försöka generera normalfördelat brus (och ev filtrera det också för att få rätt frekvensegenskaper). Vet inte om det finns någon funktion i Java som levererar normalfördelade slumpvärden, men annars får man skapa dessa själv.
Två metoder kommer jag på nu. Ena metoden går ut på att summan av många rektangulärfördelade värden (uniform) får en gaussfördelnings (normalfördelnings) utseende.
Den andra metoden (box-muller) tar två rektangulärfördelade tal (oberoende framtagna) och genom en närmast magisk transform gör om dessa till normalfördelade. om U1 och U2 är de två rektangulärfördelade värdena i intervallet (0,1) så är N1 och N2 de två normalfördelade värdena.

N1 = sqrt(-2*ln(U1))*sin(2*pi*U2)
N2 = sqrt(-2*ln(U1))*cos(2*pi*U2)
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Re: Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

Termiskt brus ska ha Gauss-fördelning och det vore intressant att
börja med. Tex om jag skapar 10 arrayer med vardera 1000
gauss-fördelade slumptal så skulle varje array kunna motsvara
10 st motstånd som jag mätt brusspänningen över.

I Java finns klassen java.util.Random med metoden nextGaussian()
  • Returns:
    the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence

    This uses the polar method of G. E. P. Box, M. E. Muller, and G. Marsaglia, as described by Donald E. Knuth in The Art of Computer Programming, Volume 3: Seminumerical Algorithms, section 3.4.1, subsection C, algorithm P.
Jag testade att generera 35 tal med den metoden och så här blir det...
  • 0.3890629788848167
    0.8170139138105935
    -0.05517033274499626
    1.4371945542990918
    1.5782259542307167
    0.5403287721047818
    -0.871240633178179
    0.18338976285634398
    -1.13433412622579
    -0.356350282206222
    -0.27334878905469995
    -0.3970461874666941
    0.18955410355327756
    0.4150009405919398
    -0.7286649445702041
    -1.0977089520737948
    1.2372974681827262
    0.603056487287419
    -1.6533474592302628
    -1.1440577144964856
    -0.30456269851328643
    1.0725832309810044
    0.09405390275688659
    1.1073934456188055
    -0.45351208172511887
    0.4682733463139222
    2.7781404777673973
    0.5941278795942185
    0.13373601965443233
    0.13435098693839595
    0.11941102490644594
    0.07410555890549819
    -2.002462746763145
    0.06638009375186103
    1.1800572057779941
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Simulera brusspänning och räkna på?

Inlägg av blueint »

Kan vara idé att mixa in andra slumptalskällor som t.ex tangentbord, nätverk, klockinterrupt, osv..
Nerre
Inlägg: 27403
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Simulera brusspänning och räkna på?

Inlägg av Nerre »

Ska man bara simulera brus för att räkna på det borde det räcka med en schysst slumptalsalgoritm.

Det är främst för kryptering och liknande man försöker blanda in externa källor för att få en seed (eftersom en slumptalsalgoritm är känd så kan man ju reproducera en slumptalsserie om man startar med samma seed, så det gäller för kryptering att ingen kan gissa eller prova sig fram till rätt seed).
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Re: Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

Så extremt slumpmässigt behöver det inte vara för att
man ska kunna beräkna olika saker.

Jag tror jag startar en projekt-tråd på det här.

Jag testade att skriva ut 250 nextGaussian genererade tal som
jag först sorterat. Här hittar man ju faktiskt en del dubletter som
går beräkna sannolikhet på. Jag ska dela in värdena i intervall och
pricka av på ett x-y diagram och se om det blir en normalfördelningskurva.
  • -2,816 -2,441 -2,427 -2,404 -2,193 -2,191 -2,170 -2,152 -2,136 -1,994
    -1,974 -1,937 -1,914 -1,887 -1,861 -1,841 -1,827 -1,817 -1,657 -1,650
    -1,564 -1,551 -1,523 -1,457 -1,372 -1,365 -1,356 -1,329 -1,304 -1,275
    -1,250 -1,245 -1,223 -1,209 -1,196 -1,190 -1,155 -1,130
    -1,116 -1,116
    -1,101 -1,075 -1,072 -1,067 -1,019 -0,992 -0,949 -0,926 -0,906 -0,852
    -0,850 -0,842 -0,841 -0,825 -0,812 -0,795 -0,777 -0,761 -0,760 -0,741
    -0,715 -0,711 -0,672 -0,650 -0,633 -0,615 -0,593 -0,592 -0,587 -0,564
    -0,558 -0,512 -0,501 -0,500 -0,498 -0,495 -0,489 -0,481 -0,463 -0,448
    -0,438 -0,426 -0,372 -0,361 -0,359 -0,334 -0,327 -0,314 -0,303 -0,297
    -0,296 -0,289 -0,285 -0,264 -0,260 -0,252 -0,228 -0,216 -0,209 -0,208
    -0,204 -0,182
    -0,167 -0,167 -0,105 -0,081 -0,080 -0,077 -0,060 -0,058
    -0,056 -0,040 -0,031 -0,025 -0,021 -0,013 -0,006 0,002 0,010 0,013
    0,026 0,027 0,029 0,041 0,042 0,068 0,073 0,086 0,088 0,089
    0,094 0,126 0,131 0,136 0,140
    0,156 0,156 0,161 0,163 0,166
    0,173 0,195 0,213 0,230 0,233 0,237 0,249 0,252 0,261 0,264
    0,277 0,300 0,309 0,312 0,330 0,332 0,343 0,354 0,357 0,364
    0,373 0,399 0,405 0,415 0,421 0,432
    0,445 0,445 0,458 0,465
    0,488 0,501 0,506 0,511 0,520 0,544
    0,573 0,573 0,574 0,583
    0,598 0,602 0,605 0,607 0,627
    0,631 0,631 0,635 0,642 0,651
    0,672 0,672 0,680 0,713 0,733 0,736 0,746 0,758 0,765 0,794
    0,826
    0,831 0,831 0,832 0,856 0,860 0,875 0,899 0,976 1,002
    1,010 1,013 1,031 1,054 1,066 1,067 1,099 1,107 1,113 1,129
    1,143 1,149 1,171 1,188 1,197 1,211 1,222 1,281 1,293 1,329
    1,372 1,393 1,455 1,491 1,525 1,532 1,570 1,637 1,717 1,718
    1,727 1,850 1,975 2,179 2,195 2,261 2,351 2,359 2,377 2,553
Användarvisningsbild
JimmyAndersson
Inlägg: 26680
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Simulera brusspänning och räkna på?

Inlägg av JimmyAndersson »

Intressant tråd. :) Jag har av (någon märklig anledning) alltid varit intresserad av brus och slumptal.

Det ska bli intressant att se hur diagrammet blir.
Tycker det ser ut som att du kommer få en hyfsad normalfördelningskurva.


----
Parentes:
Första tiden jag bodde i Oskarshamn så skulle min lägenhet renoveras
och under tiden fick jag en lägenhet i huset brevid.
Jag ville inte packa upp så mycket grejer men man måste ju roa sig med något,
så därför hamnade min Vic20 och en liten TV på en bänk i köket.
Spelen var i någon svårfunnen kartong så jag ägnade många dagar åt att
göra program som fyllde en större del av minnet minnet med slumptal som
den sedan försökte hitta mönster (gemensamma drag) i. :D
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Re: Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

Tror många av de där tidiga VIC20, ABC80, APPLE II osv fick
utstå den typen av programmerare :)

Vill minnas från gymnasiet att det fanns en del svenskrivna böcker i
ämnet att utföra datorexperiment med slumptal.

Esselte 1000 ska ha varit en av de tidiga datorerna och den finns
omnämd i gymnasie-matteböckerna att köra övningar på.
Kan det varit en Z80-baserad historia?
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Simulera brusspänning och räkna på?

Inlägg av Andax »

Tänk på att dina dubbletter i tabellen ovan bara är dubbletter pga av att du bara skriver ut 3 decimaler. Att du skulle få två "exakt" lika tal efter varandra har i princip sannolikheten 0. Nu lagrar ju datorn tal med ändlig precision så sannolikheten är inte noll i datorvärlden. Ett 32 bitars flyttal (motsv float i C) har ca 7 värdesiffror och ett 64 bitars (mostv double i C) har ca 15 värdesiffror.
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Re: Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

Kan stämma bra. Jag har läst mig till att en kontinuerlig stokastisk
variabel kan anta alla värden i ett intervall och det går inte säga
sannolikheten att ett visst värde ska inträffa.

Däremot när det gäller en diskret stokastisk variabel kan det bli
samma värde om och om igen. Krona och klave tex.

För en kontinuerlig stokastisk variabel gäller en täthetsfunktion
som när den integreras ger fördelningsfunktionen. För en diskret
stokastisk variabel fås fördelningsfunktionen genom att summera
sannolikhetsfunktionen för den diskreta stokastiska variabeln.
thebolt
Inlägg: 248
Blev medlem: 10 februari 2008, 17:41:40
Ort: Taipei Taiwan

Re: Simulera brusspänning och räkna på?

Inlägg av thebolt »

Ska man vara petig är det så att täthetsfunktionen integreras i båda fallen, men i det diskreta fallet innehåller täthetsfunktionen en Dirac-deltafunktion-del så integralen reduceras till en summa.

Och det går att säga sannolikheten för exakt ett värde för en kontinuerlig stokastisk variabel, den är 0 om täthetsfunktionen är kontinuerlig. Det fås ur att (skulle vilja ha latex, men text får duga)

P(a < X <= b) = int(f(x), x = a..b)
lim a->b P(a < X <= B) = lim a->b int(f(x), x = a..b) = 0

Har man däremot en icke-kontinuerlig täthetsfunktion blir det värre, men t.ex om täthetsfunktionen är Dirac-delta d(x - b) så är sannolikheten för b 1. I dessa fall är det dock oftast mer intressant att jobba direkt med fördelningsfunktionen.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Simulera brusspänning och räkna på?

Inlägg av snigelen »

Skall man vara petig så går det utmärkt att låta diskreta stokastiska variabler vara diskreta och ha en sannolikhetsfunktion. Det är väl snarast att krångla till det att blanda in diracer. (Det finns väl fördelar med den framställningen också men det är knappast till någon nytta här).
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Re: Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

Det sista du skriver om gällande fördelningsfunktionen är det
som kallas för en trappfunktion misstänker jag. Och då finns
ingen täthetsfunktion att integrera utan sannolikheten att
den stokastiska variabeln antar ett visst värde fås genom
att ta värdet för aktuellt trappsteg minus värdet hos föregående
trappsteg.

När det gäller trappsteg så blir det Heaviside-funktionen (unit step function)
som man kan beskriva det hela med antar jag.
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Re: Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

thebolt skrev:Ska man vara petig är det så att täthetsfunktionen integreras i båda fallen, men i det diskreta fallet innehåller täthetsfunktionen en Dirac-deltafunktion-del så integralen reduceras till en summa.

Och det går att säga sannolikheten för exakt ett värde för en kontinuerlig stokastisk variabel, den är 0 om täthetsfunktionen är kontinuerlig. Det fås ur att (skulle vilja ha latex, men text får duga)

P(a < X <= b) = int(f(x), x = a..b)
lim a->b P(a < X <= B) = lim a->b int(f(x), x = a..b) = 0

Har man däremot en icke-kontinuerlig täthetsfunktion blir det värre, men t.ex om täthetsfunktionen är Dirac-delta d(x - b) så är sannolikheten för b 1. I dessa fall är det dock oftast mer intressant att jobba direkt med fördelningsfunktionen.
Läste att det du skriver inte är alls så krångligt.
Genom att multiplicera med en dirac så fås en funktion som kan integreras och
på så vis kan man behandla den diskreta sannolikhetsfunktionen på samma sätt
som den kontinuerliga.
Användarvisningsbild
4kTRB
Inlägg: 21631
Blev medlem: 16 augusti 2009, 19:04:48

Re: Simulera brusspänning och räkna på?

Inlägg av 4kTRB »

Jag läser sannolikhetsteori i flera olika böcker och främst
en bok av Gunnar Blom (studenlitteratur) och det krävs
lite bläddrande fram och tillbaka för att det hela ska smälta in
och det är bra att ha begreppen klara för sig, underlättar för
vidare studier om brus.

Sedan läser jag om brus i boken Operational Amplifiers (Clayton och Newby) där de
tar upp brus i OP på en lite enklare kokboksnivå. Det behöver inte vara så hemskt
komplicerat fast det är betydligt roligare att ha all "basic" bakom. Sedan blir kokboks-
lösningarna rätt så begränsade.

En tumregel fick jag från den boken och det är att brusets peak-to-peak fås genom
att multiplicera rms brusvärdet med 6 och det ger att detta inträffar mindre än 0.25%
av tiden. Vore ju kul att kunna bekräfta detta senare med mer baskunskaper.
Skriv svar