BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.

Hi everyone!

I am trying to define a three dimensional array with proc iml. Currently I am converting a matlab code to SAS so that I need to deal with matrices a lot. Is there any known way to define a 3d array /matrix?

1 ACCEPTED SOLUTION

Accepted Solutions
IanWakeling
Barite | Level 11

One way is to use a list of ordinary 2d matrices.  For example the code below creates a list of 3 4x4 matrices, then modifies two of them.

proc iml;
  Z = ListCreate(3);
  do i = 1 to 3;
    Z$i = i(4);
  end;
  Z$2 = Z$2 + 1;
  Z$3 = Z$3 # 3;

  package load listutil;
  call listprint(Z);
quit;

View solution in original post

1 REPLY 1
IanWakeling
Barite | Level 11

One way is to use a list of ordinary 2d matrices.  For example the code below creates a list of 3 4x4 matrices, then modifies two of them.

proc iml;
  Z = ListCreate(3);
  do i = 1 to 3;
    Z$i = i(4);
  end;
  Z$2 = Z$2 + 1;
  Z$3 = Z$3 # 3;

  package load listutil;
  call listprint(Z);
quit;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 1 reply
  • 1046 views
  • 7 likes
  • 2 in conversation