Initialisieren Sie Daten über mehrere Spalten gleichzeitigIch bin daran interessiert, Daten über mehrere Spalten hinweg auf die gleiche Weise auf einmal zu initialisieren.Zum Beispiel möchte ich M Spalten mit zufällig-normalen Daten (Mittelwert = x, Standardabweichung = y) über N Zeilen erstellen.Jede Hilfe wird geschätzt.Danke.
Qualitäts- und VerfahrenstechnikBetreff: Daten über mehrere Spalten gleichzeitig initialisierenDie zusätzliche Zeit wird für das Nachschlagen der Werte von x und y 999.999 zusätzliche Male aufgewendet, nicht für die eigentliche Multiplikation, die ohnehin durchgeführt werden muss. Sie können Zahlen anstelle von x,y verwenden und eine Zwischenzeit erhalten, da die Zahl ohne Suche im Namespace ausgewertet wird. Der folgende Basisfall beinhaltet nicht das Multiplizieren und Addieren, was wahrscheinlich zu einer Antwort führen würde, die näher an der von Ihnen beschriebenen 3/4 liegt.
q=j(size,size,randomnormal()); // 1.0
q=j(size,size,randomnormal(0,1)); // 1.1
q=j(size,size,randomnormal(x,y)); // 1.4
Betreff: Daten über mehrere Spalten gleichzeitig initialisierenHier ist eine lustige Sache:
Möglicherweise sparen Sie ein wenig Zeit bei der Verwendung
y * J ( M, N, randomNormal () ) + x
anstatt
J( M, N, randomnormal (x, y) ).
Der Grund dafür ist, dass die J-Funktion tatsächlich eine Schleife ist ...Im J(M, N, randomnormal (x, y))-Beispiel wird also jedes Mal, wenn die Schleife durchlaufen wird, eine zufällige Standardnormale ausgewählt, mit y multipliziert und zu x addiert, um ein zufälliges N(x, y) zu erzeugen.
Im Beispiel y * J ( M, N, randomNormal () ) + x werden alle standardmäßigen Zufallsnormalen generiert, und anschließend wird die gesamte Matrix mit y multipliziert und zu einer dimensional ähnlichen x-Matrix addiert.
Es ist kein großer Unterschied, aber bei den 1000x1000-Matrizen, die ich untersucht habe, dauerte der zweite Ansatz etwa drei Viertel der Zeit des ersten.
Betreff: Daten über mehrere Spalten gleichzeitig initialisierenErgänzung zu dem, was Mark geliefert hat: Random Normal ( ) kann ohne Argumente oder mit 2 Argumenten verwendet werden.
Ohne Argumente erhalten Sie N( Mittelwert == 0, stddev == 1) Daten. Marks Code liefert Ihnen also eine MxN-Tabelle mit N(0,1)-Daten.
Unter Verwendung von Argumenten liefert Ihnen Random Normal ( x, y ) N( Mittelwert == x, stddev == y) Daten.
Da in Ihrem Beitrag ein Mittelwert von x und eine Standardabweichung von y erwähnt werden, können Sie Folgendes verwenden, wenn x nicht 0 und/oder y nicht 1 ist.
As Table ( J ( N, M, Random Normal ( x, y ) );
Betreff: Daten über mehrere Spalten gleichzeitig initialisierenBasierend auf den begrenzten bereitgestellten Informationen beweist dieses Skript das Konzept.
Names Default to Here( 1 );
M = 10;
N = 30;
data = J( N, M, Random Normal() );
As Table( data );