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!
proc iml;
/* For an explanation of how to construct an iterated function system in SAS,
see http://blogs.sas.com/content/iml/2012/12/12/iterated-function-systems-and-barnsleys-fern-in-sas/
*/
/* Each row is a 2x2 linear transformation */
/* Christmas tree */
L = {0.03 0 0 0.1,
0.85 0.00 0.00 0.85,
0.8 0.00 0.00 0.8,
0.2 -0.08 0.15 0.22,
-0.2 0.08 0.15 0.22,
0.25 -0.1 0.12 0.25,
-0.2 0.1 0.12 0.2};
/* ... and each row is a translation vector */
B = {0 0,
0 1.5,
0 1.5,
0 0.85,
0 0.85,
0 0.3,
0 0.4 };
prob = { 0.02 0.6 0.1 0.07 0.07 0.07 0.07};
L = L`; B = B`; /* For convenience, transpose the L and B matrices */
/* Iterate the discrete stochastic map */
N = 1e5; /* number of iterations */
x = j(2,N); k = j(N,1);
x[,1] = {0, 2}; /* initial point */
call randgen(k, "Table", prob); /* values 1-7 */
do i = 2 to N;
x[,i] = shape(L[,k[i]], 2)*x[,i-1] + B[,k[i]]; /* iterate */
end;
/* Plot the iteration history */
y = x`;
create IFS from y[c={"x" "y"}]; append from y; close IFS;
quit;
1
PROC 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 */
7
L = {0.03 0 0 0.1,
8
0.850.000.000.85,
9
0.80.000.000.8,
10
0.2 -0.080.150.22,
11
-0.20.080.150.22,
12
0.25 -0.10.120.25,
13
-0.20.10.120.2};
14
/* ... and each row is a translation vector */
15
B = {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 };
22
prob = { 0.020.60.10.070.070.070.07};
23
L = L`; B = B`; /* For convenience, transpose the L and B matrices */
create IFS from y[c={"x""y"}]; append from y; close IFS;
38
QUIT;
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.
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.