Hallo, hatte gestern schon mal im DSP Forum gepostet, aber mittlerweile gemerkt, dass die Frage hier besser aufgehoben ist. Ich such einen Weg zufällige Impulslängen zu erzeugen. Die Länge der Impulsfolgen bezogen auf eine Clock sollte exponetiell verteilt sein, d.h lange Folgen von Pulsen kommen seltener vor wie kurze. Hat jemand ne Idee wie man so etwas realisieren könnte ? Das ganze sollte FPGA tauglich zu implementieren sein. Vielen Dank & Gruss, Maik
Da es keine halben Impulse gibt, geht es also um Integerarithmetik. Über wieviele Dekaden soll sich diese exponentielle Verteilung denn erstrecken? Ich würde von einer (linearen) Gleichverteilung ausgehen und dann irgendwie eine Exponentialfunktion auf die Werte anwenden, damit sie exponentiell gleichverteilt werden. Ich nehme an, Pseudozufall aus einem rückgekoppelten Schieberegister ist gleichmäßig genug?
Mich verwirrt allerdings die Aussage, zuerst gehts um Impulslängen ( die könnten beliebig gestuft sein) und dann die Länge einer Impulsfolge, das hieße die Anzahl der Impulse, die in einem Paket enthalten ist - darauf bezieht sich meine erste Antwort. Was denn nun?
Viel zu kompliziert gedacht, Christoph ;) Zunächst stimmt es schon, was Chrstoph gesagt hat: Die Frage ist nicht ganz klar gestellt. Ich gehe deshalb hier davon aus, dass eine zufällige Impulslänge gemeint ist. Soll heißen: Lange Impulse kommen seltener vor als kurze, und die Impulslängen sind Exponentiell abnehmend verteilt. Dazu brauchst du: - Einen Zufallsgenerator (z.B. LFSR), ausreichende Breite sowohl für die Kettenlänge der Zufallswerte als auch für die Genauigkeit des Exponenten -> einfach "lang genug" - Einen Vergleicher, der besagt, ob der aktuelle Zufallswert größer als eine vorgegebene Konstante ist - eine trivial-einfache State Machine: Zwei Zustände. Zustand 0 ist Ruhe, Zustand 1 ist aktiver Impuls (d.h. dieser Zustandswert ist auch gleich das Ausgangssignal). Zunächst löst ein bestimmtes Ereignis einen Impuls aus (aus unserer Sicht ein Eingangssignal). Der Zustand wechselt zu 1. Danach wird in jedem Takt eine neue Zufallszahl erwürfelt und durch den Vergleicher geschickt. Ist die Zahl zu groß, wechselt der Zustand zu 0. Das wars. Der Trick: Bei N möglichen Zufallszahlen und Vergleicherkonstante K besteht in jedem Takt eine Wahrscheinlichkeit von K/N, dass der Puls weitergeht. Die Wahrscheinlichkeit, dass der Puls mindestens i Takte lang geht, ist also (K/N)^i -> exponentielle Abnahme. Etwas Rechnerei sollte dann auch die gewünschten K, N für die gewollte Exponentialkurve liefern.
Alternativ über zentralen Grenzwertsatz: eine Summe von n unabhängigen, identisch verteilten Zufallsvariablen im Grenzwert [math]n\rightarrow\infty[math] folgt der Normalverteilung.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.