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: [mg126995] Re: multiplying, element wise, a row by each column of a matrix.
  • From: Kurt TeKolste <tekolste at fastmail.net>
  • Date: Fri, 22 Jun 2012 03:02:56 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

In[6]:= v # & /@ mat

Out[6]= {{a11 v1, a12 v2}, {a21 v1, a22 v2}, {a31 v1, a32 v2}}



On Thu, Jun 21, 2012, at 05:19 AM, Nasser M. Abbasi wrote:
> 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.