Veröffentlicht am :
Grafik CREATION_INTERNE

IFS Weihnachtsbaum-Generator

Dieser Code ist auch verfügbar auf: English Français
Wartet auf Validierung
Das Skript verwendet die IML-Prozedur, um ein System diskreter stochastischer iterierter Funktionen zu implementieren. Es definiert lineare Transformationsmatrizen (L), Translationsvektoren (B) und Wahrscheinlichkeiten (prob) für jede Transformation. Der iterative Prozess berechnet 100.000 Punkte, die nach dem Plotten das Bild eines Weihnachtsbaums bilden. Die generierten Punkte werden anschließend in einem SAS©-Datensatz namens 'IFS' gespeichert. Schließlich wird PROC SGPLOT verwendet, um diese Punkte als Streudiagramm ohne Achsen anzuzeigen, um eine visuelle Darstellung des Baumes zu erstellen.
Datenanalyse

Type : CREATION_INTERNE


Die Daten (Punkte x, y) werden vollständig innerhalb des PROC IML-Blocks durch einen iterativen Prozess generiert und anschließend im temporären Dataset 'IFS' gespeichert. Es werden keine externen Daten oder Daten aus SASHELP für die Hauptgenerierung verwendet.

1 Codeblock
PROC IML Data
Erklärung :
Dieser Block initialisiert die linearen Transformationsmatrizen (L), die Translationsvektoren (B) und die Wahrscheinlichkeiten für ein Iteriertes Funktionensystem, das speziell für die Generierung eines Weihnachtsbaums konfiguriert ist. Anschließend werden 100.000 Iterationen durchgeführt, wobei die Funktion `randgen` verwendet wird, um zufällig eine Transformation auszuwählen. Jede Iteration berechnet einen neuen Punkt basierend auf dem vorherigen. Die generierten Punkte (x, y) werden dann transcodiert und in einem temporären SAS-Datensatz namens 'IFS' gespeichert, der für die Visualisierung verwendet wird.
Kopiert!
1PROC IML;
2/* For an explanation of how to construct an iterated function system in SAS,
3 see http://blogs.sas.com/content/iml/2012/12/12/iterated-function-systems-and-barnsleys-fern-in-sas/
4*/
5/* Each row is a 2x2 linear transformation */
6/* Christmas tree */
7L = {0.03 0 0 0.1,
8 0.85 0.00 0.00 0.85,
9 0.8 0.00 0.00 0.8,
10 0.2 -0.08 0.15 0.22,
11 -0.2 0.08 0.15 0.22,
12 0.25 -0.1 0.12 0.25,
13 -0.2 0.1 0.12 0.2};
14/* ... and each row is a translation vector */
15B = {0 0,
16 0 1.5,
17 0 1.5,
18 0 0.85,
19 0 0.85,
20 0 0.3,
21 0 0.4 };
22prob = { 0.02 0.6 0.1 0.07 0.07 0.07 0.07};
23L = L`; B = B`; /* For convenience, transpose the L and B matrices */
24
25/* Iterate the discrete stochastic map */
26N = 1e5; /* number of iterations */
27x = j(2,N); k = j(N,1);
28x[,1] = {0, 2}; /* initial point */
29call randgen(k, "Table", prob); /* values 1-7 */
30
31DO i = 2 to N;
32 x[,i] = shape(L[,k[i]], 2)*x[,i-1] + B[,k[i]]; /* iterate */
33END;
34
35/* Plot the iteration history */
36y = x`;
37create IFS from y[c={"x" "y"}]; append from y; close IFS;
38QUIT;
2 Codeblock
PROC SGPLOT
Erklärung :
Dieser Block konfiguriert das ODS Graphics-Zielsystem, um die Größe des Ausgabebildes (200px breit und 400px hoch) festzulegen. Anschließend wird PROC SGPLOT verwendet, um ein Streudiagramm aus dem zuvor generierten Datensatz 'IFS' zu erstellen. Die Markerattribute werden mit einer kleinen Größe (1) und der Farbe ForestGreen definiert, um das Aussehen der Baumnadeln zu simulieren. Die Y- und X-Achsen werden deaktiviert, um ein klares Bild des Baumes zu erzeugen.
Kopiert!
1ods graphics / width=200px height=400px;
2PROC SGPLOT DATA=IFS;
3 title "SAS Christmas Tree";
4 scatter x=x y=y / markerattrs=(size=1 color=ForestGreen);
5 yaxis display=none;
6 xaxis display=none;
7RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.