Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Pointwise multiplication of matrix with vector
Replies: 7   Last Post: Jul 28, 2014 11:36 AM

 Messages: [ Previous | Next ]
 Marius Posts: 1 Registered: 1/27/06
Pointwise multiplication of matrix with vector
Posted: Jan 27, 2006 8:58 AM

Hello,

In Matlab one can write
c = 3; % (some scalar)
x = 0:10; % (some vector)
y = c * x; % (multiply every component of x with c)

This is much faster than using a for loop and writing
for k = 1:length(x)
y(k) = c * x(k);
end

I would now like to do a similar thing, but where the scalar is
replaced by a n x 1 vector and the vector is replaced by a n x m
matrix. I.e., I would like to multiply each column of a matrix
pointwise with a column vector.

So far I can see two solutions for this (besides a double for loop):

1. Use repmat to create m copies of the colum vector and multiply the
resulting matrix pointwise with the original matrix:

% Given a vector v (n x 1) and matrix A (n x m):
V = repmat(v, 1, m);
B = A .* V;

2. Use a for loop to go through each element of the vector and thus
reduce to the problem to the <scalar> * <vector>
situation:

for k = 1:length(v)
B(1, :) = A(1, :) * v(k);
end

I have found the second solution to be faster than the first one. Is
there a better solution?

Thanks
Marius

Date Subject Author
1/27/06 Marius
1/27/06 Doug Schwarz
1/28/06 kleiner@gmail.com
1/30/06 Doug Schwarz
7/27/14 Daniel
7/28/14 James Tursa
1/27/06 Michael Wild
1/27/06 Caroline