Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: multiplying, element wise, a row by each column of a matrix.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg126992] Re: multiplying, element wise, a row by each column of a matrix.
  • From: "djmpark" <djmpark at comcast.net>
  • Date: Fri, 22 Jun 2012 03:01:54 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <30651597.72253.1340272029669.JavaMail.root@m06>

v = {v1, v2};
mat = {{a11, a12}, {a21, a22}, {a31, a32}}; 

v # & /@ mat 

{{a11 v1, a12 v2}, {a21 v1, a22 v2}, {a31 v1, a32 v2}} 


David Park
djmpark at comcast.net 
http://home.comcast.net/~djmpark/index.html 



From: Nasser M. Abbasi [mailto:nma at 12000.org] 


Any one can think of a better way to do this?

The problem: Given a row vector

    v={v1,v2}

and matrix with same number of columns as v, such as

mat={{a11, a12},
      {a21, a22},
      {a31, a32}};

I need to multiply v1 by the first column, then multiply v2 by the second
column. (i.e. scale each column of the matrix by the corresponding "weight"
from the row).

This results in

  {{a11 v1, a12 v2},
    {a21 v1, a22 v2},
   {a31 v1, a32 v2}}

I wanted to find a 'smart' way or good command to do it, but so far, had to
do it the hard way. I'll show 2 methods. May be you can find a better
functional way to solve this:

1)
Transpose[MapThread[#1 #2 &, {v, Transpose[mat]}]]

This is not natural solution. need to transposes
2 times.

2)
KroneckerProduct[{v[[#]]},mat[[All,#]]]&/@ Range[1,Length[v]]
Transpose[Flatten[%, 1]]

also not too natural. Faltten, transpose, etc... not good.

Fyi, using another system, which starts with the letter 'O' and ends with
the letters 'VE', I can do the above using

       v .* mat

Where the ".*" above means element by element product.

I hope the experts here can find a short/better way to do this. I am sure
there is, I just can't find it yet, and I am not happy with what I came up
with so far.

thanks,
--Nasser




  • Prev by Date: Re: multiplying, element wise, a row by each column of a matrix.
  • Next by Date: Re: multiplying, element wise, a row by each column of a matrix.
  • Previous by thread: Re: multiplying, element wise, a row by each column of a matrix.
  • Next by thread: Re: multiplying, element wise, a row by each column of a matrix.