Elementwise Product in Matrix

Solved
Occasional Contributor
Posts: 5

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?

Raphaël

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

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"

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

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!

Raphael

SAS Super FREQ
Posts: 4,176

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 and locked.