Statistical programming, matrix languages, and more

Elementwise Product in Matrix

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 5
Accepted Solution

Elementwise Product in Matrix

Hi everybody,

 

I hope this message finds you well.

I have a matrix, let's say MAT, and I would like to make the product of the elements on each row and output the resulting vector in VEC.

So VEC i = product MAT[ i , 1:NCOL(MAT)].

I simply figured it out using a do loop as follows:

     do i = 1 to nrow(MAT);
        do r = 1 to ncol(MAT);
          VEC [ i ,1]=VEC [i,1]*MAT[i,r];
       end;
    end;

 

But it takes too much time to run the above instructions since I have to run the same instructions 300,000 times (in different scenarios).

 

Do you have any better idea to optimize the runtime?

Thanks a lot in advance.

Raphaël

 


Accepted Solutions
Solution
‎11-10-2015 11:33 AM
SAS Super FREQ
Posts: 3,408

Re: Elementwise Product in Matrix

vec = mat[ , #];

SAS/IML supports many elementwise operations. Two articles you might want to read are:

 

"Use subscript reduction operators"

and

"Compute statistics for each row by using subscript operators"

 

View solution in original post


All Replies
Solution
‎11-10-2015 11:33 AM
SAS Super FREQ
Posts: 3,408

Re: Elementwise Product in Matrix

vec = mat[ , #];

SAS/IML supports many elementwise operations. Two articles you might want to read are:

 

"Use subscript reduction operators"

and

"Compute statistics for each row by using subscript operators"

 

Occasional Contributor
Posts: 5

Re: Elementwise Product in Matrix

[ Edited ]

Thanks Rick! :-)

It works perfectly and is 60 seconds faster for 20 scenarios.

You are my savior!

 I notice that you already posted it 3 years ago in your second link...

 

Raphael

 

 

SAS Super FREQ
Posts: 3,408

Re: Elementwise Product in Matrix

Great. Remember to click the "Accept as Solution" button so that others can see that the question has been answered.

Occasional Contributor
Posts: 5

Re: Elementwise Product in Matrix

Done!!

 

Raphaël

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 365 views
  • 0 likes
  • 2 in conversation