Noise (FPScript)

21.09.2021

Erzeugt gleich-, normal- oder exponentialverteilte Zufallszahlen.

Syntax

Noise(Value, [ Distribution = NOISE_UNIFORM ] [ , Init ])

 

Die Syntax der Noise-Funktion besteht aus folgenden Teilen:

Teil

Beschreibung

Value

Ein beliebiger Wert, der die Anzahl, die Datenstruktur und die Einheit der Zufallszahlen bestimmt.

Es sind alle Datenstrukturen erlaubt. Es sind alle numerischen Datentypen erlaubt.

Ist das Argument eine Liste, dann wird die Funktion für jedes Element der Liste ausgeführt und das Ergebnis ist ebenfalls eine Liste.

Distribution

Bestimmt die statistische Verteilung, die die Zufallszahlen haben sollen.

Das Argument Distribution kann folgende Werte haben:

Konstante

Bedeutung

NOISE_UNIFORM

Erzeugt gleichverteilte Zufallszahlen im Intervall [-1, 1].

NOISE_NORMAL

Erzeugt normalverteilte Zufallszahlen mit Mittelwert gleich 0 und Standardabweichung gleich 1.

NOISE_EXPONENTIAL

Erzeugt exponentialverteilte Zufallszahlen mit Lambda gleich 1.

Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt.

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert NOISE_UNIFORM gesetzt.

Init

Ist der Initialisierungswert für den Zufallszahlengenerator, Wenn Sie 0 übergeben, dann wird der Generator nicht neu initialisiert, d. h. die bereits mit einem vorherigen Aufruf begonnene Sequenz wird fortgesetzt. Wenn Sie das Argument weglassen oder die Funktion zum ersten Mal aufrufen, dann wird der Generator mit der aktuellen Systemzeit initialisiert.

Erlaubte Datenstrukturen sind Einzelwert. Es sind alle numerischen Datentypen erlaubt.

Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt.

Anmerkungen

Der Datentyp des Ergebnisses ist immer 64-Bit Fließkomma.

Die Struktur des Ergebnisses entspricht der des Arguments Value.

Wenn Value eine zusammengesetzte Datenstruktur hat, d. h. ein Signal, eine Signalreihe oder eine Raumkurve ist, dann werden die X- und ggf. Z-Komponenten in das Ergebnis kopiert und für jeden Wert der Y-Komponente wird eine Zufallszahl erzeugt.

Zur Erzeugung der gleichverteilten Zufallszahlen verwendet die Funktion einen Zufallsgenerator mit zufälliger Zykluslänge, wie er als Generator "RANROT Type W" in [1] beschrieben wird.

Die normalverteilten Zufallszahlen werden mittels des Box-Mueller-Verfahrens aus den gleichverteilten Zufallszahlen erzeugt. Die erzeugten Zufallszahlen haben Mittelwert 0 und Standardabweichung 1. Hiervon können durch eine einfache lineare Transformation beliebige andere Normalverteilungen abgeleitet werden: μ + σ * Noise(x, NOISE_NORMAL), mit dem gewünschten Mittelwert μ und der gewünschten Standardabweichung σ.

Die exponentialverteilten Zufallszahlen werden mittels des Transformationsverfahrens von den gleichverteilten abgeleitet. Die erzeugten Zufallszahlen haben ein Lambda von 1. Durch Division können Sie hieraus beliebige andere Exponentialverteilungen erzeugen: Noise(x, NOISE_EXPONENTIAL) / , mit dem gewünschten Lambda .

Beide Transformationsverfahren sind u. A. in [2] beschrieben.

Verfügbarkeit

FlexPro Basic, Professional, Developer Suite

Beispiele

Noise(1)

Ergibt (zufällig) 0.8499.

x = (1000, 0.1 s, 0.01 s)
Signal(0.5 V + 0.5 V * Noise(x), x)
 

Erzeugt ein Signal mit 1000 gleichverteilten Zufallszahlen im Intervall [0, 1] V und mit X-Komponente von 0 s bis 10 s.

3. + 2. * Noise(1#100, NOISE_NORMAL)

Erzeugt eine Datenreihe mit 100 normalverteilten Zufallszahlen mit Mittelwert 3 und Standardabweichung 2.

Siehe auch

Analyseobjekt Signal

Literatur

[1] "William H. Press et al.": "Numerical Recipes in C, Second Edition". http://www.agner.org/random/theory,2001.

[2] "William H. Press et al.": "Numerical Recipes in C, Second Edition", Seite 274. "Cambridge University Press",1992.ISBN 0-552-43108-5.

Artikel teilen oder als Email versenden:

Diese Beiträge könnten Sie ebenfalls interessieren