Anda di halaman 1dari 14

SAS/IML

Dasar dan modul

𝜏𝜌
SAS/IML

Bentuk Skalar Bentuk matriks


proc iml; proc iml;
x = 7; reset print;
y = 21.44; a = {1 2, 3 4};
z = .; b = {5 6, 7 8};
a = 'Door'; c = {1 2 3, 4 5 6};
b = 'baaaaa'; d = {7, 8, 9};
print x y z a b; e = {10 11 12};
kata = {'ambil' 'simpan' 'pergi'};

Operasi : * perkalian matriks, # perkalian unsur yg sepadan, ` transpose,


|| gabung kolom, // gabung baris
proc iml;
reset print;
A = {4 5 6,3 2 1,9 8 7,1 0 8};
b = {1,1,1,1};

*gabung kolom;
Ab = A||b;

*perkalian matriks secara aljabar;


C = t(A)*b;
C = A`*b;

*perkalian matriks untuk unsur sepadan letaknya;


I4 = I(4);
AI = Ab#I4;
AI2 = A#I4;
SAS/IML--Subscripting
• Mengakses elemen, baris, kolom, dan
submatriks dari suatu matriks
• Menggunakan operator subcript
operand[row,column]
proc iml;
reset print;
A = {4 5 6,3 2 1,9 8 7,1 0 8};
b = {1,1,1,1};

*Subscripting;
a1 = A[3,3]; Mengambil elemen pada baris 3 dan kolom 3 matriks D
a2 = A[9];
Mengambil elemen tertentu matriks D (perhitungan per baris)
a3 = A[7];
a4 = A[,2:3];
Operasi mengambil baris atau kolom pada suatu matriks
a5 = A[{1 4},];
Subscript Reduction Operators
Operator Function
+ Addition
# Multiplication
<> Maximum
>< Minimum
<:> Index of Maximum
>:< Index of Minimum
: Mean
## Sum of Square
*Subscript reduction operator;
A = {4 5 6,3 2 1,9 8 7,1 0 8};
b1 = A[+];
b2 = A[+,];
b3 = A[,+];
b4 = A[,#];
b5 = A[,+][><,];
b6 = A[,+][,><];
Modules
• General form of an IML module :
START <name> <(arg1, arg2,...)>
<GLOBAL(arg1, arg2,...)>;
module IML statement

FINISH <name>;
RUN name <(arg1, arg2,...)>;
CALL name <(arg1, arg2,...)>
Contoh 1
proc iml; proc iml;
x={2 4,2 3}; x={2 4,2 3};
y={1 5,4 2}; y={1 5,4 2};

start a1; start a2(x);


s={1 0,1 1}; s={1 0,1 1};
x=s*x; x=s*x;
finish; finish;

run a1; run a2(y);


print x y s; print x y s;
Modul a1 tanpa argumen, Modul a2 dengan argumen,
sehingga peubah yang ada sehingga peubah yang ada
dalam modul tersebut dalam modul tersebut
bersifat global bersifat lokal, akibatnya s
tidak terdefinisi
Contoh 2
proc iml;
p = 10; q = 30;
r = 25; s = 50;

start m(x,y)
global(s);
a = x*y; b=y+x;
P Q R S
x = 100; s=40; 100 40 25 40
y = b;
finish m;

run m(p,q);
print p q r s;
Contoh 3
• Modul Tersarang (nested)
proc iml;
start b2(x,y);
x = x + y;
z = y + x;
return(z);
finish b2; A B
2 5 5 12
a = {2 5}; b = {1 3};
start b1(a,b);
c = b - a;
d = a + b;
a = b2(d,c);
finish b1;

run b1(b,a);
print a b;
Contoh 4
• We have an algorithm below
- read the data 𝑥𝑖 𝑖 = 1,2, … , 𝑛
-𝑗 =1
- do
𝑖 =𝑗+1
- do
if 𝑥𝑗 < 𝑥𝑖 , go on to the next step,
else, change 𝑥𝑗 with 𝑥𝑖 reversely
if 𝑖 ≤ 𝑛, 𝑖 = 𝑖 + 1,
else, print out 𝑥
- end
𝑗 = 𝑗 + 1 while 𝑗 < 𝑛
-end
Create an IML program using algorithm above if
𝑥𝑖 = 15, 18, 10, 8, 12 ,
and explain what this algorithm using for!
Jawaban 4
proc iml;
x = {10,18,15,8,12};
j = 1;
n = nrow(x);
do while(j < n);
i = j + 1;
do while(i <= n);
if x[j] > x[i] then
do;
if i<=n then i = i + 1;
else print x;
end;
else
do;
a = x[j]; x[j] = x[i]; x[i] = a;
end;
end;
j = j + 1;
end;
print x;
Terima kasih 

Anda mungkin juga menyukai